From ab9878f33e4fd996a21628bb9a89a16a2be504af Mon Sep 17 00:00:00 2001 From: Goksan Date: Tue, 18 Jun 2024 18:19:32 +0100 Subject: [PATCH] text based config v0.3.0 * text based config * return early in create endpoints when in config mode * add example config * rename get monitor key * Create configuration.md * Update README.md * delete example-config.yaml * Update configuration.md * Update configuration.md * Update configuration.md * parameterise slug backfill cte * v0.3.0 * relabel * prevent config post when github managed --- README.md | 7 + compile.sh | 4 +- docs/configuration.md | 144 + go.mod | 3 +- go.sum | 2 + main.go | 22461 +++++++++------- migrations/1715019045_add_slug_columns.sql | 122 + schema.sql | 17 +- static/htmx-1.9.12.js.gz | Bin 0 -> 15677 bytes static/htmx.js | 3905 --- static/images/github-pat-tutorial/1.png | Bin 0 -> 42801 bytes static/images/github-pat-tutorial/2.png | Bin 0 -> 6456 bytes static/images/github-webhook-tutorial/1.png | Bin 0 -> 66034 bytes static/main.css | 361 +- .../browser/ui/codicons/codicon/codicon.ttf | Bin 73624 -> 0 bytes .../ui/codicons/codicon/codicon.ttf.gz | Bin 0 -> 43929 bytes .../vs/base/common/worker/simpleWorker.nls.js | 6 - .../base/common/worker/simpleWorker.nls.js.gz | Bin 0 -> 504 bytes .../min/vs/base/worker/workerMain.js | 25 - .../min/vs/base/worker/workerMain.js.gz | Bin 0 -> 108949 bytes .../min/vs/basic-languages/yaml/yaml.js.gz | Bin 0 -> 1996 bytes .../min/vs/editor/editor.main.css | 6 - .../min/vs/editor/editor.main.css.gz | Bin 0 -> 20060 bytes .../min/vs/editor/editor.main.js | 757 - .../min/vs/editor/editor.main.js.gz | Bin 0 -> 924752 bytes .../min/vs/editor/editor.main.nls.js | 27 - .../min/vs/editor/editor.main.nls.js.gz | Bin 0 -> 22855 bytes .../min/vs/language/json/jsonMode.js | 15 - .../min/vs/language/json/jsonMode.js.gz | Bin 0 -> 11408 bytes .../min/vs/language/json/jsonWorker.js | 36 - .../min/vs/language/json/jsonWorker.js.gz | Bin 0 -> 36682 bytes static/monaco-editor/min/vs/loader.js | 9 - static/monaco-editor/min/vs/loader.js.gz | Bin 0 -> 9241 bytes statusnook.sh | 2 +- 34 files changed, 13624 insertions(+), 14285 deletions(-) create mode 100644 docs/configuration.md create mode 100644 migrations/1715019045_add_slug_columns.sql create mode 100644 static/htmx-1.9.12.js.gz delete mode 100644 static/htmx.js create mode 100644 static/images/github-pat-tutorial/1.png create mode 100644 static/images/github-pat-tutorial/2.png create mode 100644 static/images/github-webhook-tutorial/1.png delete mode 100644 static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf create mode 100644 static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf.gz delete mode 100644 static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js create mode 100644 static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js.gz delete mode 100644 static/monaco-editor/min/vs/base/worker/workerMain.js create mode 100644 static/monaco-editor/min/vs/base/worker/workerMain.js.gz create mode 100644 static/monaco-editor/min/vs/basic-languages/yaml/yaml.js.gz delete mode 100644 static/monaco-editor/min/vs/editor/editor.main.css create mode 100644 static/monaco-editor/min/vs/editor/editor.main.css.gz delete mode 100644 static/monaco-editor/min/vs/editor/editor.main.js create mode 100644 static/monaco-editor/min/vs/editor/editor.main.js.gz delete mode 100644 static/monaco-editor/min/vs/editor/editor.main.nls.js create mode 100644 static/monaco-editor/min/vs/editor/editor.main.nls.js.gz delete mode 100644 static/monaco-editor/min/vs/language/json/jsonMode.js create mode 100644 static/monaco-editor/min/vs/language/json/jsonMode.js.gz delete mode 100644 static/monaco-editor/min/vs/language/json/jsonWorker.js create mode 100644 static/monaco-editor/min/vs/language/json/jsonWorker.js.gz delete mode 100644 static/monaco-editor/min/vs/loader.js create mode 100644 static/monaco-editor/min/vs/loader.js.gz diff --git a/README.md b/README.md index 12cc407..7424658 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,13 @@ docker compose up ### Binaries amd64 and arm64 Linux binaries can be found on the [Releases](https://github.com/goksan/Statusnook/releases) page. +## Configuration +Statusnook has the following configuration options: +* Web UI based config +* Text based config (YAML) via the settings page, or on push via GitHub + +[Learn more about configuration](docs/configuration.md) + ## Gallery ![monitors](https://github.com/goksan/statusnook/assets/17437810/9bc9a023-41fc-4646-a353-0a1755ce148b) diff --git a/compile.sh b/compile.sh index 4981986..a68eab9 100755 --- a/compile.sh +++ b/compile.sh @@ -1,4 +1,4 @@ #!/bin/bash -CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ GOARCH=amd64 GOOS=linux CGO_ENABLED=1 go build -ldflags "-w -s -linkmode external -extldflags -static -X main.CA=https://acme-v02.api.letsencrypt.org/directory -X main.BUILD=release" -o bin/statusnook_linux_amd64_v0.2.0 -CC=aarch64-linux-musl-gcc CXX=aarch64-linux-musl-g++ GOARCH=arm64 GOOS=linux CGO_ENABLED=1 go build -ldflags "-w -s -linkmode external -extldflags -static -X main.CA=https://acme-v02.api.letsencrypt.org/directory -X main.BUILD=release" -o bin/statusnook_linux_arm64_v0.2.0 \ No newline at end of file +CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ GOARCH=amd64 GOOS=linux CGO_ENABLED=1 go build -ldflags "-w -s -linkmode external -extldflags -static -X main.CA=https://acme-v02.api.letsencrypt.org/directory -X main.BUILD=release" -o bin/statusnook_linux_amd64_v0.3.0 +CC=aarch64-linux-musl-gcc CXX=aarch64-linux-musl-g++ GOARCH=arm64 GOOS=linux CGO_ENABLED=1 go build -ldflags "-w -s -linkmode external -extldflags -static -X main.CA=https://acme-v02.api.letsencrypt.org/directory -X main.BUILD=release" -o bin/statusnook_linux_arm64_v0.3.0 \ No newline at end of file diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..0fffd70 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,144 @@ +# Configuration + +By default, you can configure your Statusnook instance through the standard web UI. + +Through the settings page, you can opt for an exclusively text-based configuration. This disables elements of the standard interface and allows you to manage the configuration via text. + +Additionally, you can set opt for updates to be managed solely through GitHub, enabling automatic synchronisation with your Statusnook instance on pushes to a chosen branch. + + +> [!CAUTION] +> Dropping or renaming keys is a destructive action (mail groups, notification channels, monitors, services) +> +>[See "Renaming A Resource Key"](#renaming-a-resource-key) + +## Example config.yaml + +```yaml +general-settings: + name: Statusnook +mail-groups: + core: + name: Core + members: + - core1@example.com + - core2@example.com + engineers: + name: Engineers + description: All engineers in our organisation + members: + - engineer1@example.com +notification-channels: + azure: + from: example@example.com + host: smtp.azurecomm.net + name: Azure + password: secret_Qg6RqkWLe1m4a6TzK+grCcgRIQsiFEc95nJXMsLBZIZSyA==.tOw0xDcUdmmr62tJ + port: 587 + type: smtp + username: example + postmark: + from: example@example.com + host: smtp.postmarkapp.com + misc: + pm-broadcast: broadcast + pm-transactional: outbound + name: Postmark + password: secret_hyNDZ3rL5ee7eco6DCoGnKcVsksZFY4MMb3b4JsCwbGh3A==.YwiY1DgH0ExUsDmJ + port: 587 + type: smtp + username: secret_hyNDZ3rL5ee7eco6DCoGnKcVsksZFY4MMb3b4JsCwbGh3A==.YwiY1DgH0ExUsDmJ + ses: + from: example@example.com + host: email-smtp.eu-north-1.amazonaws.com + name: SES + password: secret_ZYjE7eePnHBlQph6pK0e30yeVpovb37h/VvcJbPw96fbHg==./1e5EXv1iUF8Y6XY + port: 587 + type: smtp + username: example + slack-internal-alerts: + name: "Slack #internal-alerts" + type: slack + webhook-url: secret_4//EgNno+/nZwEiO44TQ4k/9FNLbh2zNJc8hJqWIwTIc0Q==.eoLscWK0jMFRkgWa +monitors: + get: + name: Example + url: https://example.com + method: GET + frequency: 10 + timeout: 5 + attempts: 1 + notification-channels: + - azure + - postmark + post-form: + name: Post form example + url: https://example.com + method: POST + frequency: 10 + timeout: 5 + attempts: 1 + headers: + Content-Type: application/x-www-form-urlencoded + body: + example-name: example-value + notification-channels: + - ses + mail-groups: + - engineers + - core + post-json: + name: Post json example + url: https://example.com + method: POST + frequency: 10 + timeout: 5 + attempts: 1 + headers: + Content-Type: application/json + body: '{"key1": "value1", "key2": "value2"}' + notification-channels: + - azure + mail-groups: + - core +services: + website: + name: Website + description: example.com + api: + name: API + description: api.example.com +alert-notification-settings: + email-notification-channel: postmark + managed-subscriptions: true + slack-client-secret: secret_tdBs7fxa31U+Nc31MUWBVea5pdT6ycHUsCOXfw==.M/qsy+BDnJoMALin + slack-install-url: https://slack.com/oauth/v2/authorize?... +``` + +## Renaming a Resource Key +Below is an example demonstrating how to change the `engineers` mail group key to `engineering-team` + +```yaml +rename: + mail-groups.engineers: engineering-team +mail-groups: + engineering-team: + name: Engineers + description: All engineers in our organisation + members: + - engineer1@example.com +# The rest of the config is omitted for demonstration purposes. Retain the rest of your config! +``` + +In addition to adding the rename section, update all references to `engineers` with `engineering-team` and apply this configuration to execute the rename. + +After completing the rename, remove the `rename` section or at least the outdated part from your configuration, and reapply the configuration to ensure that future changes are applied successfully. + +## Secrets +Secrets can be encrypted and decrypted via the settings page. + + +

+ +When Statusnook is applying a configuration it attempts to decrypt and replace any value prefixed with `secret_`. + diff --git a/go.mod b/go.mod index f54d810..ee86095 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/goksan/statusnook -go 1.21 +go 1.22 require ( github.com/caddyserver/certmagic v0.20.0 @@ -10,6 +10,7 @@ require ( github.com/miekg/dns v1.1.55 golang.org/x/crypto v0.18.0 golang.org/x/mod v0.11.0 + gopkg.in/yaml.v3 v3.0.1 ) require ( diff --git a/go.sum b/go.sum index 466284c..621b993 100644 --- a/go.sum +++ b/go.sum @@ -52,5 +52,7 @@ golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index 09e7343..ea994e4 100644 --- a/main.go +++ b/main.go @@ -4,8 +4,11 @@ import ( "bytes" "cmp" "context" + "crypto/aes" + "crypto/cipher" "crypto/ecdsa" "crypto/elliptic" + "crypto/hmac" "crypto/rand" "crypto/sha256" "crypto/tls" @@ -27,6 +30,7 @@ import ( "log" "math/big" mathRand "math/rand" + "mime" "net" "net/http" "net/mail" @@ -53,11 +57,12 @@ import ( "github.com/miekg/dns" "golang.org/x/crypto/bcrypt" "golang.org/x/mod/semver" + "gopkg.in/yaml.v3" ) var BUILD = "dev" var CA = certmagic.LetsEncryptStagingCA -var VERSION = "v0.2.0" +var VERSION = "v0.3.0" //go:embed schema.sql var sqlSchema string @@ -65,6 +70,54 @@ var sqlSchema string const SELF_SIGNED_CERT_NAME = "self-signed-cert.pem" const SELF_SIGNED_KEY_NAME = "self-signed-key.pem" +func Migration1715019045AddSlugColumns(tx *sql.Tx) error { + requiresSlug := map[string]string{ + "old__service": "service", + "old__monitor": "monitor", + "old__notification_channel": "notification_channel", + "old__mail_group": "mail_group", + } + + for k, v := range requiresSlug { + err := copyNonSlugToSlugTable(tx, k, v) + if err != nil { + return fmt.Errorf("Migration1715019045AddSlugColumns.copyNonSlugToSlugTable"+k+": %w", err) + } + } + + copy := map[string]string{ + "old__alert_service": "alert_service", + "old__monitor_log": "monitor_log", + "old__monitor_log_last_checked": "monitor_log_last_checked", + "old__monitor_notification_channel": "monitor_notification_channel", + "old__alert_setting_smtp_notification": "alert_setting_smtp_notification", + "old__mail_group_member": "mail_group_member", + "old__mail_group_monitor": "mail_group_monitor", + } + + for src, dst := range copy { + err := copyTable(tx, src, dst) + if err != nil { + return fmt.Errorf("Migration1715019045AddSlugColumns.copyTable"+src+": %w", err) + } + } + + dropTablesQuery := "" + for k := range copy { + dropTablesQuery += "drop table " + k + "; " + } + for k := range requiresSlug { + dropTablesQuery += "drop table " + k + "; " + } + + _, err := tx.Exec(dropTablesQuery) + if err != nil { + return fmt.Errorf("Migration1715019045AddSlugColumns.ExecDropTables: %w", err) + } + + return nil +} + func initDB(immediate bool) *sql.DB { if _, err := os.Stat("statusnook-data"); errors.Is(err, os.ErrNotExist) { err := os.Mkdir("statusnook-data", os.ModePerm) @@ -200,6 +253,13 @@ func initDB(immediate bool) *sql.DB { log.Fatalf("initDB.ExecMigration %s: %s", file.Name(), err) } + if file.Name() == "1715019045_add_slug_columns.sql" { + err = Migration1715019045AddSlugColumns(tx) + if err != nil { + log.Fatalf("initDB.Migration1715019045AddSlugColumns %s: %s", file.Name(), err) + } + } + insertMigrationQuery := fmt.Sprintf( `insert into migration(name, skipped) values ('%s', false)`, migrationName, @@ -213,6 +273,13 @@ func initDB(immediate bool) *sql.DB { if err != nil { log.Fatalf("initDB.CommitMigration %s: %s", file.Name(), err) } + + if file.Name() == "1715019045_add_slug_columns.sql" { + _, err = db.Exec("vacuum") + if err != nil { + log.Printf("initDB.Migration1715019045AddSlugColumnsExecVacuum: %s", err) + } + } }() } } @@ -221,6 +288,201 @@ func initDB(immediate bool) *sql.DB { return db } +func copyTable(tx *sql.Tx, src string, dst string) error { + cols := []string{} + + rows, err := tx.Query("select name from pragma_table_info('" + src + "')") + if err != nil { + return fmt.Errorf("copyTable.Query: %w", err) + } + defer rows.Close() + + for rows.Next() { + col := "" + + err := rows.Scan(&col) + if err != nil { + return fmt.Errorf("copyTable.Scan: %w", err) + } + + cols = append(cols, col) + } + + query := fmt.Sprintf(` + insert into + %s ( + %s + ) + select + %s + from + %s + `, + dst, + strings.Join(cols, ", "), + strings.Join(cols, ", "), + src, + ) + + _, err = tx.Exec(query) + if err != nil { + return fmt.Errorf("copyTable.Exec: %w", err) + } + + return nil +} + +func copyNonSlugToSlugTable(tx *sql.Tx, src string, dst string) error { + srcCols := []string{} + + rows, err := tx.Query("select name from pragma_table_info('" + src + "')") + if err != nil { + return fmt.Errorf("copyNonSlugToSlugTable.Query: %w", err) + } + defer rows.Close() + + for rows.Next() { + col := "" + + err := rows.Scan(&col) + if err != nil { + return fmt.Errorf("copyNonSlugToSlugTable.ScanTableInfo: %w", err) + } + + srcCols = append(srcCols, col) + } + + dstCols := append(append([]string{}, "id", "slug"), srcCols[1:]...) + + srcColsPlusSlug := append( + append([]string{}, "id", "(select slug from t where id = "+src+".id)"), + srcCols[1:]..., + ) + + var count int + err = tx.QueryRow( + `select count(*) from ` + src, + ).Scan(&count) + if err != nil { + return fmt.Errorf("copyNonSlugToSlugTable.ScanCount: %w", err) + } + + if count == 0 { + return nil + } + + cteQuery, params, err := generateSlugBackfillCte(tx, src) + if err != nil { + return fmt.Errorf("copyNonSlugToSlugTable.generateSlugBackfillCte: %w", err) + } + + query := fmt.Sprintf(` + %s + + insert into + %s ( + %s + ) + select + %s + from + %s; + `, + cteQuery, + dst, + strings.Join(dstCols, ", "), + strings.Join(srcColsPlusSlug, ", "), + src, + ) + + _, err = tx.Exec(query, params...) + if err != nil { + return fmt.Errorf("copyNonSlugToSlugTable.Exec: %w", err) + } + + return nil +} + +func generateSlugBackfillCte(tx *sql.Tx, tableName string) (string, []any, error) { + pattern := regexp.MustCompile(`[^\p{L}\d]+`) + + query := "select id, name from " + tableName + " order by id asc" + + rows, err := tx.Query(query) + if err != nil { + return "", []any{}, fmt.Errorf("generateSlugBackfillCte.Query: %w", err) + } + defer rows.Close() + + idToName := map[int]string{} + slugToId := map[string]int{} + sortedIds := []int{} + + for rows.Next() { + var id int + var name string + + err := rows.Scan(&id, &name) + if err != nil { + return "", []any{}, fmt.Errorf("generateSlugBackfillCte.Scan: %w", err) + } + + idToName[id] = name + sortedIds = append(sortedIds, id) + } + + if len(idToName) == 0 { + return "", []any{}, nil + } + + slices.Sort(sortedIds) + + for _, id := range sortedIds { + attempt := 0 + for { + slug := strings.Trim(pattern.ReplaceAllString(strings.ToLower(idToName[id]), "-"), "-") + + if slug == "" { + slug = strconv.Itoa(attempt) + } else if attempt > 0 { + slug += "-" + strconv.Itoa(attempt) + } + + attempt++ + + _, ok := slugToId[slug] + if !ok { + slugToId[slug] = id + break + } + } + } + + if len(slugToId) == 0 { + return "", []any{}, nil + } + + updateQuery := ` + with t(slug, id) as(values + ` + + params := []any{} + + i := 0 + for slug, id := range slugToId { + updateQuery += "(?, ?)" + params = append(params, slug, id) + if i < len(slugToId)-1 { + updateQuery += "," + } + i++ + } + + updateQuery += ")" + + return updateQuery, params, nil +} + var tmpls = map[string]*template.Template{} func parseTmpl(name string, markup string) (*template.Template, error) { @@ -234,7 +496,7 @@ func parseTmpl(name string, markup string) (*template.Template, error) { {{template "title" .}} - + @@ -568,8 +830,11 @@ var metaName string var metaDomain string var metaUnconfirmedDomain string var metaUnconfirmedDomainProblem string + var metaSSL string +var metaConfigFileEnabled bool + type statusCtxKey struct{} type pageCtx struct { @@ -586,6 +851,7 @@ type pageCtx struct { HideUnconfirmedDomain bool ShouldAttemptRedirect bool Domain string + ConfigFile bool } func getPageCtx(r *http.Request) pageCtx { @@ -619,7 +885,8 @@ func getPageCtx(r *http.Request) pageCtx { HideUnconfirmedDomain: r.URL.Path == "/admin/settings", ShouldAttemptRedirect: metaSSL == "true" && authCtx.ID != 0 && metaDomain != "" && parsedURL.Hostname() != metaDomain, - Domain: metaDomain, + Domain: metaDomain, + ConfigFile: metaConfigFileEnabled, } } @@ -1790,12 +2057,33 @@ func getMetaValue(tx *sql.Tx, name string) (string, error) { } func neuter(next http.Handler) http.Handler { + gzAvailable := map[string]string{} + err := fs.WalkDir(staticFS, "static", func(path string, d fs.DirEntry, err error) error { + if !d.IsDir() { + if strings.HasSuffix(d.Name(), ".gz") { + gzAvailable[strings.Replace(path, ".gz", "", 1)] = path + } + } + return nil + }) + if err != nil { + log.Fatalf("neuter.WalkDir: %s", err) + } + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if strings.HasSuffix(r.URL.Path, "/") { http.NotFound(w, r) return } + if gzPath, ok := gzAvailable[strings.TrimPrefix(r.URL.Path, "/")]; ok { + r.URL.Path = gzPath + split := strings.Split(r.URL.Path, ".") + ext := split[len(split)-2] + w.Header().Add("Content-Type", mime.TypeByExtension("."+ext)) + w.Header().Add("Content-Encoding", "gzip") + } + next.ServeHTTP(w, r) }) } @@ -2018,2815 +2306,2861 @@ func GenerateSelfSignedCertificate() { var dockerFlag = flag.Bool("docker", false, "") -func main() { - portFlag := flag.Int("port", 80, "") - selfSignedFlag := flag.Bool("generate-self-signed-cert", false, "") +type StatusnookConfigSlackNotificationChannel struct { + WebhookURL string `json:"webhookURL" yaml:"webhook-url"` +} - flag.Parse() +type StatusnookConfigSMTPNotificationChannel struct { + Host string `json:"host" yaml:"host"` + Port int `json:"port" yaml:"port"` + Username string `json:"username" yaml:"username"` + Password string `json:"password" yaml:"password"` + From string `json:"from" yaml:"from"` + Headers map[string]string `json:"headers,omitempty" yaml:"headers,omitempty"` + Misc map[string]string `json:"misc,omitempty" yaml:"misc,omitempty"` +} - if *selfSignedFlag { - GenerateSelfSignedCertificate() - return - } +type StatusnookConfigMonitor struct { + Name string `json:"name" yaml:"name"` + URL string `json:"url" yaml:"url"` + Method string `json:"method" yaml:"method"` + Frequency int `json:"frequency" yaml:"frequency"` + Timeout int `json:"timeout" yaml:"timeout"` + Attempts int `json:"attempts" yaml:"attempts"` + RequestHeaders map[string]string `json:"headers,omitempty" yaml:"headers,omitempty"` + RequestBody any `json:"body,omitempty" yaml:"body,omitempty"` + NotificationChannels []string `json:"notification-channels,omitempty" yaml:"notification-channels,omitempty"` + MailGroups []string `json:"mail-groups,omitempty" yaml:"mail-groups,omitempty"` +} - db = initDB(false) +type StatusnookConfigGeneralSettings struct { + Name string `json:"name" yaml:"name"` +} - rwDB = initDB(true) - rwDB.SetMaxOpenConns(1) +type StatusnookConfigService struct { + Name string `json:"name" yaml:"name"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` +} - tx, err := db.Begin() +type StatusnookConfigAlertNotificationSettings struct { + EmailNotificationChannel string `json:"email-notification-channel,omitempty" yaml:"email-notification-channel,omitempty"` + ManagedSubscriptions bool `json:"managed-subscriptions,omitempty" yaml:"managed-subscriptions,omitempty"` + SlackClientSecret string `json:"slack-client-secret,omitempty" yaml:"slack-client-secret,omitempty"` + SlackInstallURL string `json:"slack-install-url,omitempty" yaml:"slack-install-url,omitempty"` +} + +type StatusnookConfigMailGroup struct { + Name string `json:"name" yaml:"name"` + Members []string `json:"members,omitempty" yaml:"members,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` +} + +type StatusnookConfig struct { + GeneralSettings StatusnookConfigGeneralSettings `json:"general-settings" yaml:"general-settings"` + MailGroups map[string]StatusnookConfigMailGroup `json:"mail-groups,omitempty" yaml:"mail-groups,omitempty"` + NotificationChannels map[string]map[string]any `json:"notification-channels,omitempty" yaml:"notification-channels,omitempty"` + Monitors map[string]StatusnookConfigMonitor `json:"monitors,omitempty" yaml:"monitors,omitempty"` + Services map[string]StatusnookConfigService `json:"services,omitempty" yaml:"services,omitempty"` + AlertNotificationSettings StatusnookConfigAlertNotificationSettings `json:"alert-notification-settings,omitempty" yaml:"alert-notification-settings,omitempty"` + Rename map[string]string `json:"rename,omitempty" yaml:"rename,omitempty"` +} + +func applyConfig(tx *sql.Tx, cfgBytes []byte) ([]string, error) { + msgs := []string{} + + decryptedCfg := string(cfgBytes) + + key, err := getMetaValue(tx, "secretKey") if err != nil { - log.Fatalf("main.Begin: %s", err) - return + return msgs, fmt.Errorf("applyConfig.getMetaValue: %w", err) } - defer tx.Rollback() - setup, err := getMetaValue(tx, "setup") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueSetup: %s", err) - return + keyBytes, err := base64.StdEncoding.DecodeString(key) + if err != nil { + return msgs, fmt.Errorf("applyConfig.DecodeStringKey: %w", err) } - metaSetup = setup - name, err := getMetaValue(tx, "name") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueName: %s", err) - return + block, err := aes.NewCipher(keyBytes) + if err != nil { + return msgs, fmt.Errorf("applyConfig.NewCipher: %w", err) } - metaName = name - domain, err := getMetaValue(tx, "domain") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueDomain: %s", err) - return + aesGCM, err := cipher.NewGCM(block) + if err != nil { + return msgs, fmt.Errorf("applyConfig.NewGCM: %w", err) } - metaDomain = domain - unconfirmedDomain, err := getMetaValue(tx, "unconfirmedDomain") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueUnconfirmedDomain: %s", err) - return - } - metaUnconfirmedDomain = unconfirmedDomain + slugPattern := regexp.MustCompile(`^-+|[^\p{Ll}\d-]+|-+$`) - unconfirmedDomainProblem, err := getMetaValue(tx, "unconfirmedDomainProblem") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueUnconfirmedDomainProblem: %s", err) - return - } - metaUnconfirmedDomainProblem = unconfirmedDomainProblem + secretPattern := regexp.MustCompile(`\bsecret_[A-Za-z0-9+\/=.]+`) + secretMatches := secretPattern.FindAllString(string(cfgBytes), -1) - ssl, err := getMetaValue(tx, "ssl") - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Fatalf("main.getMetaValueSSL: %s", err) - return - } - if errors.Is(err, sql.ErrNoRows) { - metaSSL = "true" - if BUILD == "dev" || *portFlag != 80 { - metaSSL = "false" + for _, v := range secretMatches { + nonceSplit := strings.Split(v, ".") + if len(nonceSplit) != 2 { + continue } - err = updateMetaValue(tx, "ssl", metaSSL) + ciphertext, err := base64.StdEncoding.DecodeString( + strings.TrimPrefix(nonceSplit[0], "secret_"), + ) if err != nil { - log.Printf("main.updateMetaValueSSL: %s", err) - return + return msgs, fmt.Errorf("applyConfig.DecodeStringCiphertext: %w", err) } - } else { - metaSSL = ssl + + nonce, err := base64.StdEncoding.DecodeString(nonceSplit[1]) + if err != nil { + return msgs, fmt.Errorf("applyConfig.DecodeStringNonce: %w", err) + } + + plaintext, err := aesGCM.Open(nil, nonce, ciphertext, nil) + if err != nil { + continue + } + + decryptedCfg = strings.ReplaceAll(decryptedCfg, v, string(plaintext)) } - err = tx.Commit() + cfg := StatusnookConfig{} + decoder := yaml.NewDecoder(bytes.NewReader([]byte(decryptedCfg))) + decoder.KnownFields(true) + err = decoder.Decode(&cfg) if err != nil { - log.Fatalf("main.Commit: %s", err) - return + return msgs, fmt.Errorf("applyConfig.Decode: %w", err) } - r := chi.NewRouter() - if BUILD == "dev" { - r.Use(middleware.Logger) + renameSrcMsg := func(k string) { + msgs = append(msgs, "rename: '"+k+ + "' does not exist, drop this rename if you've already completed it") } - if BUILD == "release" && metaSSL == "true" { - r.Use(func(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if certmagic.DefaultACME.HandleHTTPChallenge(w, r) { - return - } - if r.TLS == nil { - toURL := "https://" + renameDstMsg := func(entityType string, src string, dst string) { + msgs = append(msgs, "rename: replace "+entityType+" '"+src+"' with "+" '"+dst+ + "' to perform a rename") + } - requestHost, _, err := net.SplitHostPort(r.Host) - if err != nil { - requestHost = r.Host - } + invalidSlugMsg := func(entityType string, slug string) { + msgs = append(msgs, entityType+"."+slug+ + ": must only contain lower-case letters, numbers, and hyphens") + } - toURL += requestHost - toURL += r.URL.RequestURI() + duplicateSlugMsg := func(entityType string, slug string) { + msgs = append(msgs, "rename: "+entityType+"."+slug+ + " would not be unique") + } - w.Header().Set("Connection", "close") + for k, v := range cfg.Rename { + validSrc := true + validRename := true - http.Redirect(w, r, toURL, http.StatusFound) + split := strings.Split(k, ".") + if len(split) != 2 { + validRename = false + msgs = append(msgs, "rename: '"+k+"'"+ + " invalid") + continue + } - return - } - h.ServeHTTP(w, r) - }) - }) - } - r.Use(func(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if metaSetup != "done" && - !strings.HasPrefix(r.URL.Path, "/setup") && - !strings.HasPrefix(r.URL.Path, "/static") { - http.Redirect(w, r, "/setup", http.StatusFound) - return + entityType := split[0] + src := split[1] + + if src == v { + validRename = false + msgs = append(msgs, "rename: service "+" '"+src+"' to "+" '"+v+ + "' is invalid") + } + + if slugPattern.MatchString(v) { + validRename = false + msgs = append(msgs, "rename: '"+v+"'"+ + " must only contain lower-case letters, numbers, and hyphens") + } + + if entityType == "services" { + _, err := updateServiceSlug(tx, src, v) + if err != nil { + var sqliteErr sqlite3.Error + + if errors.Is(err, sql.ErrNoRows) { + validSrc = false + if validRename { + renameSrcMsg(k) + } + } else if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + duplicateSlugMsg("services", v) + } + } else { + return msgs, fmt.Errorf("applyConfig.updateServiceSlug: %w", err) + } } - h.ServeHTTP(w, r) - }) - }) - r.Use(func(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() + + if validSrc && validRename { + if _, ok := cfg.Services[v]; !ok { + renameDstMsg("service", src, v) + } + } + } else if entityType == "notification-channels" { + _, err := updateNotificationChannelSlug(tx, src, v) if err != nil { - log.Printf("adminMiddleware.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + var sqliteErr sqlite3.Error + + if errors.Is(err, sql.ErrNoRows) { + validSrc = false + if validRename { + renameSrcMsg(k) + } + } else if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + duplicateSlugMsg("services", v) + } + } else { + return msgs, fmt.Errorf("applyConfig.updateNotificationChannelSlug: %w", err) + } } - sessionToken, err := r.Cookie("session") + if validSrc && validRename { + if _, ok := cfg.NotificationChannels[v]; !ok { + renameDstMsg("notification channel", src, v) + } + } + } else if entityType == "mail-groups" { + _, err := updateMailGroupSlug(tx, src, v) if err != nil { - tx.Rollback() - h.ServeHTTP(w, r) - return + var sqliteErr sqlite3.Error + + if errors.Is(err, sql.ErrNoRows) { + validSrc = false + if validRename { + renameSrcMsg(k) + } + } else if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + duplicateSlugMsg("services", v) + } + } else { + return msgs, fmt.Errorf("applyConfig.updateMailGrouplug: %w", err) + } } - id, csrfToken, err := validateSession(tx, sessionToken.Value) + if validSrc && validRename { + if _, ok := cfg.MailGroups[v]; !ok { + renameDstMsg("mail group", src, v) + } + } + } else if entityType == "monitors" { + _, err := updateMonitorSlug(tx, src, v) if err != nil { - tx.Rollback() - if !errors.Is(err, sql.ErrNoRows) { - log.Printf("adminMiddleware.validateSession: %s", err) - w.WriteHeader(http.StatusUnauthorized) - return + var sqliteErr sqlite3.Error + + if errors.Is(err, sql.ErrNoRows) { + validSrc = false + if validRename { + renameSrcMsg(k) + } + } else if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + duplicateSlugMsg("services", v) + } + } else { + return msgs, fmt.Errorf("applyConfig.updateMonitorSlug: %w", err) } - h.ServeHTTP(w, r) - return } - if err = tx.Commit(); err != nil { - log.Printf("adminMiddleware.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if validSrc && validRename { + if _, ok := cfg.Monitors[v]; !ok { + renameDstMsg("monitor", src, v) + } } + } else { + msgs = append(msgs, "rename: '"+k+"' is invalid") + } + } - ctx := context.WithValue( - r.Context(), - authCtxKey{}, - authCtx{ - ID: id, - CSRFToken: csrfToken, - }, - ) + if cfg.GeneralSettings.Name != "" { + err = updateMetaValue(tx, "name", cfg.GeneralSettings.Name) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMetaValueGeneralSettingsName: %w", err) + } + } else { + msgs = append(msgs, "general-settings.name"+": is required") + } - h.ServeHTTP(w, r.WithContext(ctx)) - }) - }) + existingServiceSlugs := map[string]int{} - fs := http.FileServer(http.FS(staticFS)) - r.Get("/static/*", neuter(fs).ServeHTTP) - r.Route("/", func(r chi.Router) { - r.Use(statusMiddleware) - r.Get("/", index) - r.Get("/resolve", getResolve) - r.Get("/cross-auth", getCrossAuth) - r.Get("/history", history) - r.Get("/unsubscribe", getUnsubscribe) - r.Post("/unsubscribe", postUnsubscribe) - r.Post("/resubscribe", postResubscribe) - r.Get("/invitation/{token}", getInvitation) - r.Post("/invitation/{token}", postInvitation) - }) - r.Route("/admin", func(r chi.Router) { - r.Use(csrfMiddleware) - r.Use(statusMiddleware) - r.Use(func(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := getAuthCtx(r) + services, err := listServices(tx) + if err != nil { + return msgs, fmt.Errorf("applyConfig.listServices: %w", err) + } - if ctx.ID == 0 { - http.Redirect(w, r, "/login", http.StatusFound) - return - } + for _, v := range services { + if _, ok := cfg.Services[v.Slug]; !ok { + err := deleteServiceByID(tx, v.ID) + if err != nil { + return msgs, fmt.Errorf("applyConfig.deleteServiceByID: %w", err) + } + continue + } - h.ServeHTTP(w, r) - }) - }) - r.Get("/", adminIndex) - r.Post("/resolve", postResolve) - r.Route("/alerts", func(r chi.Router) { - r.Get("/", alerts) - r.Route("/notifications", func(r chi.Router) { - r.Get("/", getAlertNotifications) - r.Post("/", postAlertNotifications) - }) - r.Get("/{id}", getAlert) - r.Delete("/{id}", deleteAlert) - r.Get("/create", getCreateAlert) - r.Post("/create", postCreateAlert) - r.Get("/{id}/edit", getEditAlert) - r.Post("/{id}/edit", postEditAlert) - r.Get("/{id}/messages", getAddAlertMessage) - r.Post("/{id}/messages", postAddAlertMessage) - r.Post("/{id}/resolve", postResolveAlert) - r.Post("/{id}/unresolve", postUnresolveAlert) - r.Delete("/{id}/messages/{messageID}", deleteAlertMessage) - r.Get("/{id}/messages/{messageID}", getEditAlertMessage) - r.Post("/{id}/messages/{messageID}", postEditAlertMessage) - }) - r.Route("/monitors", func(r chi.Router) { - r.Get("/", monitors) - r.Get("/{id}", getMonitor) - r.Get("/{id}/all", getMonitorAllLogs) - r.Get("/{id}/poll", getMonitorPoll) - r.Delete("/{id}", deleteMonitor) - r.Get("/create", getCreateMonitor) - r.Post("/create", postCreateMonitor) - r.Get("/{id}/edit", getEditMonitor) - r.Post("/{id}/edit", postEditMonitor) - }) - r.Route("/services", func(r chi.Router) { - r.Get("/", services) - r.Get("/create", getCreateService) - r.Post("/create", postCreateService) - r.Delete("/{id}", deleteService) - r.Get("/{id}/edit", getEditService) - r.Post("/{id}/edit", postEditService) - }) - r.Route("/notifications", func(r chi.Router) { - r.Get("/", notifications) - r.Get("/create", getCreateNotification) - r.Post("/create", postCreateNotification) - r.Delete("/{id}", deleteNotificationChannel) - r.Get("/{id}/edit", getEditNotification) - r.Post("/{id}/edit", postEditNotification) - r.Route("/mail-groups", func(r chi.Router) { - r.Get("/create", getCreateMailGroup) - r.Post("/create", postCreateMailGroup) - r.Get("/{id}/edit", getEditMailGroup) - r.Post("/{id}/edit", postEditMailGroup) - r.Delete("/{id}", deleteMailGroup) - }) - }) - r.Route("/update", func(r chi.Router) { - r.Get("/", update) - r.Get("/check", updateCheck) - r.Get("/after-update", afterUpdate) - r.Post("/", postUpdate) - }) - r.Route("/settings", func(r chi.Router) { - r.Get("/", getSettings) - r.Post("/", postSettings) - r.Post("/cancel-domain", postSettingsCancelDomain) - r.Get("/users/{id}/edit", getEditUser) - r.Post("/users/{id}/edit", postEditUser) - r.Delete("/users/{id}", deleteUser) - r.Post("/users/invite", postInviteUser) - r.Delete("/users/invite/{id}", postDeleteInvite) - }) - }) - r.Route("/login", func(r chi.Router) { - r.Get("/", getLogin) - r.Post("/", postLogin) - }) - r.Route("/logout", func(r chi.Router) { - r.Use(csrfMiddleware) - r.Post("/", logout) - }) - r.Route("/setup", func(r chi.Router) { - r.Use(func(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() - if err != nil { - log.Printf("Setup.Begin: %s", err) - return - } - defer tx.Rollback() + existingServiceSlugs[v.Slug] = v.ID + } - v, err := getMetaValue(tx, "setup") - if err != nil { - log.Printf("Setup.getMetaValue: %s", err) - return - } + processedServices := map[string]bool{} - err = tx.Commit() - if err != nil { - log.Printf("Setup.Commit: %s", err) - return - } + for slug, v := range cfg.Services { + processedServices[slug] = true - if v == "done" { - http.Redirect(w, r, "/", http.StatusFound) - return - } + if slug == "" || slugPattern.MatchString(slug) { + invalidSlugMsg("services", slug) + continue + } - if r.URL.Path == "/setup/statusnook" { - h.ServeHTTP(w, r) - return - } + if v.Name == "" { + msgs = append(msgs, "services."+slug+": name is required") + } - if v == "domain" && r.URL.Path == "/setup/skip-domain" { - h.ServeHTTP(w, r) - return - } + if _, ok := existingServiceSlugs[slug]; ok { + err = editService(tx, existingServiceSlugs[slug], v.Name, v.Description) + if err != nil { + return msgs, fmt.Errorf("applyConfig.editService: %w", err) + } + } else { + err = createService(tx, slug, v.Name, v.Description) + if err != nil { + return msgs, fmt.Errorf("applyConfig.createService: %w", err) + } + } + } - endpoints := map[string]string{ - "domain": "/setup/domain", - "account": "/setup/account", - "name": "/setup/name", - "done": "/", - } + existingMonitorSlugs := map[string]int{} - url, ok := endpoints[v] - if !ok { - log.Printf("Setup.endpoints: no endpoint") - return - } + monitors, err := listMonitors(tx) + if err != nil { + return msgs, fmt.Errorf("applyConfig.listMailGroups: %w", err) + } - if r.URL.Path == "/setup" || r.URL.Path != url { - if r.Method == http.MethodGet { - http.Redirect(w, r, url, http.StatusFound) - } else { - w.WriteHeader(http.StatusBadRequest) - } - return - } + for _, v := range monitors { + existingMonitorSlugs[v.Slug] = v.ID + } - h.ServeHTTP(w, r) - }) - }) - r.Post("/statusnook", postSetupStatusnook) - r.Options("/statusnook", postSetupStatusnook) - r.Get("/domain", getSetupDomain) - r.Post("/domain", postSetupDomain) - r.Post("/skip-domain", postSetupDomainSkip) - r.Get("/account", getSetupAccount) - r.Post("/account", postSetupAccount) - r.Get("/name", getSetupName) - r.Post("/name", postSetupName) - }) - r.Get("/callback/slack", slackOAuth2Callback) - r.Post("/subscribe/email", postSubscribeEmail) - r.Get("/subscribe/email/confirm", getSubscribeEmailConfirm) - r.Post("/subscribe/email/confirm", postSubscribeEmailConfirm) - r.Post("/test", func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get("aa") == "" { - w.WriteHeader(http.StatusInternalServerError) + for slug, v := range cfg.Monitors { + if slug == "" || slugPattern.MatchString(slug) { + invalidSlugMsg("monitors", slug) + continue } - }) - - appCtx, cancelAppCtx = context.WithCancel(context.Background()) - shutdownCh := make(chan os.Signal, 1) - signal.Notify(shutdownCh, os.Interrupt, syscall.SIGTERM, syscall.SIGINT) - - appWg.Add(1) - go monitorLoop(appCtx, &appWg) - - appWg.Add(1) - go notificationLoop(appCtx, &appWg) + if v.Name == "" { + msgs = append(msgs, "monitors."+slug+": name is required") + } - var httpServer *http.Server - var httpsServer *http.Server + if v.URL == "" { + msgs = append(msgs, "monitors."+slug+": url is required") + } - if BUILD == "dev" { - httpLn, err := net.Listen("tcp", fmt.Sprintf(":%d", 8000)) + reqURL := v.URL + validURL := true + parsedReqURL, err := url.Parse(reqURL) if err != nil { - log.Fatalf("main.ListenHTTPS: %s", err) + validURL = false + } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { + validURL = false + } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { + validURL = false + } + if !validURL { + msgs = append(msgs, "monitors."+slug+": url is invalid") } - httpServer = &http.Server{ - Handler: r, - BaseContext: func(listener net.Listener) context.Context { return appCtx }, + if !(strings.EqualFold(v.Method, "get") || strings.EqualFold(v.Method, "post") || + strings.EqualFold(v.Method, "patch") || strings.EqualFold(v.Method, "put") || + strings.EqualFold(v.Method, "delete")) { + msgs = append( + msgs, + "monitors."+slug+": method must be one of get, post, patch, put, delete", + ) } - go httpServer.Serve(httpLn) - } else { - host := "" - if !*dockerFlag && *portFlag != 80 { - host = "127.0.0.1" + if v.Frequency != 10 && v.Frequency != 30 && v.Frequency != 60 { + msgs = append(msgs, "monitors."+slug+": frequency must be one of 10, 30, 60") } - httpLn, err := net.Listen("tcp", fmt.Sprintf("%s:%d", host, *portFlag)) - if err != nil { - log.Fatalf("main.ListenHTTP: %s", err) + if v.Timeout != 5 && v.Timeout != 10 && v.Timeout != 15 { + msgs = append(msgs, "monitors."+slug+": timeout must be one of 5, 10, 15") } - httpServer = &http.Server{ - ReadHeaderTimeout: 10 * time.Second, - ReadTimeout: 30 * time.Second, - WriteTimeout: 2 * time.Minute, - IdleTimeout: 5 * time.Minute, - Handler: r, - BaseContext: func(listener net.Listener) context.Context { return appCtx }, + if v.Attempts != 1 && v.Attempts != 2 && v.Attempts != 3 { + msgs = append(msgs, "monitors."+slug+": attempts must be one of 1, 2, 3") } - go httpServer.Serve(httpLn) + requestHeadersStr, err := json.Marshal(v.RequestHeaders) + if err != nil { + return msgs, fmt.Errorf("applyConfig.MarshalRequestHeaders: %w", err) + } - if metaSSL == "true" { - certmagic.Default.Storage = &certmagic.FileStorage{Path: "certmagic"} - certmagic.DefaultACME.Agreed = true - certmagic.DefaultACME.CA = CA - certmagic.DefaultACME.Email = " " + requestBodyNullStr := sql.NullString{Valid: false} + bodyFormat := sql.NullString{Valid: false} - domains := []string{} - if domain != "" { - domains = append(domains, metaDomain) - } + if v.RequestBody != nil { + if _, ok := v.RequestBody.(map[string]any); ok { + vMap := v.RequestBody.(map[string]any) - tlsConfig, err := certmagic.TLS(domains) - if err != nil { - log.Fatalf("main.TLS: %s", err) - } - tlsConfig.NextProtos = append([]string{"h2", "http/1.1"}, tlsConfig.NextProtos...) - getCertificateCertMagic := tlsConfig.GetCertificate - tlsConfig.GetCertificate = func(clientHello *tls.ClientHelloInfo) (*tls.Certificate, error) { - certificate, err := getCertificateCertMagic(clientHello) - if err != nil { - certificate, err := tls.LoadX509KeyPair( - SELF_SIGNED_CERT_NAME, - SELF_SIGNED_KEY_NAME, - ) - if err != nil { - log.Printf("main.LoadX509KeyPair: %s", err) - return &certificate, err + values := url.Values{} + for k, v := range vMap { + str := "" + if vs, ok := v.(int); ok { + str = strconv.Itoa(vs) } - - return &certificate, nil + if vs, ok := v.(string); ok { + str = vs + } + values.Add(k, str) } - return certificate, nil + bodyFormat = sql.NullString{Valid: true, String: "form"} + requestBodyNullStr = sql.NullString{Valid: true, String: values.Encode()} + } else if _, ok := v.RequestBody.(string); ok { + bodyFormat = sql.NullString{Valid: true, String: "text"} + requestBodyNullStr = sql.NullString{Valid: true, String: v.RequestBody.(string)} + } else { + msgs = append(msgs, "monitors."+slug+": body is invalid") } + } - httpsLn, err := tls.Listen("tcp", fmt.Sprintf(":%d", 443), tlsConfig) + if _, ok := existingMonitorSlugs[slug]; ok { + _, err := editMonitor( + tx, + existingMonitorSlugs[slug], + v.Name, + v.URL, + strings.ToUpper(v.Method), + v.Frequency, + v.Timeout, + v.Attempts, + sql.NullString{Valid: true, String: string(requestHeadersStr)}, + bodyFormat, + requestBodyNullStr, + ) if err != nil { - log.Fatalf("main.ListenHTTPS: %s", err) + return msgs, fmt.Errorf("applyConfig.editMonitor: %w", err) } - - httpsServer = &http.Server{ - ReadHeaderTimeout: 10 * time.Second, - ReadTimeout: 30 * time.Second, - WriteTimeout: 2 * time.Minute, - IdleTimeout: 5 * time.Minute, - Handler: r, - BaseContext: func(listener net.Listener) context.Context { return appCtx }, - } - - go httpsServer.Serve(httpsLn) - - if unconfirmedDomain != "" && unconfirmedDomainProblem == "" { - appWg.Add(1) - go monitorUnconfirmedDomainLoop(appCtx, &appWg) + } else { + _, err := createMonitor( + tx, + slug, + v.Name, + v.URL, + strings.ToUpper(v.Method), + v.Frequency, + v.Timeout, + v.Attempts, + sql.NullString{Valid: true, String: string(requestHeadersStr)}, + bodyFormat, + requestBodyNullStr, + ) + if err != nil { + return msgs, fmt.Errorf("applyConfig.createMonitor: %w", err) } } } - <-shutdownCh - cancelAppCtx() - appWg.Wait() + existingNotificationChannelSlugs := map[string]int{} - if err := httpServer.Shutdown(context.Background()); err != nil { - panic(err) + notificationChannels, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + return msgs, fmt.Errorf("applyConfig.listNotificationChannels: %w", err) } - if httpsServer != nil { - if err := httpsServer.Shutdown(context.Background()); err != nil { - panic(err) + for _, v := range notificationChannels { + if _, ok := cfg.NotificationChannels[v.Slug]; !ok { + err := deleteNotificationChannelByID(tx, v.ID) + if err != nil { + return msgs, fmt.Errorf("applyConfig.deleteNotificationChannelByID: %w", err) + } + continue } - } - err = db.Close() - if err != nil { - log.Printf("main.DBClose: %s", err) + existingNotificationChannelSlugs[v.Slug] = v.ID } - err = rwDB.Close() - if err != nil { - log.Printf("main.rwDBClose: %s", err) - } -} + for slug, v := range cfg.NotificationChannels { + if slug == "" || slugPattern.MatchString(slug) { + invalidSlugMsg("notification-channels", slug) + continue + } -type AlertSubscription struct { - ID int - Type string - Destination string - Meta string - Active bool -} + details := "{}" -func listActiveAlertEmailSubscriptions(tx *sql.Tx) ([]AlertSubscription, error) { - const query = ` - select id, type, destination, meta, active from alert_subscription - where type = 'email' and active = true - ` + type baseNotificationChannel struct { + Name string + Type string + } - var subs []AlertSubscription + typeAny, ok := v["type"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": type is required") + } - rows, err := tx.Query(query) - if err != nil { - return subs, fmt.Errorf("listActiveAlertEmailSubscriptions.Query: %w", err) - } - defer rows.Close() + cType, ok := typeAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": type is invalid") + } else if cType == "" { + msgs = append(msgs, "notification-channels."+slug+": type is required") + } - for rows.Next() { - var sub AlertSubscription + if cType != "smtp" && cType != "slack" { + msgs = append(msgs, "notification-channels."+slug+": type must be one of smtp, slack") + } - err := rows.Scan( - &sub.ID, - &sub.Type, - &sub.Destination, - &sub.Meta, - &sub.Active, - ) - if err != nil { - return subs, fmt.Errorf("listActiveAlertEmailSubscriptions.Scan: %w", err) + nameAny, ok := v["name"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": name is required") } - subs = append(subs, sub) - } + name, ok := nameAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": name is invalid") + } else if name == "" { + msgs = append(msgs, "notification-channels."+slug+": name is required") + } - return subs, nil -} + channel := baseNotificationChannel{ + Type: cType, + Name: name, + } -func deleteAlertSubscriptionByMeta(tx *sql.Tx, meta string) error { - const query = ` - delete from alert_subscription where meta = ? - ` + if channel.Type == "slack" { + unknownProps := []string{} - _, err := tx.Exec(query, meta) - if err != nil { - return fmt.Errorf("deleteAlertSubscriptionByMeta.Exec: %w", err) - } + requiredProps := map[string]bool{ + "type": true, + "name": true, + "webhook-url": true, + } - return nil -} + for k := range v { + if _, ok := requiredProps[k]; !ok { + unknownProps = append(unknownProps, k) + } + } -func updateEmailAlertSubscriptionActiveByMeta(tx *sql.Tx, meta string, active bool) error { - const query = ` - update alert_subscription set active = ? where meta = ? and type = 'email' - ` + for _, prop := range unknownProps { + msgs = append( + msgs, + "notification-channels."+slug+": "+prop+ + " is an invalid property for a slack notification channel", + ) + } - _, err := tx.Exec(query, active, meta) - if err != nil { - return fmt.Errorf("updateEmailAlertSubscriptionActiveByMeta.Exec: %w", err) - } + webhookURLAny, ok := v["webhook-url"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": webhook-url is required") + } - return nil -} + webhookURL, ok := webhookURLAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": webhook-url is invalid") + } else if webhookURL == "" { + msgs = append(msgs, "notification-channels."+slug+": webhook-url is required") + } -func updateEmailAlertSubscriptionActiveByEmail(tx *sql.Tx, email string, active bool) error { - const query = ` - update alert_subscription set active = ? where destination = ? and type = 'email' - ` + validURL := true + parsedReqURL, err := url.Parse(webhookURL) + if err != nil { + validURL = false + } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { + validURL = false + } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { + validURL = false + } - _, err := tx.Exec(query, active, email) - if err != nil { - return fmt.Errorf("updateEmailAlertSubscriptionActiveByEmail.Exec: %w", err) - } + if !validURL { + msgs = append(msgs, "notification-channels."+slug+": webhook-url is invalid") + } - return nil -} + d := StatusnookConfigSlackNotificationChannel{WebhookURL: webhookURL} + detailBytes, err := json.Marshal(d) + if err != nil { + return msgs, fmt.Errorf("applyConfig.MarshalSlackNotificationDetails: %w", err) + } -func createAlertSubscription(tx *sql.Tx, subscriptionType string, destination string, meta string) error { - const query = ` - insert into alert_subscription(type, destination, meta) values(?, ?, nullif(?, '')) - on conflict(type, destination) do update set active = true - ` + details = string(detailBytes) + } else if channel.Type == "smtp" { + unknownProps := []string{} + + requiredProps := map[string]bool{ + "type": true, + "name": true, + "headers": true, + "host": true, + "port": true, + "username": true, + "password": true, + "from": true, + "misc": true, + } - _, err := tx.Exec(query, subscriptionType, destination, meta) - if err != nil { - return fmt.Errorf("createAlertSubscription.Exec: %w", err) - } + for k := range v { + if _, ok := requiredProps[k]; !ok { + unknownProps = append(unknownProps, k) + } + } - return nil -} + for _, prop := range unknownProps { + msgs = append( + msgs, + "notification-channels."+slug+": "+prop+ + " is an unknown property for an SMTP notification channel", + ) + } -type SlackOAuthAccessResponse struct { - OK bool `json:"ok"` - Team struct { - ID string `json:"id"` - } `json:"team"` - IncomingWebhook struct { - URL string `json:"url"` - ChannelID string `json:"channel_id"` - } `json:"incoming_webhook"` -} + hostAny, ok := v["host"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": host is required") + } -func slackOAuth2Callback(w http.ResponseWriter, r *http.Request) { - code := r.URL.Query().Get("code") - if code == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + host, ok := hostAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": host is invalid") + } else if host == "" { + msgs = append(msgs, "notification-channels."+slug+": host is required") + } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("slackOAuth2Callback.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + portAny, ok := v["port"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": port is required") + } + + port, ok := portAny.(int) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": port is invalid") + } else if port == 0 { + msgs = append(msgs, "notification-channels."+slug+": port is required") + } + + usernameAny, ok := v["username"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": username is required") + } + + username, ok := usernameAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": username is invalid") + } else if username == "" { + msgs = append(msgs, "notification-channels."+slug+": username is required") + } + + passwordAny, ok := v["password"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": password is required") + } + + password, ok := passwordAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": password is invalid") + } else if password == "" { + msgs = append(msgs, "notification-channels."+slug+": password is required") + } + + fromAny, ok := v["from"] + if !ok { + msgs = append(msgs, "notification-channels."+slug+": from is required") + } + + from, ok := fromAny.(string) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": from is invalid") + } else if from == "" { + msgs = append(msgs, "notification-channels."+slug+": from is required") + } + if _, err := mail.ParseAddress(from); err != nil { + msgs = append(msgs, "notification-channels."+slug+": from is an invalid email address") + } + + headers := map[string]string{} + + headersAny, ok := v["headers"] + if ok { + headersMapAny, ok := headersAny.(map[string]any) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": headers is invalid") + } + + for k, v := range headersMapAny { + if vs, ok := v.(string); ok { + headers[k] = vs + continue + } + if vs, ok := v.(int); ok { + headers[k] = strconv.Itoa(vs) + continue + } + msgs = append( + msgs, + "notification-channels."+slug+": invalid header value "+k+ + ", must be string or number", + ) + } + } + + misc := map[string]string{} + + miscAny, ok := v["misc"] + if ok { + miscMapAny, ok := miscAny.(map[string]any) + if !ok { + msgs = append(msgs, "notification-channels."+slug+": misc is invalid") + } + + for k, v := range miscMapAny { + if vs, ok := v.(string); ok { + misc[k] = vs + continue + } + if vs, ok := v.(int); ok { + misc[k] = strconv.Itoa(vs) + continue + } + msgs = append( + msgs, + "notification-channels."+slug+": invalid misc value "+k+ + ", must be string or number", + ) + } + } + + d := StatusnookConfigSMTPNotificationChannel{ + Host: host, + Port: port, + Username: username, + Password: password, + From: from, + Headers: headers, + Misc: misc, + } + detailBytes, err := json.Marshal(d) + if err != nil { + return msgs, fmt.Errorf("applyConfig.MarshalSlackNotificationDetails: %w", err) + } + + details = string(detailBytes) + } + + if _, ok := existingNotificationChannelSlugs[slug]; ok { + err := editNotificationChannel( + tx, + NotificationChannel{ + ID: existingNotificationChannelSlugs[slug], + Name: channel.Name, + Type: channel.Type, + Details: details, + }, + ) + if err != nil { + return msgs, fmt.Errorf("applyConfig.editNotificationChannel: %w", err) + } + } else { + err := createNotification(tx, slug, channel.Name, channel.Type, details) + if err != nil { + return msgs, fmt.Errorf("applyConfig.createNotification: %w", err) + } + } } - defer tx.Rollback() - settings, err := getAlertSettings(tx) + existingMailGroupSlugs := map[string]int{} + + mailGroups, err := listMailGroups(tx) if err != nil { - log.Printf("slackOAuth2Callback.getAlertSettings: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return msgs, fmt.Errorf("applyConfig.listMailGroups2: %w", err) } - slackInstallURL, err := url.ParseRequestURI(settings.SlackInstallURL) - if err != nil { - log.Printf("slackOAuth2Callback.ParseRequestURI: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + for _, v := range mailGroups { + if _, ok := cfg.MailGroups[v.Slug]; !ok { + err := deleteMailGroupByID(tx, v.ID) + if err != nil { + return msgs, fmt.Errorf("applyConfig.deleteMailGroupByID: %w", err) + } + continue + } + existingMailGroupSlugs[v.Slug] = v.ID } - form := url.Values{} - form.Add("code", code) - form.Add("client_id", slackInstallURL.Query().Get("client_id")) - form.Add("client_secret", settings.SlackClientSecret) + for slug, v := range cfg.MailGroups { + if slug == "" || slugPattern.MatchString(slug) { + invalidSlugMsg("mail-groups", slug) + continue + } - resp, err := http.PostForm("https://slack.com/api/oauth.v2.access", form) - if err != nil { - log.Printf("slackOAuth2Callback.PostForm: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if v.Name == "" { + msgs = append(msgs, "mail-groups."+slug+": name is required") + } + + uniqueMembers := map[string]bool{} + + for _, v := range v.Members { + email, err := mail.ParseAddress(v) + if err != nil { + msgs = append(msgs, "mail-groups."+slug+": email is invalid \""+v+"\"") + continue + } + + if _, ok := uniqueMembers[strings.ToLower(email.String())]; ok { + msgs = append(msgs, "mail-groups."+slug+": member is duplicated \""+v+"\"") + } + + uniqueMembers[strings.ToLower(email.String())] = true + } + + if _, ok := existingMailGroupSlugs[slug]; ok { + err := updateMailGroup(tx, existingMailGroupSlugs[slug], v.Name, v.Description) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMailGroup: %w", err) + } + err = updateMailGroupMembers(tx, existingMailGroupSlugs[slug], v.Members) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMailGroupMembersUpdate: %w", err) + } + } else { + id, err := createMailGroup(tx, slug, v.Name, v.Description) + if err != nil { + return msgs, fmt.Errorf("applyConfig.createMailGroup: %w", err) + } + + err = updateMailGroupMembers(tx, id, v.Members) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMailGroupMembersCreate: %w", err) + } + } } - respBody, err := io.ReadAll(resp.Body) + monitors, err = listMonitors(tx) if err != nil { - log.Printf("slackOAuth2Callback.ReadAll: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return msgs, fmt.Errorf("applyConfig.listMonitors2: %w", err) } - defer resp.Body.Close() - if resp.StatusCode != 200 { - w.WriteHeader(http.StatusInternalServerError) - return + channels, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + return msgs, fmt.Errorf("applyConfig.listNotificationChannels2: %w", err) } - accessResponse := SlackOAuthAccessResponse{} + channelSlugs := map[string]int{} + for _, v := range channels { + channelSlugs[v.Slug] = v.ID + } - err = json.Unmarshal(respBody, &accessResponse) + mailGroups, err = listMailGroups(tx) if err != nil { - log.Printf("slackOAuth2Callback.Unmarshal: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return msgs, fmt.Errorf("applyConfig.listMailGroups3: %w", err) } - if !accessResponse.OK { - w.WriteHeader(http.StatusInternalServerError) - return + mailGroupSlugs := map[string]int{} + for _, v := range mailGroups { + mailGroupSlugs[v.Slug] = v.ID } - meta := accessResponse.Team.ID + "_" + accessResponse.IncomingWebhook.ChannelID + for _, v := range monitors { + if _, ok := cfg.Monitors[v.Slug]; !ok { + err := deleteMonitorByID(tx, v.ID) + if err != nil { + return msgs, fmt.Errorf("applyConfig.deleteMonitorByID: %w", err) + } + continue + } - err = deleteAlertSubscriptionByMeta(tx, meta) - if err != nil { - log.Printf("slackOAuth2Callback.deleteAlertSubscriptionByMeta: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + existingMonitorSlugs[v.Slug] = v.ID } - err = createAlertSubscription( - tx, - "slack", - accessResponse.IncomingWebhook.URL, - meta, - ) - if err != nil { - log.Printf("slackOAuth2Callback.createAlertSubscription: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + for slug, monitor := range cfg.Monitors { + if slug == "" || slugPattern.MatchString(slug) { + invalidSlugMsg("monitors", slug) + continue + } - err = tx.Commit() - if err != nil { - log.Printf("slackOAuth2Callback.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + skipUpdate := false - http.Redirect(w, r, "/?slack_app_installed=1", http.StatusFound) -} + channelIDs := []int{} + uniqueNotificationChannels := map[string]bool{} + for _, channelSlug := range monitor.NotificationChannels { + if _, ok := channelSlugs[channelSlug]; !ok { + msgs = append( + msgs, + "monitors."+slug+ + ": notification-channels contains unknown channel \""+channelSlug+"\"", + ) + skipUpdate = true + continue + } -func postmarkDeleteSuppression(email string, token string, stream string) error { - body := fmt.Sprintf( - ` - { - "Suppressions": [ - { - "EmailAddress": "%s" - } - ] + if _, ok := uniqueNotificationChannels[channelSlug]; ok { + msgs = append( + msgs, + "monitors."+slug+ + ": notification channel is duplicated \""+channelSlug+"\"", + ) + skipUpdate = true + continue + } + + uniqueNotificationChannels[channelSlug] = true + channelIDs = append(channelIDs, channelSlugs[channelSlug]) } - `, - email, - ) - httpClient := http.Client{ - Timeout: time.Second * 10, + mailGroupIDs := []int{} + uniqueMailGroups := map[string]bool{} + for _, groupSlug := range monitor.MailGroups { + if _, ok := mailGroupSlugs[groupSlug]; !ok { + msgs = append( + msgs, + "monitors."+slug+ + ": mail-groups contains unknown mail group \""+groupSlug+"\"", + ) + skipUpdate = true + continue + } + + if _, ok := uniqueMailGroups[groupSlug]; ok { + msgs = append( + msgs, + "monitors."+slug+ + ": mail group is duplicated \""+groupSlug+"\"", + ) + skipUpdate = true + continue + } + + uniqueMailGroups[groupSlug] = true + mailGroupIDs = append(mailGroupIDs, mailGroupSlugs[groupSlug]) + } + + if skipUpdate { + continue + } + + err = updateMonitorNotificationChannels( + tx, + existingMonitorSlugs[slug], + channelIDs, + ) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMonitorNotificationChannels: %w", err) + } + + err = updateMonitorMailGroups( + tx, + existingMonitorSlugs[slug], + mailGroupIDs, + ) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMonitorMailGroups: %w", err) + } } - req, err := http.NewRequest( - http.MethodPost, - "https://api.postmarkapp.com/message-streams/"+stream+"/suppressions/delete", - strings.NewReader(body), + managedSubscriptions := cfg.AlertNotificationSettings.ManagedSubscriptions + + err = updateAlertSettings( + tx, + cfg.AlertNotificationSettings.SlackInstallURL, + cfg.AlertNotificationSettings.SlackClientSecret, + managedSubscriptions, ) if err != nil { - return fmt.Errorf("postmarkDeleteSuppression.NewRequest: %w", err) + return msgs, fmt.Errorf("applyConfig.updateAlertSettings: %w", err) } - req.Header.Add("Content-Type", "application/json") - req.Header.Add("X-Postmark-Server-Token", token) + if cfg.AlertNotificationSettings.EmailNotificationChannel != "" { + if _, ok := channelSlugs[cfg.AlertNotificationSettings.EmailNotificationChannel]; !ok { + msgs = append( + msgs, + "alert-notification-settings.email-notification-channel: "+ + "refers to unknown channel \""+ + cfg.AlertNotificationSettings.EmailNotificationChannel+"\"", + ) + } + } - resp, err := httpClient.Do(req) - if err != nil { - return fmt.Errorf("postmarkDeleteSuppression.Do: %w", err) + channel, err := getNotificationChannelBySlug( + tx, + cfg.AlertNotificationSettings.EmailNotificationChannel, + ) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + return msgs, fmt.Errorf("applyConfig.getNotificationChannelBySlug: %w", err) } - defer resp.Body.Close() - respBody, err := io.ReadAll(resp.Body) + err = updateAlertSMTPNotificationSetting(tx, channel.ID) if err != nil { - return fmt.Errorf("postmarkDeleteSuppression.ReadAll: %w", err) + return msgs, fmt.Errorf("applyConfig.updateAlertSMTPNotificationSetting: %w", err) } - if resp.StatusCode != 200 { - return fmt.Errorf("postmarkDeleteSuppression.StatusCode: %s", string(respBody)) + uniqueMessages := map[string]bool{} + + finalMsgs := []string{} + for _, v := range msgs { + if _, ok := uniqueMessages[v]; ok { + continue + } + uniqueMessages[v] = true + finalMsgs = append(finalMsgs, v) } - return nil + err = updateMetaValue(tx, "configFile", string(cfgBytes)) + if err != nil { + return msgs, fmt.Errorf("applyConfig.updateMetaValueConfigFile: %w", err) + } + + return finalMsgs, nil } -func checkHasRecentPendingEmailAlertSubscription(tx *sql.Tx, email string, now time.Time) (bool, error) { - const query = ` - select exists( - select 1 from pending_email_alert_subscription where email = ? - and created_at > datetime(?, '-10 minutes') - ) - ` +func generateSlug(name string, slugs map[string]bool) string { + pattern := regexp.MustCompile(`[^\p{L}\d]+`) - var hasRecent bool + attempt := 0 + for { + slug := strings.Trim(pattern.ReplaceAllString(strings.ToLower(name), "-"), "-") - err := tx.QueryRow(query, email, now).Scan(&hasRecent) - if err != nil { - return hasRecent, fmt.Errorf("checkHasRecentPendingEmailAlertSubscription.Exec: %w", err) - } + if slug == "" { + slug = strconv.Itoa(attempt) + } else if attempt > 0 { + slug += "-" + strconv.Itoa(attempt) + } - return hasRecent, nil + attempt++ + + _, ok := slugs[slug] + if !ok { + return slug + } + } } -func createPendingEmailAlertSubscription(tx *sql.Tx, token string, email string, createdAt time.Time) error { - const query = ` - insert into pending_email_alert_subscription(token, email, created_at) - values(?, ?, ?) - ` +func generateConfig(tx *sql.Tx) (string, error) { + cfgStr := "" - _, err := tx.Exec(query, token, email, createdAt) + mailGroups, err := listMailGroups(tx) if err != nil { - return fmt.Errorf("createPendingEmailAlertSubscription.Exec: %w", err) - } - - return nil -} - -type SupressionDumpResponse struct { - Suppressions []Supression -} - -type Supression struct { - EmailAddress string - SuppressionReason string - Origin string - CreatedAt time.Time -} - -func postmarkDumpSupressions(token string, stream string) (SupressionDumpResponse, error) { - httpClient := http.Client{ - Timeout: time.Second * 10, + return cfgStr, fmt.Errorf("generateConfig.listMailGroups: %w", err) } - var supressionsResp SupressionDumpResponse + mailGroupMembers := map[int][]string{} - req, err := http.NewRequest( - http.MethodGet, - "https://api.postmarkapp.com/message-streams/"+stream+"/suppressions/dump"+ - "?SupressionReason=ManualSuppression", - nil, - ) - if err != nil { - return supressionsResp, fmt.Errorf("postmarkDumpSupressions.NewRequest: %w", err) + for _, v := range mailGroups { + members, err := listMailGroupMembersByID(tx, v.ID) + if err != nil { + return cfgStr, fmt.Errorf("generateConfig.listMailGroupMembersByID: %w", err) + } + for _, m := range members { + mailGroupMembers[v.ID] = append(mailGroupMembers[v.ID], m.EmailAddress) + } } - req.Header.Add("Content-Type", "application/json") - req.Header.Add("X-Postmark-Server-Token", token) - - resp, err := httpClient.Do(req) - if err != nil { - return supressionsResp, fmt.Errorf("postmarkDumpSupressions.Do: %w", err) + cfgMailGroups := map[string]StatusnookConfigMailGroup{} + for _, v := range mailGroups { + cfgMailGroups[v.Slug] = StatusnookConfigMailGroup{ + Name: v.Name, + Members: mailGroupMembers[v.ID], + Description: v.Description, + } } - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) + notificationChannels, err := listNotificationChannels(tx, listNotificationsOptions{}) if err != nil { - return supressionsResp, fmt.Errorf("postmarkDumpSupressions.ReadAll: %w", err) - } - - if resp.StatusCode != 200 { - return supressionsResp, fmt.Errorf("postmarkDumpSupressions.StatusCode: %s", string(body)) + return cfgStr, fmt.Errorf("generateConfig.listNotificationChannels: %w", err) } - err = json.Unmarshal(body, &supressionsResp) - if err != nil { - return supressionsResp, fmt.Errorf("postmarkDumpSupressions.Unmarshal: %w", err) - } + cfgNotificationChannels := map[string]map[string]any{} + for _, v := range notificationChannels { + if v.Type == "smtp" { + details, ok := v.Details.(SMTPNotificationDetails) + if !ok { + return cfgStr, fmt.Errorf("generateConfig.AssertSMTPNotificationDetails") + } - return supressionsResp, nil -} + cfgNotificationChannel := map[string]any{ + "type": v.Type, + "name": v.Name, + "host": details.Host, + "port": details.Port, + "username": details.Username, + "password": details.Password, + "from": details.From, + } + if len(details.Headers) > 0 { + cfgNotificationChannel["headers"] = details.Headers + } + if len(details.Misc) > 0 { + cfgNotificationChannel["misc"] = details.Misc + } -var lastSuppressionSync time.Time -var supressionSyncMu sync.Mutex + cfgNotificationChannels[v.Slug] = cfgNotificationChannel + } else if v.Type == "slack" { + details, ok := v.Details.(SlackNotificationDetails) + if !ok { + return cfgStr, fmt.Errorf("generateConfig.AssertSlackNotificationDetails") + } -func postSubscribeEmail(w http.ResponseWriter, r *http.Request) { - email := r.PostFormValue("email") + cfgNotificationChannels[v.Slug] = map[string]any{ + "type": v.Type, + "name": v.Name, + "webhook-url": details.WebhookURL, + } + } + } - _, err := mail.ParseAddress(email) + monitors, err := listMonitors(tx) if err != nil { - w.WriteHeader(http.StatusBadRequest) - return + return cfgStr, fmt.Errorf("generateConfig.listMonitors: %w", err) } - supressionSyncMu.Lock() - if time.Since(lastSuppressionSync) > time.Second*10 { - tx, err := db.Begin() + cfgMonitors := map[string]StatusnookConfigMonitor{} + for _, v := range monitors { + channels, err := listNotificationChannelsByMonitorID(tx, v.ID) if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.BeginSuppressionsPrep: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return cfgStr, fmt.Errorf("generateConfig.listNotificationChannelsByMonitorID: %w", err) } - defer tx.Rollback() - alertNotificationChannelID, err := getAlertSMTPNotificationSetting(tx) - if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.getAlertSMTPNotificationSetting: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + cfgNotificationChannels := []string{} + for _, c := range channels { + cfgNotificationChannels = append(cfgNotificationChannels, c.Slug) } - notificationChannel, err := getNotificationChannelByID(tx, alertNotificationChannelID) + mailGroups, err := listMailGroupIDsByMonitorID(tx, v.ID) if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.getNotificationChannelByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - smtpDetail, ok := notificationChannel.Details.(SMTPNotificationDetails) - if !ok { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.ChannelAssert: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return cfgStr, fmt.Errorf("generateConfig.listMailGroupIDsByMonitorID: %w", err) } - alertSettings, err := getAlertSettings(tx) - if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.getAlertSettings: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + cfgMailGroups := []string{} + for _, m := range mailGroups { + cfgMailGroups = append(cfgMailGroups, m.Slug) } - err = tx.Commit() - if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.CommitBeginSuppressionsPrep: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + cfgMonitor := StatusnookConfigMonitor{ + Name: v.Name, + URL: v.URL, + Method: v.Method, + Frequency: v.Frequency, + Timeout: v.Timeout, + Attempts: v.Attempts, + RequestHeaders: v.RequestHeaders, + NotificationChannels: cfgNotificationChannels, + MailGroups: cfgMailGroups, } - - if !alertSettings.ManagedSubscriptions && - strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { - supressions, err := postmarkDumpSupressions(smtpDetail.Password, smtpDetail.Misc["pm-broadcast"]) - if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.postmarkDumpSupressions: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - for _, v := range supressions.Suppressions { - tx, err := rwDB.Begin() + if v.Body.String != "" { + if v.BodyFormat.String == "form" { + values, err := url.ParseQuery(v.Body.String) if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.BeginSuppressions: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return cfgStr, fmt.Errorf("generateConfig.ParseQuery: %w", err) } - defer tx.Rollback() - subscription, err := getAlertSubscriptionByEmail(tx, email) - if err != nil { - if !errors.Is(err, sql.ErrNoRows) { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.getAlertSubscriptionByEmail: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + flatValues := map[string]string{} + for k, v := range values { + flatValues[k] = v[0] } - if subscription.ID != 0 { - err = updateEmailAlertSubscriptionActiveByEmail(tx, v.EmailAddress, false) - if err != nil { - supressionSyncMu.Unlock() - log.Printf( - "postSubscribeEmail.updateEmailAlertSubscriptionActiveByEmail: %s", - err, - ) - w.WriteHeader(http.StatusInternalServerError) - return - } - } + cfgMonitor.RequestBody = flatValues - err = tx.Commit() - if err != nil { - supressionSyncMu.Unlock() - log.Printf("postSubscribeEmail.CommitSuppressions: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + } else { + cfgMonitor.RequestBody = v.Body.String } } - lastSuppressionSync = time.Now().UTC() + + cfgMonitors[v.Slug] = cfgMonitor } - supressionSyncMu.Unlock() - tx, err := rwDB.Begin() + services, err := listServices(tx) if err != nil { - log.Printf("postSubscribeEmail.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return cfgStr, fmt.Errorf("generateConfig.listServices: %w", err) } - defer tx.Rollback() - sub, err := getAlertSubscriptionByEmail(tx, email) + cfgServices := map[string]StatusnookConfigService{} + for _, v := range services { + cfgServices[v.Slug] = StatusnookConfigService{Name: v.Name, Description: v.HelperText} + } + + smtpNotificationChannelID, err := getAlertSMTPNotificationSetting(tx) if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("postSubscribeEmail.getAlertSubscriptionByEmail: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return cfgStr, fmt.Errorf("generateConfig.getAlertSMTPNotificationSetting: %w", err) } - if sub.Active { - w.Write([]byte(` - -
-
- - - -
- - This email address is already subscribed to receive updates - + var smtpNotificationChannel NotificationChannel + if smtpNotificationChannelID != 0 { + smtpNotificationChannel, err = getNotificationChannelByID(tx, smtpNotificationChannelID) + if err != nil { + return cfgStr, fmt.Errorf("generateConfig.getNotificationChannelByID: %w", err) + } + } - -
+ alertSettings, err := getAlertSettings(tx) + if err != nil { + return cfgStr, fmt.Errorf("generateConfig.getAlertSettings: %w", err) + } - -
- `)) - return + cfg := StatusnookConfig{ + MailGroups: cfgMailGroups, + NotificationChannels: cfgNotificationChannels, + Monitors: cfgMonitors, + Services: cfgServices, + AlertNotificationSettings: StatusnookConfigAlertNotificationSettings{ + EmailNotificationChannel: smtpNotificationChannel.Slug, + ManagedSubscriptions: alertSettings.ManagedSubscriptions, + SlackClientSecret: alertSettings.SlackClientSecret, + SlackInstallURL: alertSettings.SlackInstallURL, + }, + GeneralSettings: StatusnookConfigGeneralSettings{Name: metaName}, } - const markup = ` - -
-
- - - -
- - To complete your subscription, click on the confirmation link which will arrive in your inbox - in next few minutes - + cfgBytes, err := yaml.Marshal(cfg) + if err != nil { + return cfgStr, fmt.Errorf("generateConfig.Marshal: %w", err) + } - -
+ cfgStr = string(cfgBytes) - -
- ` + return cfgStr, nil +} - hasRecentPendingSub, err := checkHasRecentPendingEmailAlertSubscription(tx, email, time.Now().UTC()) - if err != nil { - log.Printf("postSubscribeEmail.checkHasRecentPendingEmailAlertSubscription: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } +func main() { + portFlag := flag.Int("port", 80, "") + selfSignedFlag := flag.Bool("generate-self-signed-cert", false, "") - if hasRecentPendingSub { - w.Write([]byte(markup)) + flag.Parse() + + if *selfSignedFlag { + GenerateSelfSignedCertificate() return } - tokenBytes := make([]byte, 32) - _, err = rand.Read(tokenBytes) + db = initDB(false) + + rwDB = initDB(true) + rwDB.SetMaxOpenConns(1) + + tx, err := db.Begin() if err != nil { - log.Printf("postSubscribeEmail.Read: %s", err) - w.WriteHeader(http.StatusInternalServerError) + log.Fatalf("main.Begin: %s", err) return } - token := base64.URLEncoding.EncodeToString(tokenBytes) + defer tx.Rollback() - err = createPendingEmailAlertSubscription(tx, token, email, time.Now().UTC()) - if err != nil { - log.Printf("postSubscribeEmail.createPendingEmailAlertSubscription: %s", err) - w.WriteHeader(http.StatusInternalServerError) + setup, err := getMetaValue(tx, "setup") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueSetup: %s", err) return } + metaSetup = setup - notificationID, err := getAlertSMTPNotificationSetting(tx) - if err != nil { - log.Printf("postSubscribeEmail.getAlertSMTPNotificationSetting: %s", err) - w.WriteHeader(http.StatusInternalServerError) + name, err := getMetaValue(tx, "name") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueName: %s", err) return } + metaName = name - channel, err := getNotificationChannelByID(tx, notificationID) - if err != nil { - log.Printf("postSubscribeEmail.getNotificationChannelByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) + domain, err := getMetaValue(tx, "domain") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueDomain: %s", err) return } + metaDomain = domain - smtpDetail, ok := channel.Details.(SMTPNotificationDetails) - if !ok { - log.Printf("postSubscribeEmail.NotificationDetailsAssert: %s", err) - w.WriteHeader(http.StatusInternalServerError) + unconfirmedDomain, err := getMetaValue(tx, "unconfirmedDomain") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueUnconfirmedDomain: %s", err) return } + metaUnconfirmedDomain = unconfirmedDomain - msg := [][]byte{ - []byte("Subject: Confirm your subscription to " + metaName + " status alerts"), - []byte("To: " + email), - []byte("From: " + metaName + " " + "<" + smtpDetail.From + ">"), - []byte("Content-Type: text/html; charset=UTF-8"), + unconfirmedDomainProblem, err := getMetaValue(tx, "unconfirmedDomainProblem") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueUnconfirmedDomainProblem: %s", err) + return } - for k, v := range smtpDetail.Headers { - if strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") && - k == "X-PM-Message-Stream" { - continue - } - msg = append(msg, []byte(k+": "+v)) + metaUnconfirmedDomainProblem = unconfirmedDomainProblem + + configFileEnabled, err := getMetaValue(tx, "configFileEnabled") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueConfigFileEnabled: %s", err) + return } - if strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { - msg = append(msg, []byte("X-PM-Message-Stream: "+smtpDetail.Misc["pm-transactional"])) + if configFileEnabled == "true" { + metaConfigFileEnabled = true } - const emailTmpl = `Hi,

- -To start receiving status alert emails from {{.Name}}, please confirm your subscription. -

- -If this email reached you by mistake, feel free to ignore it and we won't subscribe you. -` - - tmpl, err := parseEmailTmpl("alertConfirm", emailTmpl) - if err != nil { - log.Printf("postSubscribeEmail.parseEmailTmpls: %s", err) - w.WriteHeader(http.StatusInternalServerError) + ssl, err := getMetaValue(tx, "ssl") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueSSL: %s", err) return } + if errors.Is(err, sql.ErrNoRows) { + metaSSL = "true" + if BUILD == "dev" || *portFlag != 80 { + metaSSL = "false" + } - protocol := "https" - if BUILD == "dev" { - protocol = "http" + err = updateMetaValue(tx, "ssl", metaSSL) + if err != nil { + log.Printf("main.updateMetaValueSSL: %s", err) + return + } + } else { + metaSSL = ssl } - emailBytes := bytes.Buffer{} - - err = tmpl.Execute( - &emailBytes, - struct { - Name string - Link string - }{ - Name: metaName, - Link: protocol + "://" + metaDomain + "/subscribe/email/confirm?token=" + token, - }, - ) + _, err = getMetaValue(tx, "secretKey") if err != nil { - log.Printf("postSubscribeEmail.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("main.getMetaValueSecretKey: %s", err) + return + } - emailStr := "\r\n" + emailBytes.String() + keyBytes := make([]byte, 32) + _, err = rand.Read(keyBytes) + if err != nil { + log.Printf("main.Read: %s", err) + return + } - msg = append(msg, []byte(emailStr)) + keyB64 := base64.StdEncoding.EncodeToString(keyBytes) - err = smtp.SendMail( - smtpDetail.Host+":"+strconv.Itoa(smtpDetail.Port), - PlainOrLoginAuth( - smtpDetail.Username, - smtpDetail.Password, - smtpDetail.Host, - ), - smtpDetail.From, - []string{email}, - bytes.Join(msg, []byte("\r\n")), - ) - if err != nil { - log.Printf("postSubscribeEmail.SendMail: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + err = updateMetaValue(tx, "secretKey", keyB64) + if err != nil { + log.Printf("main.updateMetaValueSecretKey: %s", err) + return + } } err = tx.Commit() if err != nil { - log.Printf("postSubscribeEmail.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) + log.Fatalf("main.Commit: %s", err) return } - w.Write([]byte(markup)) -} - -func updatePendingEmailAlertSubscription(tx *sql.Tx, confirmedAt time.Time, token string) error { - const query = ` - update pending_email_alert_subscription set confirmed_at = ? where token = ? - ` - - _, err := tx.Exec(query, confirmedAt, token) - if err != nil { - return fmt.Errorf("updatePendingEmailAlertSubscription.Exec: %w", err) + r := chi.NewRouter() + if BUILD == "dev" { + r.Use(middleware.Logger) } + if BUILD == "release" && metaSSL == "true" { + r.Use(func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if certmagic.DefaultACME.HandleHTTPChallenge(w, r) { + return + } - return nil -} - -func getAlertSubscriptionByEmail(tx *sql.Tx, email string) (AlertSubscription, error) { - const query = ` - select id, type, destination, meta, active from alert_subscription - where type = 'email' and destination = ? - ` + if r.TLS == nil { + toURL := "https://" - var sub AlertSubscription - err := tx.QueryRow(query, email).Scan( - &sub.ID, - &sub.Type, - &sub.Destination, - &sub.Meta, - &sub.Active, - ) - if err != nil { - return sub, fmt.Errorf("getAlertSubscriptionByEmail.Scan: %w", err) - } + requestHost, _, err := net.SplitHostPort(r.Host) + if err != nil { + requestHost = r.Host + } - return sub, nil -} + toURL += requestHost + toURL += r.URL.RequestURI() -func getPendingEmailAlertSubscriptionEmailByToken(tx *sql.Tx, token string) (string, error) { - const query = ` - select email from pending_email_alert_subscription where token = ? and confirmed_at is null - ` + w.Header().Set("Connection", "close") - var email string + http.Redirect(w, r, toURL, http.StatusFound) - err := tx.QueryRow(query, token).Scan(&email) - if err != nil { - return email, fmt.Errorf("getPendingEmailAlertSubscriptionEmailByToken.Scan: %w", err) + return + } + h.ServeHTTP(w, r) + }) + }) } + r.Use(func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if metaSetup != "done" && + !strings.HasPrefix(r.URL.Path, "/setup") && + !strings.HasPrefix(r.URL.Path, "/static") { + http.Redirect(w, r, "/setup", http.StatusFound) + return + } + h.ServeHTTP(w, r) + }) + }) + r.Use(func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() + if err != nil { + log.Printf("adminMiddleware.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - return email, nil -} + sessionToken, err := r.Cookie("session") + if err != nil { + tx.Rollback() + h.ServeHTTP(w, r) + return + } -func getSubscribeEmailConfirm(w http.ResponseWriter, r *http.Request) { - const markup = ` - {{define "title"}}Subscribe{{end}} - {{define "body"}} - - {{end}} - ` - tmpl, err := parseTmpl("getSubscribeEmailConfirm", markup) - if err != nil { - log.Printf("getSubscribeEmailConfirm.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if err = tx.Commit(); err != nil { + log.Printf("adminMiddleware.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - err = tmpl.Execute( - w, - struct { - Ctx pageCtx - }{ - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("getSubscribeEmailConfirm.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } -} - -func postSubscribeEmailConfirm(w http.ResponseWriter, r *http.Request) { - token := r.URL.Query().Get("token") - if token == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + ctx := context.WithValue( + r.Context(), + authCtxKey{}, + authCtx{ + ID: id, + CSRFToken: csrfToken, + }, + ) - tx, err := db.Begin() - if err != nil { - log.Printf("postSubscribeEmailConfirm.BeginRead: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + h.ServeHTTP(w, r.WithContext(ctx)) + }) + }) - notificationChannelID, err := getAlertSMTPNotificationSetting(tx) - if err != nil { - log.Printf("postSubscribeEmailConfirm.getAlertSMTPNotificationSetting: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + fs := http.FileServer(http.FS(staticFS)) + r.Get("/static/*", neuter(fs).ServeHTTP) + r.Route("/", func(r chi.Router) { + r.Use(statusMiddleware) + r.Get("/", index) + r.Get("/resolve", getResolve) + r.Get("/cross-auth", getCrossAuth) + r.Get("/history", history) + r.Get("/unsubscribe", getUnsubscribe) + r.Post("/unsubscribe", postUnsubscribe) + r.Post("/resubscribe", postResubscribe) + r.Get("/invitation/{token}", getInvitation) + r.Post("/invitation/{token}", postInvitation) + r.Post("/github-config-webhook", configWebhook) + }) + r.Route("/admin", func(r chi.Router) { + r.Use(csrfMiddleware) + r.Use(statusMiddleware) + r.Use(func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := getAuthCtx(r) - smtpNotificationChannel, err := getNotificationChannelByID(tx, notificationChannelID) - if err != nil { - log.Printf("postSubscribeEmailConfirm.getNotificationChannelByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if ctx.ID == 0 { + http.Redirect(w, r, "/login", http.StatusFound) + return + } - email, err := getPendingEmailAlertSubscriptionEmailByToken(tx, token) - if err != nil { - log.Printf("postSubscribeEmailConfirm.getPendingEmailAlertSubscriptionEmailByToken: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + h.ServeHTTP(w, r) + }) + }) + r.Get("/", adminIndex) + r.Post("/resolve", postResolve) + r.Route("/alerts", func(r chi.Router) { + r.Get("/", alerts) + r.Route("/notifications", func(r chi.Router) { + r.Get("/", getAlertNotifications) + r.Post("/", postAlertNotifications) + }) + r.Get("/{id}", getAlert) + r.Delete("/{id}", deleteAlert) + r.Get("/create", getCreateAlert) + r.Post("/create", postCreateAlert) + r.Get("/{id}/edit", getEditAlert) + r.Post("/{id}/edit", postEditAlert) + r.Get("/{id}/messages", getAddAlertMessage) + r.Post("/{id}/messages", postAddAlertMessage) + r.Post("/{id}/resolve", postResolveAlert) + r.Post("/{id}/unresolve", postUnresolveAlert) + r.Delete("/{id}/messages/{messageID}", deleteAlertMessage) + r.Get("/{id}/messages/{messageID}", getEditAlertMessage) + r.Post("/{id}/messages/{messageID}", postEditAlertMessage) + }) + r.Route("/monitors", func(r chi.Router) { + r.Get("/", monitors) + r.Get("/{id}", getMonitor) + r.Get("/{id}/all", getMonitorAllLogs) + r.Get("/{id}/poll", getMonitorPoll) + r.Delete("/{id}", deleteMonitor) + r.Get("/create", getCreateMonitor) + r.Post("/create", postCreateMonitor) + r.Get("/{id}/edit", getEditMonitor) + r.Post("/{id}/edit", postEditMonitor) + r.Get("/{id}/view", getDetailsMonitor) + }) + r.Route("/services", func(r chi.Router) { + r.Get("/", services) + r.Get("/create", getCreateService) + r.Post("/create", postCreateService) + r.Delete("/{id}", deleteService) + r.Get("/{id}/edit", getEditService) + r.Post("/{id}/edit", postEditService) + }) + r.Route("/notifications", func(r chi.Router) { + r.Get("/", notifications) + r.Get("/create", getCreateNotification) + r.Post("/create", postCreateNotification) + r.Delete("/{id}", deleteNotificationChannel) + r.Get("/{id}/edit", getEditNotification) + r.Post("/{id}/edit", postEditNotification) + r.Get("/{id}/view", getViewNotification) + r.Route("/mail-groups", func(r chi.Router) { + r.Get("/create", getCreateMailGroup) + r.Post("/create", postCreateMailGroup) + r.Get("/{id}/edit", getEditMailGroup) + r.Post("/{id}/edit", postEditMailGroup) + r.Get("/{id}/view", getViewMailGroup) + r.Delete("/{id}", deleteMailGroup) + }) + }) + r.Route("/update", func(r chi.Router) { + r.Get("/", update) + r.Get("/check", updateCheck) + r.Get("/after-update", afterUpdate) + r.Post("/", postUpdate) + }) + r.Route("/settings", func(r chi.Router) { + r.Get("/", getSettings) + r.Post("/", postSettings) + r.Post("/cancel-domain", postSettingsCancelDomain) + r.Get("/users/{id}/edit", getEditUser) + r.Post("/users/{id}/edit", postEditUser) + r.Delete("/users/{id}", deleteUser) + r.Post("/users/invite", postInviteUser) + r.Delete("/users/invite/{id}", postDeleteInvite) + r.Post("/config", postConfig) + r.Route("/config-settings", func(r chi.Router) { + r.Get("/", getConfigSettings) + r.Post("/", postConfigSettings) + r.Post("/generate-webhook-secret", postGenerateWebhookSecret) + }) + r.Post("/secrets", postSecret) + }) + }) + r.Route("/login", func(r chi.Router) { + r.Get("/", getLogin) + r.Post("/", postLogin) + }) + r.Route("/logout", func(r chi.Router) { + r.Use(csrfMiddleware) + r.Post("/", logout) + }) + r.Route("/setup", func(r chi.Router) { + r.Use(func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() + if err != nil { + log.Printf("Setup.Begin: %s", err) + return + } + defer tx.Rollback() - sub, err := getAlertSubscriptionByEmail(tx, email) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("postSubscribeEmailConfirm.getAlertSubscriptionByEmail: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + v, err := getMetaValue(tx, "setup") + if err != nil { + log.Printf("Setup.getMetaValue: %s", err) + return + } - if sub.Active { - return - } + err = tx.Commit() + if err != nil { + log.Printf("Setup.Commit: %s", err) + return + } - smtpDetail, ok := smtpNotificationChannel.Details.(SMTPNotificationDetails) - if !ok { - log.Printf("postSubscribeEmailConfirm.Details: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if v == "done" { + http.Redirect(w, r, "/", http.StatusFound) + return + } - alertSettings, err := getAlertSettings(tx) - if err != nil { - log.Printf("postSubscribeEmailConfirm.getAlertSettings: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if r.URL.Path == "/setup/statusnook" { + h.ServeHTTP(w, r) + return + } - err = tx.Commit() - if err != nil { - log.Printf("postSubscribeEmailConfirm.CommitRead: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if v == "domain" && r.URL.Path == "/setup/skip-domain" { + h.ServeHTTP(w, r) + return + } - if !alertSettings.ManagedSubscriptions && - strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { - err = postmarkDeleteSuppression(email, smtpDetail.Password, smtpDetail.Misc["pm-broadcast"]) - if err != nil { - log.Printf("postSubscribeEmailConfirm.postmarkDeleteSuppression: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - } + endpoints := map[string]string{ + "domain": "/setup/domain", + "account": "/setup/account", + "name": "/setup/name", + "done": "/", + } - tx, err = rwDB.Begin() - if err != nil { - log.Printf("postSubscribeEmailConfirm.BeginUpdate: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + url, ok := endpoints[v] + if !ok { + log.Printf("Setup.endpoints: no endpoint") + return + } - err = updatePendingEmailAlertSubscription(tx, time.Now().UTC(), token) - if err != nil { - log.Printf("postSubscribeEmailConfirm.updatePendingEmailAlertSubscription: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if r.URL.Path == "/setup" || r.URL.Path != url { + if r.Method == http.MethodGet { + http.Redirect(w, r, url, http.StatusFound) + } else { + w.WriteHeader(http.StatusBadRequest) + } + return + } - tokenBytes := make([]byte, 32) - _, err = rand.Read(tokenBytes) - if err != nil { - log.Printf("postSubscribeEmailConfirm.Read: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + h.ServeHTTP(w, r) + }) + }) + r.Post("/statusnook", postSetupStatusnook) + r.Options("/statusnook", postSetupStatusnook) + r.Get("/domain", getSetupDomain) + r.Post("/domain", postSetupDomain) + r.Post("/skip-domain", postSetupDomainSkip) + r.Get("/account", getSetupAccount) + r.Post("/account", postSetupAccount) + r.Get("/name", getSetupName) + r.Post("/name", postSetupName) + }) + r.Get("/callback/slack", slackOAuth2Callback) + r.Post("/subscribe/email", postSubscribeEmail) + r.Get("/subscribe/email/confirm", getSubscribeEmailConfirm) + r.Post("/subscribe/email/confirm", postSubscribeEmailConfirm) + r.Post("/test", func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("aa") == "" { + w.WriteHeader(http.StatusInternalServerError) + } + }) - err = createAlertSubscription( - tx, - "email", - email, - base64.URLEncoding.EncodeToString(tokenBytes), - ) - if err != nil { - log.Printf("postSubscribeEmailConfirm.createAlertSubscription: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + appCtx, cancelAppCtx = context.WithCancel(context.Background()) - err = tx.Commit() - if err != nil { - log.Printf("postSubscribeEmailConfirm.CommitUpdate: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + shutdownCh := make(chan os.Signal, 1) + signal.Notify(shutdownCh, os.Interrupt, syscall.SIGTERM, syscall.SIGINT) - http.Redirect(w, r, "/?email_subscribed=1", http.StatusFound) -} + appWg.Add(1) + go monitorLoop(appCtx, &appWg) -func getUnsubscribe(w http.ResponseWriter, r *http.Request) { - token := r.URL.Query().Get("token") - if token == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + appWg.Add(1) + go notificationLoop(appCtx, &appWg) - const markup = ` - {{define "title"}}Unsubscribe{{end}} - {{define "body"}} -
-

Please confirm you want to unsubscribe from alerts

- - -
- {{end}} - ` + var httpServer *http.Server + var httpsServer *http.Server - tmpl, err := parseTmpl("unsubscribe", markup) - if err != nil { - log.Printf("getUnsubscribeEmail.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if BUILD == "dev" { + httpLn, err := net.Listen("tcp", fmt.Sprintf(":%d", 8000)) + if err != nil { + log.Fatalf("main.ListenHTTPS: %s", err) + } - err = tmpl.Execute( - w, - struct { - Name string - Token string - Ctx pageCtx - }{ - Name: metaName, - Token: token, - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("getUnsubscribeEmail.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } -} + httpServer = &http.Server{ + Handler: r, + BaseContext: func(listener net.Listener) context.Context { return appCtx }, + } -func postUnsubscribe(w http.ResponseWriter, r *http.Request) { - token := r.PostFormValue("token") - if token == "" { - token = r.URL.Query().Get("token") + go httpServer.Serve(httpLn) + } else { + host := "" + if !*dockerFlag && *portFlag != 80 { + host = "127.0.0.1" + } + + httpLn, err := net.Listen("tcp", fmt.Sprintf("%s:%d", host, *portFlag)) + if err != nil { + log.Fatalf("main.ListenHTTP: %s", err) + } + + httpServer = &http.Server{ + ReadHeaderTimeout: 10 * time.Second, + ReadTimeout: 30 * time.Second, + WriteTimeout: 2 * time.Minute, + IdleTimeout: 5 * time.Minute, + Handler: r, + BaseContext: func(listener net.Listener) context.Context { return appCtx }, + } + + go httpServer.Serve(httpLn) + + if metaSSL == "true" { + certmagic.Default.Storage = &certmagic.FileStorage{Path: "certmagic"} + certmagic.DefaultACME.Agreed = true + certmagic.DefaultACME.CA = CA + certmagic.DefaultACME.Email = " " + + domains := []string{} + if domain != "" { + domains = append(domains, metaDomain) + } + + tlsConfig, err := certmagic.TLS(domains) + if err != nil { + log.Fatalf("main.TLS: %s", err) + } + tlsConfig.NextProtos = append([]string{"h2", "http/1.1"}, tlsConfig.NextProtos...) + getCertificateCertMagic := tlsConfig.GetCertificate + tlsConfig.GetCertificate = func(clientHello *tls.ClientHelloInfo) (*tls.Certificate, error) { + certificate, err := getCertificateCertMagic(clientHello) + if err != nil { + certificate, err := tls.LoadX509KeyPair( + SELF_SIGNED_CERT_NAME, + SELF_SIGNED_KEY_NAME, + ) + if err != nil { + log.Printf("main.LoadX509KeyPair: %s", err) + return &certificate, err + } + + return &certificate, nil + } + + return certificate, nil + } + + httpsLn, err := tls.Listen("tcp", fmt.Sprintf(":%d", 443), tlsConfig) + if err != nil { + log.Fatalf("main.ListenHTTPS: %s", err) + } + + httpsServer = &http.Server{ + ReadHeaderTimeout: 10 * time.Second, + ReadTimeout: 30 * time.Second, + WriteTimeout: 2 * time.Minute, + IdleTimeout: 5 * time.Minute, + Handler: r, + BaseContext: func(listener net.Listener) context.Context { return appCtx }, + } + + go httpsServer.Serve(httpsLn) + + if unconfirmedDomain != "" && unconfirmedDomainProblem == "" { + appWg.Add(1) + go monitorUnconfirmedDomainLoop(appCtx, &appWg) + } + } } - if token == "" { - w.WriteHeader(http.StatusBadRequest) - return + <-shutdownCh + cancelAppCtx() + appWg.Wait() + + if err := httpServer.Shutdown(context.Background()); err != nil { + panic(err) } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postUnsubscribe.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if httpsServer != nil { + if err := httpsServer.Shutdown(context.Background()); err != nil { + panic(err) + } } - defer tx.Rollback() - err = updateEmailAlertSubscriptionActiveByMeta(tx, token, false) + err = db.Close() if err != nil { - log.Printf("postUnsubscribe.updateEmailAlertSubscriptionActiveByMeta: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + log.Printf("main.DBClose: %s", err) } - err = tx.Commit() + err = rwDB.Close() if err != nil { - log.Printf("postUnsubscribe.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + log.Printf("main.rwDBClose: %s", err) } +} - const markup = ` - {{define "title"}}You've been unsubscribed{{end}} - {{define "body"}} -
-

You've been unsubscribed

- - -
- {{end}} +type AlertSubscription struct { + ID int + Type string + Destination string + Meta string + Active bool +} + +func listActiveAlertEmailSubscriptions(tx *sql.Tx) ([]AlertSubscription, error) { + const query = ` + select id, type, destination, meta, active from alert_subscription + where type = 'email' and active = true ` - tmpl, err := parseTmpl("postUnsubscribe", markup) + var subs []AlertSubscription + + rows, err := tx.Query(query) if err != nil { - log.Printf("postUnsubscribe.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return subs, fmt.Errorf("listActiveAlertEmailSubscriptions.Query: %w", err) } + defer rows.Close() - err = tmpl.Execute( - w, - struct { - Name string - Token string - Ctx pageCtx - }{ - Name: metaName, - Token: token, - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("postUnsubscribe.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + for rows.Next() { + var sub AlertSubscription + + err := rows.Scan( + &sub.ID, + &sub.Type, + &sub.Destination, + &sub.Meta, + &sub.Active, + ) + if err != nil { + return subs, fmt.Errorf("listActiveAlertEmailSubscriptions.Scan: %w", err) + } + + subs = append(subs, sub) } + + return subs, nil } -func postResubscribe(w http.ResponseWriter, r *http.Request) { - token := r.PostFormValue("token") - if token == "" { - w.WriteHeader(http.StatusBadRequest) - return - } +func deleteAlertSubscriptionByMeta(tx *sql.Tx, meta string) error { + const query = ` + delete from alert_subscription where meta = ? + ` - tx, err := rwDB.Begin() + _, err := tx.Exec(query, meta) if err != nil { - log.Printf("postResubscribe.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("deleteAlertSubscriptionByMeta.Exec: %w", err) } - defer tx.Rollback() - err = updateEmailAlertSubscriptionActiveByMeta(tx, token, true) - if err != nil { - log.Printf("postResubscribe.updateEmailAlertSubscriptionActiveByMeta: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + return nil +} - err = tx.Commit() +func updateEmailAlertSubscriptionActiveByMeta(tx *sql.Tx, meta string, active bool) error { + const query = ` + update alert_subscription set active = ? where meta = ? and type = 'email' + ` + + _, err := tx.Exec(query, active, meta) if err != nil { - log.Printf("postResubscribe.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("updateEmailAlertSubscriptionActiveByMeta.Exec: %w", err) } - const markup = ` - {{define "title"}}You've been re-subscribed{{end}} - {{define "body"}} -
-

You've been re-subscribed

-
- {{end}} + return nil +} + +func updateEmailAlertSubscriptionActiveByEmail(tx *sql.Tx, email string, active bool) error { + const query = ` + update alert_subscription set active = ? where destination = ? and type = 'email' ` - tmpl, err := parseTmpl("postResubscribe", markup) + _, err := tx.Exec(query, active, email) if err != nil { - log.Printf("postResubscribe.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("updateEmailAlertSubscriptionActiveByEmail.Exec: %w", err) } - err = tmpl.Execute( - w, - struct { - Name string - Token string - Ctx pageCtx - }{ - Name: metaName, - Token: token, - Ctx: getPageCtx(r), - }, - ) + return nil +} + +func createAlertSubscription(tx *sql.Tx, subscriptionType string, destination string, meta string) error { + const query = ` + insert into alert_subscription(type, destination, meta) values(?, ?, nullif(?, '')) + on conflict(type, destination) do update set active = true + ` + + _, err := tx.Exec(query, subscriptionType, destination, meta) if err != nil { - log.Printf("postResubscribe.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("createAlertSubscription.Exec: %w", err) } + + return nil } -func getInvitation(w http.ResponseWriter, r *http.Request) { - inviteToken := chi.URLParam(r, "token") - if inviteToken == "" { +type SlackOAuthAccessResponse struct { + OK bool `json:"ok"` + Team struct { + ID string `json:"id"` + } `json:"team"` + IncomingWebhook struct { + URL string `json:"url"` + ChannelID string `json:"channel_id"` + } `json:"incoming_webhook"` +} + +func slackOAuth2Callback(w http.ResponseWriter, r *http.Request) { + code := r.URL.Query().Get("code") + if code == "" { w.WriteHeader(http.StatusBadRequest) return } - tx, err := db.Begin() + tx, err := rwDB.Begin() if err != nil { - log.Printf("getInvitation.Begin: %s", err) + log.Printf("slackOAuth2Callback.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - _, err = validateUserInvitationToken(tx, inviteToken, time.Now().UTC().Add(-time.Hour*24)) + settings, err := getAlertSettings(tx) if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusBadRequest) - return - } - log.Printf("getInvitation.validateUserInvitationToken: %s", err) + log.Printf("slackOAuth2Callback.getAlertSettings: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() + slackInstallURL, err := url.ParseRequestURI(settings.SlackInstallURL) if err != nil { - log.Printf("getInvitation.Commit: %s", err) + log.Printf("slackOAuth2Callback.ParseRequestURI: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}You're invited to create an admin user{{end}} - {{define "body"}} -
-
-
-
- - - -
-

You're invited to create an admin user

-
-
-
- - - - - - - -
-
-
- {{end}} - ` + form := url.Values{} + form.Add("code", code) + form.Add("client_id", slackInstallURL.Query().Get("client_id")) + form.Add("client_secret", settings.SlackClientSecret) - tmpl, err := parseTmpl("getInvitation", markup) + resp, err := http.PostForm("https://slack.com/api/oauth.v2.access", form) if err != nil { - log.Printf("getInvitation.parseTmpl: %s", err) + log.Printf("slackOAuth2Callback.PostForm: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute(w, nil) + respBody, err := io.ReadAll(resp.Body) if err != nil { - log.Printf("getInvitation.Execute: %s", err) + log.Printf("slackOAuth2Callback.ReadAll: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} + defer resp.Body.Close() -func postInvitation(w http.ResponseWriter, r *http.Request) { - inviteToken := chi.URLParam(r, "token") - if inviteToken == "" { - w.WriteHeader(http.StatusBadRequest) + if resp.StatusCode != 200 { + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := rwDB.Begin() + accessResponse := SlackOAuthAccessResponse{} + + err = json.Unmarshal(respBody, &accessResponse) if err != nil { - log.Printf("postInvitation.Begin: %s", err) + log.Printf("slackOAuth2Callback.Unmarshal: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - id, err := validateUserInvitationToken(tx, inviteToken, time.Now().UTC().Add(-time.Hour*24)) - if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusBadRequest) - return - } - log.Printf("postInvitation.validateUserInvitationToken: %s", err) + if !accessResponse.OK { w.WriteHeader(http.StatusInternalServerError) return } - err = deleteUserInvitation(tx, id) + meta := accessResponse.Team.ID + "_" + accessResponse.IncomingWebhook.ChannelID + + err = deleteAlertSubscriptionByMeta(tx, meta) if err != nil { - log.Printf("postInvitation.deleteUserInvitation: %s", err) + log.Printf("slackOAuth2Callback.deleteAlertSubscriptionByMeta: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - username := r.PostFormValue("username") - if username == "" { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Username is required -
- `)) + err = createAlertSubscription( + tx, + "slack", + accessResponse.IncomingWebhook.URL, + meta, + ) + if err != nil { + log.Printf("slackOAuth2Callback.createAlertSubscription: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - password := r.PostFormValue("password") - passwordConfirmation := r.PostFormValue("password-confirmation") - - if password != passwordConfirmation { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Passwords do not match -
- `)) + err = tx.Commit() + if err != nil { + log.Printf("slackOAuth2Callback.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if len(password) < 8 { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Password must contain at least 8 characters -
- `)) - return - } - - pwHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) - if err != nil { - log.Printf("postInvitation.GenerateFromPassword: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + http.Redirect(w, r, "/?slack_app_installed=1", http.StatusFound) +} - userID, err := createUser(tx, username, string(pwHash)) - if err != nil { - var sqliteErr sqlite3.Error - if errors.As(err, &sqliteErr) { - if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- This username is already taken -
- `)) - return - } +func postmarkDeleteSuppression(email string, token string, stream string) error { + body := fmt.Sprintf( + ` + { + "Suppressions": [ + { + "EmailAddress": "%s" + } + ] } - log.Printf("postInvitation.createUser: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + `, + email, + ) - tokenBytes := make([]byte, 32) - _, err = rand.Read(tokenBytes) - if err != nil { - log.Printf("postInvitation.Read: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + httpClient := http.Client{ + Timeout: time.Second * 10, } - csrfTokenBytes := make([]byte, 32) - _, err = rand.Read(csrfTokenBytes) + req, err := http.NewRequest( + http.MethodPost, + "https://api.postmarkapp.com/message-streams/"+stream+"/suppressions/delete", + strings.NewReader(body), + ) if err != nil { - log.Printf("postInvitation.Read2: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("postmarkDeleteSuppression.NewRequest: %w", err) } - token := base64.StdEncoding.EncodeToString(tokenBytes) - csrfToken := base64.StdEncoding.EncodeToString(csrfTokenBytes) + req.Header.Add("Content-Type", "application/json") + req.Header.Add("X-Postmark-Server-Token", token) - err = createSession(tx, token, csrfToken, userID) + resp, err := httpClient.Do(req) if err != nil { - log.Printf("postInvitation.createSession: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return fmt.Errorf("postmarkDeleteSuppression.Do: %w", err) } + defer resp.Body.Close() - if err = tx.Commit(); err != nil { - log.Printf("postInvitation.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("postmarkDeleteSuppression.ReadAll: %w", err) } - http.SetCookie( - w, - &http.Cookie{ - Name: "session", - Value: token, - Path: "/", - Expires: time.Now().UTC().Add(time.Hour * 876600), - Secure: BUILD == "release", - HttpOnly: true, - SameSite: http.SameSiteLaxMode, - }, - ) + if resp.StatusCode != 200 { + return fmt.Errorf("postmarkDeleteSuppression.StatusCode: %s", string(respBody)) + } - w.Header().Add("HX-Location", "/admin/alerts") + return nil } -func getOngoingAlerts(tx *sql.Tx) ([]AlertDetail, error) { - const alertQuery = ` - select - id, - title, - type, - severity, - created_at, - ended_at - from - alert - where - ended_at is null - order by case - when severity = 'red' then 1 - when severity = 'amber' then 2 - else 3 - end asc +func checkHasRecentPendingEmailAlertSubscription(tx *sql.Tx, email string, now time.Time) (bool, error) { + const query = ` + select exists( + select 1 from pending_email_alert_subscription where email = ? + and created_at > datetime(?, '-10 minutes') + ) ` - alerts := []AlertDetail{} + var hasRecent bool - rows, err := tx.Query(alertQuery) + err := tx.QueryRow(query, email, now).Scan(&hasRecent) if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Query: %w", err) + return hasRecent, fmt.Errorf("checkHasRecentPendingEmailAlertSubscription.Exec: %w", err) } - defer rows.Close() - for rows.Next() { - alert := AlertDetail{} - err = rows.Scan( - &alert.ID, - &alert.Title, - &alert.AlertType, - &alert.Severity, - &alert.CreatedAt, - &alert.EndedAt, - ) - if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Scan: %w", err) - } + return hasRecent, nil +} - alerts = append(alerts, alert) +func createPendingEmailAlertSubscription(tx *sql.Tx, token string, email string, createdAt time.Time) error { + const query = ` + insert into pending_email_alert_subscription(token, email, created_at) + values(?, ?, ?) + ` + + _, err := tx.Exec(query, token, email, createdAt) + if err != nil { + return fmt.Errorf("createPendingEmailAlertSubscription.Exec: %w", err) } - alertIDs := make([]string, 0, len(alerts)) - for _, alert := range alerts { - alertIDs = append(alertIDs, strconv.Itoa(alert.ID)) + return nil +} + +type SupressionDumpResponse struct { + Suppressions []Supression +} + +type Supression struct { + EmailAddress string + SuppressionReason string + Origin string + CreatedAt time.Time +} + +func postmarkDumpSupressions(token string, stream string) (SupressionDumpResponse, error) { + httpClient := http.Client{ + Timeout: time.Second * 10, } - messageQuery := fmt.Sprintf( - ` - select - id, - content, - created_at, - last_updated_at, - alert_id - from - alert_message - where - alert_id in(%s) - order by created_at desc - `, - strings.Join(alertIDs, ", "), - ) + var supressionsResp SupressionDumpResponse - rows, err = tx.Query(messageQuery) + req, err := http.NewRequest( + http.MethodGet, + "https://api.postmarkapp.com/message-streams/"+stream+"/suppressions/dump"+ + "?SupressionReason=ManualSuppression", + nil, + ) if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Query2: %w", err) + return supressionsResp, fmt.Errorf("postmarkDumpSupressions.NewRequest: %w", err) } - defer rows.Close() - messages := map[int][]AlertDetailMessage{} + req.Header.Add("Content-Type", "application/json") + req.Header.Add("X-Postmark-Server-Token", token) - for rows.Next() { - alertID := 0 - message := AlertDetailMessage{} - err = rows.Scan( - &message.ID, - &message.Content, - &message.CreatedAt, - &message.LastUpdatedAt, - &alertID, - ) - if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Scan2: %w", err) - } + resp, err := httpClient.Do(req) + if err != nil { + return supressionsResp, fmt.Errorf("postmarkDumpSupressions.Do: %w", err) + } + defer resp.Body.Close() - if _, ok := messages[alertID]; !ok { - messages[alertID] = []AlertDetailMessage{} - } - messages[alertID] = append(messages[alertID], message) + body, err := io.ReadAll(resp.Body) + if err != nil { + return supressionsResp, fmt.Errorf("postmarkDumpSupressions.ReadAll: %w", err) } - serviceQuery := fmt.Sprintf( - ` - select - service.id, - service.name, - service.helper_text, - alert_id - from - alert_service - left join - service on service.id = alert_service.service_id - where - alert_id in(%s) - `, - strings.Join(alertIDs, ", "), - ) + if resp.StatusCode != 200 { + return supressionsResp, fmt.Errorf("postmarkDumpSupressions.StatusCode: %s", string(body)) + } - rows, err = tx.Query(serviceQuery) + err = json.Unmarshal(body, &supressionsResp) if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Query3: %w", err) + return supressionsResp, fmt.Errorf("postmarkDumpSupressions.Unmarshal: %w", err) } - defer rows.Close() - services := map[int][]AlertDetailService{} + return supressionsResp, nil +} - for rows.Next() { - alertID := 0 +var lastSuppressionSync time.Time +var supressionSyncMu sync.Mutex - service := AlertDetailService{} - err = rows.Scan( - &service.ID, - &service.Name, - &service.HelperText, - &alertID, - ) +func postSubscribeEmail(w http.ResponseWriter, r *http.Request) { + email := r.PostFormValue("email") + + _, err := mail.ParseAddress(email) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + supressionSyncMu.Lock() + if time.Since(lastSuppressionSync) > time.Second*10 { + tx, err := db.Begin() if err != nil { - return alerts, fmt.Errorf("getOngoingAlerts.Scan3: %w", err) + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.BeginSuppressionsPrep: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - if _, ok := messages[alertID]; !ok { - messages[alertID] = []AlertDetailMessage{} + alertNotificationChannelID, err := getAlertSMTPNotificationSetting(tx) + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.getAlertSMTPNotificationSetting: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - services[alertID] = append(services[alertID], service) - } - for i, alert := range alerts { - if _, ok := messages[alert.ID]; ok { - alerts[i].Messages = messages[alert.ID] + notificationChannel, err := getNotificationChannelByID(tx, alertNotificationChannelID) + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.getNotificationChannelByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - if _, ok := services[alert.ID]; ok { - alerts[i].Services = services[alert.ID] + + smtpDetail, ok := notificationChannel.Details.(SMTPNotificationDetails) + if !ok { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.ChannelAssert: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - } - return alerts, nil -} + alertSettings, err := getAlertSettings(tx) + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.getAlertSettings: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -func index(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() + err = tx.Commit() + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.CommitBeginSuppressionsPrep: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if !alertSettings.ManagedSubscriptions && + strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { + supressions, err := postmarkDumpSupressions(smtpDetail.Password, smtpDetail.Misc["pm-broadcast"]) + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.postmarkDumpSupressions: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + for _, v := range supressions.Suppressions { + tx, err := rwDB.Begin() + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.BeginSuppressions: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + subscription, err := getAlertSubscriptionByEmail(tx, email) + if err != nil { + if !errors.Is(err, sql.ErrNoRows) { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.getAlertSubscriptionByEmail: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + if subscription.ID != 0 { + err = updateEmailAlertSubscriptionActiveByEmail(tx, v.EmailAddress, false) + if err != nil { + supressionSyncMu.Unlock() + log.Printf( + "postSubscribeEmail.updateEmailAlertSubscriptionActiveByEmail: %s", + err, + ) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + err = tx.Commit() + if err != nil { + supressionSyncMu.Unlock() + log.Printf("postSubscribeEmail.CommitSuppressions: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + } + lastSuppressionSync = time.Now().UTC() + } + supressionSyncMu.Unlock() + + tx, err := rwDB.Begin() if err != nil { - log.Printf("index.Begin: %s", err) + log.Printf("postSubscribeEmail.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - services, err := listServices(tx) - if err != nil { - log.Printf("index.listServices: %s", err) + sub, err := getAlertSubscriptionByEmail(tx, email) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("postSubscribeEmail.getAlertSubscriptionByEmail: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - alerts, err := getOngoingAlerts(tx) - if err != nil { - log.Printf("index.getOngoingAlerts: %s", err) - w.WriteHeader(http.StatusInternalServerError) + if sub.Active { + w.Write([]byte(` + +
+
+ + + +
+ + This email address is already subscribed to receive updates + + + +
+ + +
+ `)) return } - alertSettings, err := getAlertSettings(tx) + const markup = ` + +
+
+ + + +
+ + To complete your subscription, click on the confirmation link which will arrive in your inbox + in next few minutes + + + +
+ + +
+ ` + + hasRecentPendingSub, err := checkHasRecentPendingEmailAlertSubscription(tx, email, time.Now().UTC()) if err != nil { - log.Printf("index.getAlertSettings: %s", err) + log.Printf("postSubscribeEmail.checkHasRecentPendingEmailAlertSubscription: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - hasSlackSetup := "" - if alertSettings.SlackClientSecret != "" && alertSettings.SlackInstallURL != "" { - hasSlackSetup = alertSettings.SlackInstallURL + if hasRecentPendingSub { + w.Write([]byte(markup)) + return } - emailAlertChannelID, err := getAlertSMTPNotificationSetting(tx) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("index.getAlertSMTPNotificationSetting: %s", err) + tokenBytes := make([]byte, 32) + _, err = rand.Read(tokenBytes) + if err != nil { + log.Printf("postSubscribeEmail.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + token := base64.URLEncoding.EncodeToString(tokenBytes) - hasEmailAlertChannel := emailAlertChannelID != 0 + err = createPendingEmailAlertSubscription(tx, token, email, time.Now().UTC()) + if err != nil { + log.Printf("postSubscribeEmail.createPendingEmailAlertSubscription: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - err = tx.Commit() + notificationID, err := getAlertSMTPNotificationSetting(tx) if err != nil { - log.Printf("index.Commit: %s", err) + log.Printf("postSubscribeEmail.getAlertSMTPNotificationSetting: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}{{.Ctx.Name}} Status{{end}} - {{define "body"}} -
-
- {{range $service := .Services}} -
-
- {{$service.Name}} - {{$service.HelperText}} -
-
- {{if eq (index $.ServiceStatuses $service.ID) "red"}} - - - - {{else if eq (index $.ServiceStatuses $service.ID) "amber"}} - - - - {{else}} - - - - {{end}} -
-
- {{end}} -
+ channel, err := getNotificationChannelByID(tx, notificationID) + if err != nil { + log.Printf("postSubscribeEmail.getNotificationChannelByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - {{if len .IncidentAlerts}} -
-
- {{range $alert := .IncidentAlerts}} -
-
-
-
- {{if eq $alert.Severity "red"}} - - - - {{else if eq $alert.Severity "amber"}} - - - - {{else}} - - - - {{end}} - {{$alert.Title}} -
- {{$alert.Services}} -
-
-
- {{range $message := $alert.Messages}} -
- {{$message.CreatedAt}} - {{$message.Content}} -
- {{end}} -
-
-
- {{end}} -
-
- {{end}} - - - - View full history - {{if not .Ctx.Auth.ID}} - Manage this page - {{end}} - - - - - - - -
-
- - - -
- Updates will appear in Slack - - -
-
- - - -
- {{end}} - ` - - tmpl, err := parseTmpl("index", markup) - if err != nil { - log.Printf("index.parseTmpl: %s", err) + smtpDetail, ok := channel.Details.(SMTPNotificationDetails) + if !ok { + log.Printf("postSubscribeEmail.NotificationDetailsAssert: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - type FormattedAlertDetailMessage struct { - ID int - Content string - CreatedAt string - LastUpdatedAt string + msg := [][]byte{ + []byte("Subject: Confirm your subscription to " + metaName + " status alerts"), + []byte("To: " + email), + []byte("From: " + metaName + " " + "<" + smtpDetail.From + ">"), + []byte("Content-Type: text/html; charset=UTF-8"), } - - type FormattedAlertDetailService struct { - ID int - Name string - HelperText string + for k, v := range smtpDetail.Headers { + if strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") && + k == "X-PM-Message-Stream" { + continue + } + msg = append(msg, []byte(k+": "+v)) } - - type FormattedAlertDetail struct { - ID int - Title string - AlertType string - Severity string - CreatedAt string - EndedAt string - Messages []FormattedAlertDetailMessage - Services string + if strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { + msg = append(msg, []byte("X-PM-Message-Stream: "+smtpDetail.Misc["pm-transactional"])) } - formattedAlerts := make([]FormattedAlertDetail, 0, len(alerts)) - - for _, alert := range alerts { - messages := make([]FormattedAlertDetailMessage, 0, len(alert.Messages)) - for _, message := range alert.Messages { - createdAt := message.CreatedAt.Format("Jan 2 2006 • 15:04 MST") - if message.CreatedAt.Year() == time.Now().UTC().Year() { - createdAt = message.CreatedAt.Format("Jan 2 • 15:04 MST") - } - - formattedMessage := FormattedAlertDetailMessage{ - ID: message.ID, - Content: message.Content, - CreatedAt: createdAt, - } - if message.LastUpdatedAt != nil { - formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format( - "02/01/2006 15:04", - ) - } - - messages = append(messages, formattedMessage) - } - - serviceNames := make([]string, 0, len(alert.Services)) - for _, service := range alert.Services { - serviceNames = append(serviceNames, service.Name) - } + const emailTmpl = `Hi,

+ +To start receiving status alert emails from {{.Name}}, please confirm your subscription. +

- formattedAlert := FormattedAlertDetail{ - ID: alert.ID, - Title: alert.Title, - AlertType: alert.AlertType, - Severity: alert.Severity, - CreatedAt: alert.CreatedAt.Format("02/01/2006 15:04 MST"), - Messages: messages, - Services: strings.Join(serviceNames, " • "), - } - if alert.EndedAt != nil { - formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") - } +If this email reached you by mistake, feel free to ignore it and we won't subscribe you. +` - formattedAlerts = append(formattedAlerts, formattedAlert) + tmpl, err := parseEmailTmpl("alertConfirm", emailTmpl) + if err != nil { + log.Printf("postSubscribeEmail.parseEmailTmpls: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - serviceStatuses := make(map[int]string, len(services)) - for _, service := range services { - serviceStatuses[service.ID] = "" - } - for _, alert := range alerts { - for _, service := range alert.Services { - if serviceStatuses[service.ID] != "red" { - serviceStatuses[service.ID] = alert.Severity - } - } + protocol := "https" + if BUILD == "dev" { + protocol = "http" } + emailBytes := bytes.Buffer{} + err = tmpl.Execute( - w, + &emailBytes, struct { - Services []service - IncidentAlerts []FormattedAlertDetail - ServiceStatuses map[int]string - HasEmailAlertChannel bool - HasSlackSetup string - Ctx pageCtx + Name string + Link string }{ - Services: services, - IncidentAlerts: formattedAlerts, - ServiceStatuses: serviceStatuses, - HasEmailAlertChannel: hasEmailAlertChannel, - HasSlackSetup: hasSlackSetup, - Ctx: getPageCtx(r), + Name: metaName, + Link: protocol + "://" + metaDomain + "/subscribe/email/confirm?token=" + token, }, ) if err != nil { - log.Printf("index.Execute: %s", err) + log.Printf("postSubscribeEmail.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} - -func getResolve(w http.ResponseWriter, r *http.Request) { - w.Header().Add("X-Statusnook", "true") - w.Header().Add("Access-Control-Allow-Origin", "*") - w.Header().Add("Access-Control-Expose-Headers", "X-Statusnook") -} -var crossAuthTokens = map[string]int{} + emailStr := "\r\n" + emailBytes.String() -func postResolve(w http.ResponseWriter, r *http.Request) { - tokenBytes := make([]byte, 32) - _, err := rand.Read(tokenBytes) - if err != nil { - log.Printf("postResolve.Read: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + msg = append(msg, []byte(emailStr)) - token := base64.URLEncoding.EncodeToString(tokenBytes) + err = smtp.SendMail( + smtpDetail.Host+":"+strconv.Itoa(smtpDetail.Port), + PlainOrLoginAuth( + smtpDetail.Username, + smtpDetail.Password, + smtpDetail.Host, + ), + smtpDetail.From, + []string{email}, + bytes.Join(msg, []byte("\r\n")), + ) + if err != nil { + log.Printf("postSubscribeEmail.SendMail: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - authCtx := getAuthCtx(r) - crossAuthTokens[token] = authCtx.ID + err = tx.Commit() + if err != nil { + log.Printf("postSubscribeEmail.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - w.Write([]byte(token)) + w.Write([]byte(markup)) } -func getCrossAuth(w http.ResponseWriter, r *http.Request) { - redirectURL := "https://" + metaDomain + r.URL.Query().Get("after") +func updatePendingEmailAlertSubscription(tx *sql.Tx, confirmedAt time.Time, token string) error { + const query = ` + update pending_email_alert_subscription set confirmed_at = ? where token = ? + ` - auth := getAuthCtx(r) - if auth.ID != 0 { - http.Redirect(w, r, redirectURL, http.StatusFound) - return + _, err := tx.Exec(query, confirmedAt, token) + if err != nil { + return fmt.Errorf("updatePendingEmailAlertSubscription.Exec: %w", err) } - tokenParam := r.URL.Query().Get("token") - if tokenParam == "" { - w.WriteHeader(http.StatusBadRequest) - return + return nil +} + +func getAlertSubscriptionByEmail(tx *sql.Tx, email string) (AlertSubscription, error) { + const query = ` + select id, type, destination, meta, active from alert_subscription + where type = 'email' and destination = ? + ` + + var sub AlertSubscription + err := tx.QueryRow(query, email).Scan( + &sub.ID, + &sub.Type, + &sub.Destination, + &sub.Meta, + &sub.Active, + ) + if err != nil { + return sub, fmt.Errorf("getAlertSubscriptionByEmail.Scan: %w", err) } - userID, ok := crossAuthTokens[tokenParam] - if !ok { - w.WriteHeader(http.StatusBadRequest) - return + return sub, nil +} + +func getPendingEmailAlertSubscriptionEmailByToken(tx *sql.Tx, token string) (string, error) { + const query = ` + select email from pending_email_alert_subscription where token = ? and confirmed_at is null + ` + + var email string + + err := tx.QueryRow(query, token).Scan(&email) + if err != nil { + return email, fmt.Errorf("getPendingEmailAlertSubscriptionEmailByToken.Scan: %w", err) } - tokenBytes := make([]byte, 32) - _, err := rand.Read(tokenBytes) + return email, nil +} + +func getSubscribeEmailConfirm(w http.ResponseWriter, r *http.Request) { + const markup = ` + {{define "title"}}Subscribe{{end}} + {{define "body"}} + + {{end}} + ` + tmpl, err := parseTmpl("getSubscribeEmailConfirm", markup) if err != nil { - log.Printf("getCrossAuth.Read: %s", err) + log.Printf("getSubscribeEmailConfirm.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - csrfTokenBytes := make([]byte, 32) - _, err = rand.Read(csrfTokenBytes) + err = tmpl.Execute( + w, + struct { + Ctx pageCtx + }{ + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("getCrossAuth.Read2: %s", err) + log.Printf("getSubscribeEmailConfirm.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} - token := base64.StdEncoding.EncodeToString(tokenBytes) - csrfToken := base64.StdEncoding.EncodeToString(csrfTokenBytes) +func postSubscribeEmailConfirm(w http.ResponseWriter, r *http.Request) { + token := r.URL.Query().Get("token") + if token == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - tx, err := rwDB.Begin() + tx, err := db.Begin() if err != nil { - log.Printf("getCrossAuth.Begin: %s", err) + log.Printf("postSubscribeEmailConfirm.BeginRead: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - if err = createSession(tx, token, csrfToken, userID); err != nil { - log.Printf("getCrossAuth.createSession: %s", err) + notificationChannelID, err := getAlertSMTPNotificationSetting(tx) + if err != nil { + log.Printf("postSubscribeEmailConfirm.getAlertSMTPNotificationSetting: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getCrossAuth.Commit: %s", err) + smtpNotificationChannel, err := getNotificationChannelByID(tx, notificationChannelID) + if err != nil { + log.Printf("postSubscribeEmailConfirm.getNotificationChannelByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - delete(crossAuthTokens, tokenParam) + email, err := getPendingEmailAlertSubscriptionEmailByToken(tx, token) + if err != nil { + log.Printf("postSubscribeEmailConfirm.getPendingEmailAlertSubscriptionEmailByToken: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - http.SetCookie( - w, - &http.Cookie{ - Name: "session", - Value: token, - Path: "/", - Expires: time.Now().UTC().Add(time.Hour * 876600), - Secure: BUILD == "release", - HttpOnly: true, - SameSite: http.SameSiteLaxMode, - }, - ) + sub, err := getAlertSubscriptionByEmail(tx, email) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("postSubscribeEmailConfirm.getAlertSubscriptionByEmail: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - http.Redirect(w, r, redirectURL, http.StatusFound) -} + if sub.Active { + return + } -func getOldestAlertDate(tx *sql.Tx) (time.Time, error) { - const query = ` - select - created_at - from - alert - order by - created_at asc - limit 1 - ` + smtpDetail, ok := smtpNotificationChannel.Details.(SMTPNotificationDetails) + if !ok { + log.Printf("postSubscribeEmailConfirm.Details: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - date := time.Time{} - err := tx.QueryRow(query).Scan(&date) + alertSettings, err := getAlertSettings(tx) if err != nil { - return date, fmt.Errorf("getOldestAlertDate: %w", err) + log.Printf("postSubscribeEmailConfirm.getAlertSettings: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - return date, nil -} - -func getAlertHistory(tx *sql.Tx, period string) ([]AlertDetail, error) { - const alertQuery = ` - select - id, - title, - type, - severity, - created_at, - ended_at - from - alert - where - strftime("%Y-%m", created_at) = ? - order by created_at desc - ` - - alerts := []AlertDetail{} - - rows, err := tx.Query(alertQuery, period) + err = tx.Commit() if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Query: %w", err) + log.Printf("postSubscribeEmailConfirm.CommitRead: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - defer rows.Close() - for rows.Next() { - alert := AlertDetail{} - err = rows.Scan( - &alert.ID, - &alert.Title, - &alert.AlertType, - &alert.Severity, - &alert.CreatedAt, - &alert.EndedAt, - ) + if !alertSettings.ManagedSubscriptions && + strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") { + err = postmarkDeleteSuppression(email, smtpDetail.Password, smtpDetail.Misc["pm-broadcast"]) if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Scan: %w", err) + log.Printf("postSubscribeEmailConfirm.postmarkDeleteSuppression: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + } - alerts = append(alerts, alert) + tx, err = rwDB.Begin() + if err != nil { + log.Printf("postSubscribeEmailConfirm.BeginUpdate: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - alertIDs := make([]string, 0, len(alerts)) - for _, alert := range alerts { - alertIDs = append(alertIDs, strconv.Itoa(alert.ID)) + err = updatePendingEmailAlertSubscription(tx, time.Now().UTC(), token) + if err != nil { + log.Printf("postSubscribeEmailConfirm.updatePendingEmailAlertSubscription: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - messageQuery := fmt.Sprintf( - ` - select - id, - content, - created_at, - last_updated_at, - alert_id - from - alert_message - where - alert_id in(%s) - order by created_at desc - `, - strings.Join(alertIDs, ", "), - ) - - rows, err = tx.Query(messageQuery) + tokenBytes := make([]byte, 32) + _, err = rand.Read(tokenBytes) if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Query2: %w", err) - } - defer rows.Close() - - messages := map[int][]AlertDetailMessage{} - - for rows.Next() { - alertID := 0 - message := AlertDetailMessage{} - err = rows.Scan( - &message.ID, - &message.Content, - &message.CreatedAt, - &message.LastUpdatedAt, - &alertID, - ) - if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Scan2: %w", err) - } - - if _, ok := messages[alertID]; !ok { - messages[alertID] = []AlertDetailMessage{} - } - messages[alertID] = append(messages[alertID], message) + log.Printf("postSubscribeEmailConfirm.Read: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - serviceQuery := fmt.Sprintf( - ` - select - service.id, - service.name, - service.helper_text, - alert_id - from - alert_service - left join - service on service.id = alert_service.service_id - where - alert_id in(%s) - `, - strings.Join(alertIDs, ", "), + err = createAlertSubscription( + tx, + "email", + email, + base64.URLEncoding.EncodeToString(tokenBytes), ) + if err != nil { + log.Printf("postSubscribeEmailConfirm.createAlertSubscription: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - rows, err = tx.Query(serviceQuery) + err = tx.Commit() if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Query3: %w", err) + log.Printf("postSubscribeEmailConfirm.CommitUpdate: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - defer rows.Close() - services := map[int][]AlertDetailService{} + http.Redirect(w, r, "/?email_subscribed=1", http.StatusFound) +} - for rows.Next() { - alertID := 0 +func getUnsubscribe(w http.ResponseWriter, r *http.Request) { + token := r.URL.Query().Get("token") + if token == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - service := AlertDetailService{} - err = rows.Scan( - &service.ID, - &service.Name, - &service.HelperText, - &alertID, - ) - if err != nil { - return alerts, fmt.Errorf("getAlertHistory.Scan3: %w", err) - } + const markup = ` + {{define "title"}}Unsubscribe{{end}} + {{define "body"}} +
+

Please confirm you want to unsubscribe from alerts

+ + +
+ {{end}} + ` - if _, ok := messages[alertID]; !ok { - messages[alertID] = []AlertDetailMessage{} - } - services[alertID] = append(services[alertID], service) + tmpl, err := parseTmpl("unsubscribe", markup) + if err != nil { + log.Printf("getUnsubscribeEmail.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - for i, alert := range alerts { - if _, ok := messages[alert.ID]; ok { - alerts[i].Messages = messages[alert.ID] - } - if _, ok := services[alert.ID]; ok { - alerts[i].Services = services[alert.ID] - } + err = tmpl.Execute( + w, + struct { + Name string + Token string + Ctx pageCtx + }{ + Name: metaName, + Token: token, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("getUnsubscribeEmail.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - - return alerts, nil } -func history(w http.ResponseWriter, r *http.Request) { - periodParam := r.URL.Query().Get("period") - - if len(periodParam) == 0 { - periodParam = time.Now().UTC().Format("2006-01") +func postUnsubscribe(w http.ResponseWriter, r *http.Request) { + token := r.PostFormValue("token") + if token == "" { + token = r.URL.Query().Get("token") } - if len(periodParam) != 7 { - http.Redirect(w, r, "/history", http.StatusFound) + if token == "" { + w.WriteHeader(http.StatusBadRequest) return } - periodDate, err := time.Parse("2006-01", periodParam) + tx, err := rwDB.Begin() if err != nil { + log.Printf("postUnsubscribe.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - tx, err := db.Begin() + err = updateEmailAlertSubscriptionActiveByMeta(tx, token, false) if err != nil { - log.Printf("history.Begin: %s", err) + log.Printf("postUnsubscribe.updateEmailAlertSubscriptionActiveByMeta: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - oldestAlertDate, err := getOldestAlertDate(tx) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("history.getOldestAlertDate: %s", err) + err = tx.Commit() + if err != nil { + log.Printf("postUnsubscribe.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - alerts, err := getAlertHistory(tx, periodParam) + const markup = ` + {{define "title"}}You've been unsubscribed{{end}} + {{define "body"}} +
+

You've been unsubscribed

+ + +
+ {{end}} + ` + + tmpl, err := parseTmpl("postUnsubscribe", markup) if err != nil { - log.Printf("history.listAlerts: %s", err) + log.Printf("postUnsubscribe.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - emailAlertChannelID, err := getAlertSMTPNotificationSetting(tx) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("history.getAlertSMTPNotificationSetting: %s", err) + err = tmpl.Execute( + w, + struct { + Name string + Token string + Ctx pageCtx + }{ + Name: metaName, + Token: token, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("postUnsubscribe.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} - hasEmailAlertChannel := emailAlertChannelID != 0 +func postResubscribe(w http.ResponseWriter, r *http.Request) { + token := r.PostFormValue("token") + if token == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - alertSettings, err := getAlertSettings(tx) + tx, err := rwDB.Begin() if err != nil { - log.Printf("history.getAlertSettings: %s", err) + log.Printf("postResubscribe.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - hasSlackSetup := "" - if alertSettings.SlackClientSecret != "" && alertSettings.SlackInstallURL != "" { - hasSlackSetup = alertSettings.SlackInstallURL + err = updateEmailAlertSubscriptionActiveByMeta(tx, token, true) + if err != nil { + log.Printf("postResubscribe.updateEmailAlertSubscriptionActiveByMeta: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } err = tx.Commit() if err != nil { - log.Printf("history.Commit: %s", err) + log.Printf("postResubscribe.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } const markup = ` - {{define "title"}}Admin home{{end}} + {{define "title"}}You've been re-subscribed{{end}} {{define "body"}} -
-
-
- - - - - -

History

-
-
- - - - - - {{.PeriodText}} - - - - - -
-
- {{if and (not (len .IncidentAlerts)) (not (len .MaintenanceAlerts))}} -
-
- - - -
- No alerts for this period -
- {{end}} - {{if len .IncidentAlerts}} -
-
- {{range $alert := .IncidentAlerts}} -
-
-
-
- {{if eq $alert.Severity "red"}} - - - - {{else if eq $alert.Severity "amber"}} - - - - {{else}} - - - - {{end}} - {{$alert.Title}} -
- {{$alert.Services}} -
-
-
- {{range $message := $alert.Messages}} -
- {{$message.CreatedAt}} - {{$message.Content}} -
- {{end}} -
-
-
- {{end}} -
-
- {{end}} - - - - - -
+
+

You've been re-subscribed

+
{{end}} ` - tmpl, err := parseTmpl("history", markup) + tmpl, err := parseTmpl("postResubscribe", markup) if err != nil { - log.Printf("history.parseTmpl: %s", err) + log.Printf("postResubscribe.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - type FormattedAlertDetailMessage struct { - ID int - Content string - CreatedAt string - LastUpdatedAt string + err = tmpl.Execute( + w, + struct { + Name string + Token string + Ctx pageCtx + }{ + Name: metaName, + Token: token, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("postResubscribe.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } +} - type FormattedAlertDetailService struct { - ID int - Name string - HelperText string +func getInvitation(w http.ResponseWriter, r *http.Request) { + inviteToken := chi.URLParam(r, "token") + if inviteToken == "" { + w.WriteHeader(http.StatusBadRequest) + return } - type FormattedAlertDetail struct { - ID int - Title string - AlertType string - Severity string - CreatedAt string - EndedAt string - Messages []FormattedAlertDetailMessage - Services string + tx, err := db.Begin() + if err != nil { + log.Printf("getInvitation.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - formattedAlerts := make([]FormattedAlertDetail, 0, len(alerts)) - - for _, alert := range alerts { - messages := make([]FormattedAlertDetailMessage, 0, len(alert.Messages)) - for _, message := range alert.Messages { - formattedMessage := FormattedAlertDetailMessage{ - ID: message.ID, - Content: message.Content, - CreatedAt: message.CreatedAt.Format("Jan 2 • 15:04 MST"), - } - if message.LastUpdatedAt != nil { - formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format( - "02/01/2006 15:04 MST", - ) - } - - messages = append(messages, formattedMessage) - } - - serviceNames := make([]string, 0, len(alert.Services)) - for _, service := range alert.Services { - serviceNames = append(serviceNames, service.Name) - } - - formattedAlert := FormattedAlertDetail{ - ID: alert.ID, - Title: alert.Title, - AlertType: alert.AlertType, - Severity: alert.Severity, - CreatedAt: alert.CreatedAt.Format("02/01/2006 15:04 MST"), - Messages: messages, - Services: strings.Join(serviceNames, " • "), - } - if alert.EndedAt != nil { - formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") + _, err = validateUserInvitationToken(tx, inviteToken, time.Now().UTC().Add(-time.Hour*24)) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusBadRequest) + return } - - formattedAlerts = append(formattedAlerts, formattedAlert) - } - - previousPeriodDate := periodDate.AddDate(0, -1, 0) - nextPeriodDate := periodDate.AddDate(0, 1, 0) - - previousPeriodStr := previousPeriodDate.Format("2006-01") - nextPeriodStr := nextPeriodDate.Format("2006-01") - - now := time.Now().UTC() - - if oldestAlertDate.IsZero() || - time.Date(previousPeriodDate.Year(), previousPeriodDate.Month(), 1, 0, 0, 0, 0, now.Location()). - Before(time.Date(oldestAlertDate.Year(), oldestAlertDate.Month(), 1, 0, 0, 0, 0, now.Location())) { - previousPeriodStr = "" - } - - if nextPeriodDate.After(time.Now().UTC()) { - nextPeriodStr = "" + log.Printf("getInvitation.validateUserInvitationToken: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - err = tmpl.Execute( - w, - struct { - IncidentAlerts []FormattedAlertDetail - MaintenanceAlerts []FormattedAlertDetail - PeriodText string - PreviousPeriod string - NextPeriod string - HasEmailAlertChannel bool - HasSlackSetup string - Ctx pageCtx - }{ - IncidentAlerts: formattedAlerts, - PeriodText: periodDate.Format("Jan 2006"), - PreviousPeriod: previousPeriodStr, - NextPeriod: nextPeriodStr, - HasEmailAlertChannel: hasEmailAlertChannel, - HasSlackSetup: hasSlackSetup, - Ctx: getPageCtx(r), - }, - ) + err = tx.Commit() if err != nil { - log.Printf("history.Execute: %s", err) + log.Printf("getInvitation.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} -func getLogin(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Log in{{end}} + {{define "title"}}You're invited to create an admin user{{end}} {{define "body"}}
- - + +
-

Log in

+

You're invited to create an admin user

-
+
+ + @@ -4836,87 +5170,118 @@ func getLogin(w http.ResponseWriter, r *http.Request) { {{end}} ` - authCtx := getAuthCtx(r) - if authCtx.ID != 0 { - http.Redirect(w, r, "/admin/alerts", http.StatusFound) - return - } - - tmpl, err := parseTmpl("getLogin", markup) + tmpl, err := parseTmpl("getInvitation", markup) if err != nil { - log.Printf("getLogin.parseTmpl: %s", err) + log.Printf("getInvitation.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tmpl.Execute(w, nil); err != nil { - log.Printf("getLogin.Execute: %s", err) + err = tmpl.Execute(w, nil) + if err != nil { + log.Printf("getInvitation.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func postLogin(w http.ResponseWriter, r *http.Request) { - username := r.PostFormValue("username") - if username == "" { +func postInvitation(w http.ResponseWriter, r *http.Request) { + inviteToken := chi.URLParam(r, "token") + if inviteToken == "" { w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Enter a username and password -
- `)) - return - } - - password := r.PostFormValue("password") - if password == "" { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Enter a username and password -
- `)) return } tx, err := rwDB.Begin() if err != nil { - log.Printf("postLogin.Begin: %s", err) + log.Printf("postInvitation.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - pwHash, userID, err := getPasswordHash(tx, username) + id, err := validateUserInvitationToken(tx, inviteToken, time.Now().UTC().Add(-time.Hour*24)) if err != nil { if errors.Is(err, sql.ErrNoRows) { w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Incorrect credentials -
- `)) return } - log.Printf("postLogin.getPasswordHash: %s", err) + log.Printf("postInvitation.validateUserInvitationToken: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = bcrypt.CompareHashAndPassword([]byte(pwHash), []byte(password)); err != nil { + err = deleteUserInvitation(tx, id) + if err != nil { + log.Printf("postInvitation.deleteUserInvitation: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + username := r.PostFormValue("username") + if username == "" { w.WriteHeader(http.StatusBadRequest) w.Write([]byte(`
- Incorrect credentials + Username is required +
+ `)) + return + } + + password := r.PostFormValue("password") + passwordConfirmation := r.PostFormValue("password-confirmation") + + if password != passwordConfirmation { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Passwords do not match +
+ `)) + return + } + + if len(password) < 8 { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Password must contain at least 8 characters
`)) return } + pwHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if err != nil { + log.Printf("postInvitation.GenerateFromPassword: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + userID, err := createUser(tx, username, string(pwHash)) + if err != nil { + var sqliteErr sqlite3.Error + if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ This username is already taken +
+ `)) + return + } + } + log.Printf("postInvitation.createUser: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + tokenBytes := make([]byte, 32) _, err = rand.Read(tokenBytes) if err != nil { - log.Printf("postLogin.Read: %s", err) + log.Printf("postInvitation.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -4924,7 +5289,7 @@ func postLogin(w http.ResponseWriter, r *http.Request) { csrfTokenBytes := make([]byte, 32) _, err = rand.Read(csrfTokenBytes) if err != nil { - log.Printf("postLogin.Read2: %s", err) + log.Printf("postInvitation.Read2: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -4932,14 +5297,15 @@ func postLogin(w http.ResponseWriter, r *http.Request) { token := base64.StdEncoding.EncodeToString(tokenBytes) csrfToken := base64.StdEncoding.EncodeToString(csrfTokenBytes) - if err = createSession(tx, token, csrfToken, userID); err != nil { - log.Printf("postLogin.createSession: %s", err) + err = createSession(tx, token, csrfToken, userID) + if err != nil { + log.Printf("postInvitation.createSession: %s", err) w.WriteHeader(http.StatusInternalServerError) return } if err = tx.Commit(); err != nil { - log.Printf("postLogin.Commit: %s", err) + log.Printf("postInvitation.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -4960,35 +5326,36 @@ func postLogin(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Location", "/admin/alerts") } -func adminIndex(w http.ResponseWriter, r *http.Request) { - w.Header().Add("HX-Location", "/admin/alerts") -} - -type AlertListing struct { - ID int - Title string - AlertType string - Severity string - CreatedAt *time.Time - EndedAt *time.Time -} - -func listAlerts(tx *sql.Tx) ([]AlertListing, error) { - const query = ` - select id, title, type, severity, created_at, ended_at from alert - order by created_at desc +func getOngoingAlerts(tx *sql.Tx) ([]AlertDetail, error) { + const alertQuery = ` + select + id, + title, + type, + severity, + created_at, + ended_at + from + alert + where + ended_at is null + order by case + when severity = 'red' then 1 + when severity = 'amber' then 2 + else 3 + end asc ` - alerts := []AlertListing{} + alerts := []AlertDetail{} - rows, err := tx.Query(query) + rows, err := tx.Query(alertQuery) if err != nil { - return alerts, fmt.Errorf("listAlerts.Query: %w", err) + return alerts, fmt.Errorf("getOngoingAlerts.Query: %w", err) } defer rows.Close() for rows.Next() { - alert := AlertListing{} + alert := AlertDetail{} err = rows.Scan( &alert.ID, &alert.Title, @@ -4998,125 +5365,381 @@ func listAlerts(tx *sql.Tx) ([]AlertListing, error) { &alert.EndedAt, ) if err != nil { - return alerts, fmt.Errorf("listAlerts.Scan: %w", err) + return alerts, fmt.Errorf("getOngoingAlerts.Scan: %w", err) } alerts = append(alerts, alert) } + alertIDs := make([]string, 0, len(alerts)) + for _, alert := range alerts { + alertIDs = append(alertIDs, strconv.Itoa(alert.ID)) + } + + messageQuery := fmt.Sprintf( + ` + select + id, + content, + created_at, + last_updated_at, + alert_id + from + alert_message + where + alert_id in(%s) + order by created_at desc + `, + strings.Join(alertIDs, ", "), + ) + + rows, err = tx.Query(messageQuery) + if err != nil { + return alerts, fmt.Errorf("getOngoingAlerts.Query2: %w", err) + } + defer rows.Close() + + messages := map[int][]AlertDetailMessage{} + + for rows.Next() { + alertID := 0 + message := AlertDetailMessage{} + err = rows.Scan( + &message.ID, + &message.Content, + &message.CreatedAt, + &message.LastUpdatedAt, + &alertID, + ) + if err != nil { + return alerts, fmt.Errorf("getOngoingAlerts.Scan2: %w", err) + } + + if _, ok := messages[alertID]; !ok { + messages[alertID] = []AlertDetailMessage{} + } + messages[alertID] = append(messages[alertID], message) + } + + serviceQuery := fmt.Sprintf( + ` + select + service.id, + service.name, + service.helper_text, + alert_id + from + alert_service + left join + service on service.id = alert_service.service_id + where + alert_id in(%s) + `, + strings.Join(alertIDs, ", "), + ) + + rows, err = tx.Query(serviceQuery) + if err != nil { + return alerts, fmt.Errorf("getOngoingAlerts.Query3: %w", err) + } + defer rows.Close() + + services := map[int][]AlertDetailService{} + + for rows.Next() { + alertID := 0 + + service := AlertDetailService{} + err = rows.Scan( + &service.ID, + &service.Name, + &service.HelperText, + &alertID, + ) + if err != nil { + return alerts, fmt.Errorf("getOngoingAlerts.Scan3: %w", err) + } + + if _, ok := messages[alertID]; !ok { + messages[alertID] = []AlertDetailMessage{} + } + services[alertID] = append(services[alertID], service) + } + + for i, alert := range alerts { + if _, ok := messages[alert.ID]; ok { + alerts[i].Messages = messages[alert.ID] + } + if _, ok := services[alert.ID]; ok { + alerts[i].Services = services[alert.ID] + } + } + return alerts, nil } -func alerts(w http.ResponseWriter, r *http.Request) { +func index(w http.ResponseWriter, r *http.Request) { tx, err := db.Begin() if err != nil { - log.Printf("alerts.Begin: %s", err) + log.Printf("index.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - alerts, err := listAlerts(tx) + services, err := listServices(tx) if err != nil { - log.Printf("alerts.listAlerts: %s", err) + log.Printf("index.listServices: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() + alerts, err := getOngoingAlerts(tx) if err != nil { - log.Printf("alerts.Commit: %s", err) + log.Printf("index.getOngoingAlerts: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}Services{{end}} - {{define "body"}} -
-
-

Alerts

-
+ alertSettings, err := getAlertSettings(tx) + if err != nil { + log.Printf("index.getAlertSettings: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - -
+ hasSlackSetup := "" + if alertSettings.SlackClientSecret != "" && alertSettings.SlackInstallURL != "" { + hasSlackSetup = alertSettings.SlackInstallURL + } - {{if eq (len .Alerts) 0}} -
-
- - - -
- Create your first alert - Create alert -
- {{else}} -
- {{range $alert := .Alerts}} - + emailAlertChannelID, err := getAlertSMTPNotificationSetting(tx) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("index.getAlertSMTPNotificationSetting: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + hasEmailAlertChannel := emailAlertChannelID != 0 + + err = tx.Commit() + if err != nil { + log.Printf("index.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + const markup = ` + {{define "title"}}{{.Ctx.Name}} Status{{end}} + {{define "body"}} +
+
+ {{range $service := .Services}} +
-
- {{if not $alert.EndedAt }} - {{if eq $alert.AlertType "incident"}} -
LIVE
- {{else}} -
ACTIVE
- {{end}} - {{end}} - {{$alert.CreatedAt}} -
-
-
+ {{$service.Name}} + {{$service.HelperText}}
- {{$alert.Title}} -
+
+ {{if eq (index $.ServiceStatuses $service.ID) "red"}} + + + + {{else if eq (index $.ServiceStatuses $service.ID) "amber"}} + + + + {{else}} + + + + {{end}} +
+
{{end}}
- {{end}} + + {{if len .IncidentAlerts}} +
+
+ {{range $alert := .IncidentAlerts}} +
+
+
+
+ {{if eq $alert.Severity "red"}} + + + + {{else if eq $alert.Severity "amber"}} + + + + {{else}} + + + + {{end}} + {{$alert.Title}} +
+ {{$alert.Services}} +
+
+
+ {{range $message := $alert.Messages}} +
+ {{$message.CreatedAt}} + {{$message.Content}} +
+ {{end}} +
+
+
+ {{end}} +
+
+ {{end}} + + + + View full history + {{if not .Ctx.Auth.ID}} + Manage this page + {{end}} + + + + + + + +
+
+ + + +
+ Updates will appear in Slack + + +
+
+ + + +
{{end}} ` - tmpl, err := parseTmpl("alerts", markup) + tmpl, err := parseTmpl("index", markup) if err != nil { - log.Printf("alerts.parseTmpl: %s", err) + log.Printf("index.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - type FormattedAlert struct { + type FormattedAlertDetailMessage struct { + ID int + Content string + CreatedAt string + LastUpdatedAt string + } + + type FormattedAlertDetailService struct { + ID int + Name string + HelperText string + } + + type FormattedAlertDetail struct { ID int Title string AlertType string Severity string CreatedAt string EndedAt string + Messages []FormattedAlertDetailMessage + Services string } - formattedAlerts := make([]FormattedAlert, 0, len(alerts)) + formattedAlerts := make([]FormattedAlertDetail, 0, len(alerts)) + for _, alert := range alerts { - createdAt := alert.CreatedAt.Format("Jan 2 2006 • 15:04 MST") - if alert.CreatedAt.Year() == time.Now().UTC().Year() { - createdAt = alert.CreatedAt.Format("Jan 2 • 15:04 MST") + messages := make([]FormattedAlertDetailMessage, 0, len(alert.Messages)) + for _, message := range alert.Messages { + createdAt := message.CreatedAt.Format("Jan 2 2006 • 15:04 MST") + if message.CreatedAt.Year() == time.Now().UTC().Year() { + createdAt = message.CreatedAt.Format("Jan 2 • 15:04 MST") + } + + formattedMessage := FormattedAlertDetailMessage{ + ID: message.ID, + Content: message.Content, + CreatedAt: createdAt, + } + if message.LastUpdatedAt != nil { + formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format( + "02/01/2006 15:04", + ) + } + + messages = append(messages, formattedMessage) } - formattedAlert := FormattedAlert{ - ID: alert.ID, - Title: alert.Title, + serviceNames := make([]string, 0, len(alert.Services)) + for _, service := range alert.Services { + serviceNames = append(serviceNames, service.Name) + } + + formattedAlert := FormattedAlertDetail{ + ID: alert.ID, + Title: alert.Title, AlertType: alert.AlertType, Severity: alert.Severity, - CreatedAt: createdAt, + CreatedAt: alert.CreatedAt.Format("02/01/2006 15:04 MST"), + Messages: messages, + Services: strings.Join(serviceNames, " • "), } if alert.EndedAt != nil { formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") @@ -5125,1492 +5748,4321 @@ func alerts(w http.ResponseWriter, r *http.Request) { formattedAlerts = append(formattedAlerts, formattedAlert) } + serviceStatuses := make(map[int]string, len(services)) + for _, service := range services { + serviceStatuses[service.ID] = "" + } + for _, alert := range alerts { + for _, service := range alert.Services { + if serviceStatuses[service.ID] != "red" { + serviceStatuses[service.ID] = alert.Severity + } + } + } + err = tmpl.Execute( w, struct { - Alerts []FormattedAlert - Ctx pageCtx + Services []service + IncidentAlerts []FormattedAlertDetail + ServiceStatuses map[int]string + HasEmailAlertChannel bool + HasSlackSetup string + Ctx pageCtx }{ - - Alerts: formattedAlerts, - Ctx: getPageCtx(r), + Services: services, + IncidentAlerts: formattedAlerts, + ServiceStatuses: serviceStatuses, + HasEmailAlertChannel: hasEmailAlertChannel, + HasSlackSetup: hasSlackSetup, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("alerts.Execute: %s", err) + log.Printf("index.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -type Monitor struct { - ID int - Name string - URL string - Method string - Frequency int - Timeout int - Attempts int - RequestHeaders map[string]string - BodyFormat sql.NullString - Body sql.NullString +func getResolve(w http.ResponseWriter, r *http.Request) { + w.Header().Add("X-Statusnook", "true") + w.Header().Add("Access-Control-Allow-Origin", "*") + w.Header().Add("Access-Control-Expose-Headers", "X-Statusnook") } -func listMonitors(tx *sql.Tx) ([]Monitor, error) { - const query = ` - select id, name, url, method, frequency, timeout, attempts, request_headers, - body_format, body - from monitor - ` - - monitorListings := []Monitor{} +var crossAuthTokens = map[string]int{} - rows, err := tx.Query(query) +func postResolve(w http.ResponseWriter, r *http.Request) { + tokenBytes := make([]byte, 32) + _, err := rand.Read(tokenBytes) if err != nil { - return monitorListings, fmt.Errorf("listMonitors.Query: %w", err) + log.Printf("postResolve.Read: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - defer rows.Close() - for rows.Next() { - var serializedRequestHeaders sql.NullString + token := base64.URLEncoding.EncodeToString(tokenBytes) - monitor := Monitor{} - err = rows.Scan( - &monitor.ID, - &monitor.Name, - &monitor.URL, - &monitor.Method, - &monitor.Frequency, - &monitor.Timeout, - &monitor.Attempts, - &serializedRequestHeaders, - &monitor.BodyFormat, - &monitor.Body, - ) - if err != nil { - return monitorListings, fmt.Errorf("listMonitors.Scan: %w", err) - } + authCtx := getAuthCtx(r) + crossAuthTokens[token] = authCtx.ID - requestHeaders := map[string]string{} - if serializedRequestHeaders.Valid { - err = json.Unmarshal([]byte(serializedRequestHeaders.String), &requestHeaders) - if err != nil { - return monitorListings, fmt.Errorf("listMonitors.Unmarshal: %w", err) - } - } + w.Write([]byte(token)) +} - monitor.RequestHeaders = requestHeaders - monitorListings = append(monitorListings, monitor) +func getCrossAuth(w http.ResponseWriter, r *http.Request) { + redirectURL := "https://" + metaDomain + r.URL.Query().Get("after") + + auth := getAuthCtx(r) + if auth.ID != 0 { + http.Redirect(w, r, redirectURL, http.StatusFound) + return } - return monitorListings, nil -} + tokenParam := r.URL.Query().Get("token") + if tokenParam == "" { + w.WriteHeader(http.StatusBadRequest) + return + } -func monitors(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() + userID, ok := crossAuthTokens[tokenParam] + if !ok { + w.WriteHeader(http.StatusBadRequest) + return + } + + tokenBytes := make([]byte, 32) + _, err := rand.Read(tokenBytes) if err != nil { - log.Printf("monitors.Begin: %s", err) + log.Printf("getCrossAuth.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - monitors, err := listMonitors(tx) + csrfTokenBytes := make([]byte, 32) + _, err = rand.Read(csrfTokenBytes) if err != nil { - log.Printf("monitors.listMonitors: %s", err) + log.Printf("getCrossAuth.Read2: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - lastCheckedLogs, err := listAllMonitorLogLastChecked(tx) + token := base64.StdEncoding.EncodeToString(tokenBytes) + csrfToken := base64.StdEncoding.EncodeToString(csrfTokenBytes) + + tx, err := rwDB.Begin() if err != nil { - log.Printf("monitors.listAllMonitorLogLastChecked: %s", err) + log.Printf("getCrossAuth.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - monitorHappy := make(map[int]bool, len(lastCheckedLogs)) - for _, v := range lastCheckedLogs { - monitorHappy[v.ID] = v.ResponseCode.Int32 != 0 && v.ResponseCode.Int32 < 400 + if err = createSession(tx, token, csrfToken, userID); err != nil { + log.Printf("getCrossAuth.createSession: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - const markup = ` - {{define "title"}}Monitors{{end}} - {{define "body"}} -
-
-

Monitors

-
- - -
- - {{if eq (len .Monitors) 0}} -
-
- - - - -
- Create your first monitor - Create monitor -
- {{else}} - - {{end}} - {{end}} - ` - - tmpl, err := parseTmpl("monitors", markup) - if err != nil { - log.Printf("monitors.parseTmpl: %s", err) + if err = tx.Commit(); err != nil { + log.Printf("getCrossAuth.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Monitors []Monitor - MonitorHappy map[int]bool - Ctx pageCtx - }{ + delete(crossAuthTokens, tokenParam) - Monitors: monitors, - MonitorHappy: monitorHappy, - Ctx: getPageCtx(r), + http.SetCookie( + w, + &http.Cookie{ + Name: "session", + Value: token, + Path: "/", + Expires: time.Now().UTC().Add(time.Hour * 876600), + Secure: BUILD == "release", + HttpOnly: true, + SameSite: http.SameSiteLaxMode, }, ) - if err != nil { - log.Printf("monitors.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + + http.Redirect(w, r, redirectURL, http.StatusFound) } -func getMonitorByID(tx *sql.Tx, id int) (Monitor, error) { +func getOldestAlertDate(tx *sql.Tx) (time.Time, error) { const query = ` - select - id, - name, - url, - method, - frequency, - timeout, - attempts, - request_headers, - body_format, - body + select + created_at from - monitor - where - id = ? + alert + order by + created_at asc + limit 1 ` - monitor := Monitor{} - - var serializedRequestHeaders sql.NullString - - err := tx.QueryRow(query, id).Scan( - &monitor.ID, - &monitor.Name, - &monitor.URL, - &monitor.Method, - &monitor.Frequency, - &monitor.Timeout, - &monitor.Attempts, - &serializedRequestHeaders, - &monitor.BodyFormat, - &monitor.Body, - ) + date := time.Time{} + err := tx.QueryRow(query).Scan(&date) if err != nil { - return monitor, fmt.Errorf("getMonitorByID.QueryRow: %w", err) - } - - requestHeaders := map[string]string{} - - if serializedRequestHeaders.Valid { - err = json.Unmarshal([]byte(serializedRequestHeaders.String), &requestHeaders) - if err != nil { - return monitor, fmt.Errorf("getMonitorByID.Unmarshal: %w", err) - } + return date, fmt.Errorf("getOldestAlertDate: %w", err) } - monitor.RequestHeaders = requestHeaders - - return monitor, nil -} - -type MonitorLog struct { - ID int - StartedAt time.Time - EndedAt time.Time - ResponseCode sql.NullInt64 - ErrorMessage sql.NullString - Attempts int - Result string - MonitorID int + return date, nil } -func listMonitorLogs(tx *sql.Tx, monitorID int, limit int, after int, before int, date time.Time) ([]MonitorLog, error) { - query := ` - select +func getAlertHistory(tx *sql.Tx, period string) ([]AlertDetail, error) { + const alertQuery = ` + select id, - started_at, - ended_at, - response_code, - error_message, - attempts, - result, - monitor_id + title, + type, + severity, + created_at, + ended_at from - monitor_log - where - monitor_id = ? + alert + where + strftime("%Y-%m", created_at) = ? + order by created_at desc ` - if after != 0 { - query += "and id < ?" - } + alerts := []AlertDetail{} - if before != 0 { - query += " and id >= ?" + rows, err := tx.Query(alertQuery, period) + if err != nil { + return alerts, fmt.Errorf("getAlertHistory.Query: %w", err) } + defer rows.Close() - query += " and started_at >= ? and started_at < ?" - - query += "\norder by id desc" + for rows.Next() { + alert := AlertDetail{} + err = rows.Scan( + &alert.ID, + &alert.Title, + &alert.AlertType, + &alert.Severity, + &alert.CreatedAt, + &alert.EndedAt, + ) + if err != nil { + return alerts, fmt.Errorf("getAlertHistory.Scan: %w", err) + } - if limit > 0 { - query += "\nlimit " + strconv.Itoa(limit) + alerts = append(alerts, alert) } - monitorLogs := make([]MonitorLog, 0, limit) + alertIDs := make([]string, 0, len(alerts)) + for _, alert := range alerts { + alertIDs = append(alertIDs, strconv.Itoa(alert.ID)) + } - params := []any{monitorID} + messageQuery := fmt.Sprintf( + ` + select + id, + content, + created_at, + last_updated_at, + alert_id + from + alert_message + where + alert_id in(%s) + order by created_at desc + `, + strings.Join(alertIDs, ", "), + ) - if after != 0 { - params = append(params, after) + rows, err = tx.Query(messageQuery) + if err != nil { + return alerts, fmt.Errorf("getAlertHistory.Query2: %w", err) } + defer rows.Close() - if before != 0 { - params = append(params, before) + messages := map[int][]AlertDetailMessage{} + + for rows.Next() { + alertID := 0 + message := AlertDetailMessage{} + err = rows.Scan( + &message.ID, + &message.Content, + &message.CreatedAt, + &message.LastUpdatedAt, + &alertID, + ) + if err != nil { + return alerts, fmt.Errorf("getAlertHistory.Scan2: %w", err) + } + + if _, ok := messages[alertID]; !ok { + messages[alertID] = []AlertDetailMessage{} + } + messages[alertID] = append(messages[alertID], message) } - endOfDay := date.Add(time.Hour * 24) - params = append(params, date, endOfDay) + serviceQuery := fmt.Sprintf( + ` + select + service.id, + service.name, + service.helper_text, + alert_id + from + alert_service + left join + service on service.id = alert_service.service_id + where + alert_id in(%s) + `, + strings.Join(alertIDs, ", "), + ) - rows, err := tx.Query(query, params...) + rows, err = tx.Query(serviceQuery) if err != nil { - return monitorLogs, fmt.Errorf("listMonitorLogs.Query: %w", err) + return alerts, fmt.Errorf("getAlertHistory.Query3: %w", err) } defer rows.Close() + services := map[int][]AlertDetailService{} + for rows.Next() { - monitorLog := MonitorLog{} + alertID := 0 + + service := AlertDetailService{} err = rows.Scan( - &monitorLog.ID, - &monitorLog.StartedAt, - &monitorLog.EndedAt, - &monitorLog.ResponseCode, - &monitorLog.ErrorMessage, - &monitorLog.Attempts, - &monitorLog.Result, - &monitorLog.MonitorID, + &service.ID, + &service.Name, + &service.HelperText, + &alertID, ) if err != nil { - return monitorLogs, fmt.Errorf("listMonitorLogs.Scan: %w", err) + return alerts, fmt.Errorf("getAlertHistory.Scan3: %w", err) } - monitorLogs = append(monitorLogs, monitorLog) + + if _, ok := messages[alertID]; !ok { + messages[alertID] = []AlertDetailMessage{} + } + services[alertID] = append(services[alertID], service) } - return monitorLogs, nil -} + for i, alert := range alerts { + if _, ok := messages[alert.ID]; ok { + alerts[i].Messages = messages[alert.ID] + } + if _, ok := services[alert.ID]; ok { + alerts[i].Services = services[alert.ID] + } + } -type MonitorLogView struct { - ID int - StartedAt string - Latency time.Duration - ResponseCode sql.NullInt64 - ErrorMessage sql.NullString - Attempts int - Result string - MonitorID int + return alerts, nil } -func getMonitor(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return +func history(w http.ResponseWriter, r *http.Request) { + periodParam := r.URL.Query().Get("period") + + if len(periodParam) == 0 { + periodParam = time.Now().UTC().Format("2006-01") } - dateParam := r.URL.Query().Get("date") - if dateParam == "" { - dateParam = time.Now().UTC().Format("2006-01-02") + if len(periodParam) != 7 { + http.Redirect(w, r, "/history", http.StatusFound) + return } - date, err := time.Parse("2006-01-02", dateParam) + periodDate, err := time.Parse("2006-01", periodParam) if err != nil { - w.WriteHeader(http.StatusBadRequest) + w.WriteHeader(http.StatusInternalServerError) return } tx, err := db.Begin() if err != nil { - log.Printf("getMonitor.Begin: %s", err) + log.Printf("history.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - const logLimit = 100 - - monitor, err := getMonitorByID(tx, id) - if err != nil { - log.Printf("getMonitor.getMonitorByID: %s", err) + oldestAlertDate, err := getOldestAlertDate(tx) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("history.getOldestAlertDate: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - monitorLogs, err := listMonitorLogs(tx, id, logLimit, 0, 0, date) + alerts, err := getAlertHistory(tx, periodParam) if err != nil { - log.Printf("getMonitor.listMonitorLogs: %s", err) + log.Printf("history.listAlerts: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - lastChecked, err := getMonitorLogLastChecked(tx, monitor.ID) - if err != nil { - log.Printf("getMonitor.getMonitorLogLastChecked: %s", err) + emailAlertChannelID, err := getAlertSMTPNotificationSetting(tx) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("history.getAlertSMTPNotificationSetting: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getMonitor.Commit: %s", err) + hasEmailAlertChannel := emailAlertChannelID != 0 + + alertSettings, err := getAlertSettings(tx) + if err != nil { + log.Printf("history.getAlertSettings: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if _, ok := r.URL.Query()["ready"]; ok { - if len(monitorLogs) == 0 { - w.WriteHeader(http.StatusNoContent) - return - } + hasSlackSetup := "" + if alertSettings.SlackClientSecret != "" && alertSettings.SlackInstallURL != "" { + hasSlackSetup = alertSettings.SlackInstallURL + } + + err = tx.Commit() + if err != nil { + log.Printf("history.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } const markup = ` - {{define "title"}}{{.Monitor.Name}} - Monitor{{end}} + {{define "title"}}Admin home{{end}} {{define "body"}} -
-
+
+
- + -

{{.Monitor.Name}}

+

History

-
- {{if len .Logs}} -
- {{if .LastCheckedSuccess}} - OK - {{else}} - Error - {{end}} -
- - {{.NextRefreshMsg}} - - {{end}} + + + + + + {{.PeriodText}} + + + + + +
+
+ {{if and (not (len .IncidentAlerts)) (not (len .MaintenanceAlerts))}} +
+
+ + +
-
- - - Delete {{.Monitor.Name}} -
+ No alerts for this period +
+ {{end}} + {{if len .IncidentAlerts}} +
+
+ {{range $alert := .IncidentAlerts}} +
- - +
+
+ {{if eq $alert.Severity "red"}} + + + + {{else if eq $alert.Severity "amber"}} + + + + {{else}} + + + + {{end}} + {{$alert.Title}} +
+ {{$alert.Services}} +
- - +
+ {{range $message := $alert.Messages}} +
+ {{$message.CreatedAt}} + {{$message.Content}} +
+ {{end}} +
+
+
+ {{end}}
-
- + {{end}} -
-

Logs

- -
- - -
-
- -
- -
- - {{if len .Logs}} -
- {{range $i, $log := .Logs}} -
- {{$log.StartedAt}} - {{$log.Latency}} - {{if eq $log.Result "error"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "success"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "timeout"}} - - TIMEOUT - - {{end}} -
- {{end}} -
- {{else}} -
-
- - - -
- Getting first logs...
- {{end}} -
- + + +
{{end}} ` - tmpl, err := parseTmpl("getMonitor", markup) + tmpl, err := parseTmpl("history", markup) if err != nil { - log.Printf("getMonitor.parseTmpl: %s", err) + log.Printf("history.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - refreshDelay := 5 - - nextRefreshMsg := fmt.Sprintf( - "Checking for updates in %ds", - refreshDelay, - ) + type FormattedAlertDetailMessage struct { + ID int + Content string + CreatedAt string + LastUpdatedAt string + } - timeIDs := make(map[int]string, logLimit) - for i, log := range monitorLogs { - if i > 0 { - lastLog := monitorLogs[i-1] - if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || log.StartedAt.Minute() != lastLog.StartedAt.Minute() { - timeIDs[log.ID] = log.StartedAt.Format("15:04") + type FormattedAlertDetailService struct { + ID int + Name string + HelperText string + } + + type FormattedAlertDetail struct { + ID int + Title string + AlertType string + Severity string + CreatedAt string + EndedAt string + Messages []FormattedAlertDetailMessage + Services string + } + + formattedAlerts := make([]FormattedAlertDetail, 0, len(alerts)) + + for _, alert := range alerts { + messages := make([]FormattedAlertDetailMessage, 0, len(alert.Messages)) + for _, message := range alert.Messages { + formattedMessage := FormattedAlertDetailMessage{ + ID: message.ID, + Content: message.Content, + CreatedAt: message.CreatedAt.Format("Jan 2 • 15:04 MST"), } - } else { - timeIDs[log.ID] = log.StartedAt.Format("15:04") + if message.LastUpdatedAt != nil { + formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format( + "02/01/2006 15:04 MST", + ) + } + + messages = append(messages, formattedMessage) } - } - formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) - for _, log := range monitorLogs { - formattedMonitorLogs = append( - formattedMonitorLogs, - MonitorLogView{ - ID: log.ID, - StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), - Latency: log.EndedAt.Sub(log.StartedAt). - Round(time.Millisecond * 1), - ResponseCode: log.ResponseCode, - ErrorMessage: log.ErrorMessage, - Attempts: log.Attempts, - Result: log.Result, - MonitorID: log.MonitorID, - }, - ) + serviceNames := make([]string, 0, len(alert.Services)) + for _, service := range alert.Services { + serviceNames = append(serviceNames, service.Name) + } + + formattedAlert := FormattedAlertDetail{ + ID: alert.ID, + Title: alert.Title, + AlertType: alert.AlertType, + Severity: alert.Severity, + CreatedAt: alert.CreatedAt.Format("02/01/2006 15:04 MST"), + Messages: messages, + Services: strings.Join(serviceNames, " • "), + } + if alert.EndedAt != nil { + formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") + } + + formattedAlerts = append(formattedAlerts, formattedAlert) } - if dateParam != "" { - w.Header().Set("HX-Push-Url", r.URL.Path+"?date="+dateParam) + previousPeriodDate := periodDate.AddDate(0, -1, 0) + nextPeriodDate := periodDate.AddDate(0, 1, 0) + + previousPeriodStr := previousPeriodDate.Format("2006-01") + nextPeriodStr := nextPeriodDate.Format("2006-01") + + now := time.Now().UTC() + + if oldestAlertDate.IsZero() || + time.Date(previousPeriodDate.Year(), previousPeriodDate.Month(), 1, 0, 0, 0, 0, now.Location()). + Before(time.Date(oldestAlertDate.Year(), oldestAlertDate.Month(), 1, 0, 0, 0, 0, now.Location())) { + previousPeriodStr = "" } - lastLogID := 0 - if len(monitorLogs) > 0 { - lastLogID = monitorLogs[len(monitorLogs)-1].ID + if nextPeriodDate.After(time.Now().UTC()) { + nextPeriodStr = "" } err = tmpl.Execute( w, struct { - Monitor Monitor - Logs []MonitorLogView - NextRefreshMsg string - LastCheckedSuccess bool - LastLogID int - TimeIDs map[int]string - RefreshDelay int - Ctx pageCtx - Date string + IncidentAlerts []FormattedAlertDetail + MaintenanceAlerts []FormattedAlertDetail + PeriodText string + PreviousPeriod string + NextPeriod string + HasEmailAlertChannel bool + HasSlackSetup string + Ctx pageCtx }{ - Monitor: monitor, - Logs: formattedMonitorLogs, - NextRefreshMsg: nextRefreshMsg, - LastCheckedSuccess: lastChecked.ResponseCode.Int32 != 0 && lastChecked.ResponseCode.Int32 < 400, - LastLogID: lastLogID, - TimeIDs: timeIDs, - RefreshDelay: refreshDelay, - Date: dateParam, - Ctx: getPageCtx(r), + IncidentAlerts: formattedAlerts, + PeriodText: periodDate.Format("Jan 2006"), + PreviousPeriod: previousPeriodStr, + NextPeriod: nextPeriodStr, + HasEmailAlertChannel: hasEmailAlertChannel, + HasSlackSetup: hasSlackSetup, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getMonitor.Execute: %s", err) + log.Printf("history.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func getMonitorAllLogs(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) +func getLogin(w http.ResponseWriter, r *http.Request) { + const markup = ` + {{define "title"}}Log in{{end}} + {{define "body"}} +
+
+
+
+ + + +
+

Log in

+
+
+
+ + + + + +
+
+
+ {{end}} + ` + + authCtx := getAuthCtx(r) + if authCtx.ID != 0 { + http.Redirect(w, r, "/admin/alerts", http.StatusFound) return } - afterParam := r.URL.Query().Get("after") - if afterParam == "" { + tmpl, err := parseTmpl("getLogin", markup) + if err != nil { + log.Printf("getLogin.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - after, err := strconv.Atoi(afterParam) - if err != nil { + if err = tmpl.Execute(w, nil); err != nil { + log.Printf("getLogin.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } +} - dateParam := r.URL.Query().Get("date") - if dateParam == "" { +func postLogin(w http.ResponseWriter, r *http.Request) { + username := r.PostFormValue("username") + if username == "" { w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Enter a username and password +
+ `)) return } - date, err := time.Parse("2006-01-02", dateParam) - if err != nil { + password := r.PostFormValue("password") + if password == "" { w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Enter a username and password +
+ `)) return } - tx, err := db.Begin() + tx, err := rwDB.Begin() if err != nil { - log.Printf("getMonitorAllLogs.Begin: %s", err) + log.Printf("postLogin.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - const logLimit = 2160 + pwHash, userID, err := getPasswordHash(tx, username) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Incorrect credentials +
+ `)) + return + } + log.Printf("postLogin.getPasswordHash: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - monitorLogs, err := listMonitorLogs(tx, id, logLimit, after, 0, date) + if err = bcrypt.CompareHashAndPassword([]byte(pwHash), []byte(password)); err != nil { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Incorrect credentials +
+ `)) + return + } + + tokenBytes := make([]byte, 32) + _, err = rand.Read(tokenBytes) if err != nil { - log.Printf("getMonitorAllLogs.listMonitorLogs: %s", err) + log.Printf("postLogin.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getMonitorAllLogs.Commit: %s", err) + csrfTokenBytes := make([]byte, 32) + _, err = rand.Read(csrfTokenBytes) + if err != nil { + log.Printf("postLogin.Read2: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - lastLogID := 0 - if len(monitorLogs) > 0 { - lastLogID = monitorLogs[len(monitorLogs)-1].ID + token := base64.StdEncoding.EncodeToString(tokenBytes) + csrfToken := base64.StdEncoding.EncodeToString(csrfTokenBytes) + + if err = createSession(tx, token, csrfToken, userID); err != nil { + log.Printf("postLogin.createSession: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - const markup = ` - {{range $log := .Logs}} -
- {{$log.StartedAt}} - {{$log.Latency}} - {{if eq $log.Result "error"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "success"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "timeout"}} - - TIMEOUT - - {{end}} -
- {{if eq $log.ID $.LastLogID }} -
-
- {{end}} - {{end}} - {{if not (len .Logs)}} -
- - -
- - -
-
- - {{end}} - ` - - tmpl, err := parseTmpl("getMonitorAllLogs", markup) - if err != nil { - log.Printf("getMonitorAllLogs.parseTmpl: %s", err) + if err = tx.Commit(); err != nil { + log.Printf("postLogin.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) - for _, log := range monitorLogs { - formattedMonitorLogs = append( - formattedMonitorLogs, - MonitorLogView{ - ID: log.ID, - StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), - Latency: log.EndedAt.Sub(log.StartedAt). - Round(time.Millisecond * 1), - ResponseCode: log.ResponseCode, - ErrorMessage: log.ErrorMessage, - Attempts: log.Attempts, - Result: log.Result, - MonitorID: log.MonitorID, - }, - ) - } - - timeIDs := make(map[int]string, logLimit) - for i, log := range monitorLogs { - if i > 0 { - lastLog := monitorLogs[i-1] - if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || - log.StartedAt.Minute() != lastLog.StartedAt.Minute() { - timeIDs[log.ID] = log.StartedAt.Format("15:04") - } - } else { - timeIDs[log.ID] = log.StartedAt.Format("15:04") - } - } - - err = tmpl.Execute( + http.SetCookie( w, - struct { - Logs []MonitorLogView - LastLogID int - MonitorID int - TimeIDs map[int]string - Date string - }{ - Logs: formattedMonitorLogs, - LastLogID: lastLogID, - MonitorID: id, - TimeIDs: timeIDs, - Date: dateParam, + &http.Cookie{ + Name: "session", + Value: token, + Path: "/", + Expires: time.Now().UTC().Add(time.Hour * 876600), + Secure: BUILD == "release", + HttpOnly: true, + SameSite: http.SameSiteLaxMode, }, ) - if err != nil { - log.Printf("getMonitorAllLogs.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + + w.Header().Add("HX-Location", "/admin/alerts") } -func getMonitorPoll(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } +func adminIndex(w http.ResponseWriter, r *http.Request) { + w.Header().Add("HX-Location", "/admin/alerts") +} - beforeParam := r.URL.Query().Get("before") - if beforeParam == "" { - w.WriteHeader(http.StatusBadRequest) - return - } +type AlertListing struct { + ID int + Title string + AlertType string + Severity string + CreatedAt *time.Time + EndedAt *time.Time +} - before, err := strconv.Atoi(beforeParam) +func listAlerts(tx *sql.Tx) ([]AlertListing, error) { + const query = ` + select id, title, type, severity, created_at, ended_at from alert + order by created_at desc + ` + + alerts := []AlertListing{} + + rows, err := tx.Query(query) if err != nil { - w.WriteHeader(http.StatusBadRequest) - return + return alerts, fmt.Errorf("listAlerts.Query: %w", err) } + defer rows.Close() - dateParam := r.URL.Query().Get("date") - if dateParam == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + for rows.Next() { + alert := AlertListing{} + err = rows.Scan( + &alert.ID, + &alert.Title, + &alert.AlertType, + &alert.Severity, + &alert.CreatedAt, + &alert.EndedAt, + ) + if err != nil { + return alerts, fmt.Errorf("listAlerts.Scan: %w", err) + } - date, err := time.Parse("2006-01-02", dateParam) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return + alerts = append(alerts, alert) } + return alerts, nil +} + +func alerts(w http.ResponseWriter, r *http.Request) { tx, err := db.Begin() if err != nil { - log.Printf("getMonitorPoll.Begin: %s", err) + log.Printf("alerts.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - monitorLogs, err := listMonitorLogs(tx, id, 0, 0, before, date) + alerts, err := listAlerts(tx) if err != nil { - log.Printf("getMonitorPoll.listMonitorLogs: %s", err) + log.Printf("alerts.listAlerts: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - lastChecked, err := getMonitorLogLastChecked(tx, id) + err = tx.Commit() if err != nil { - log.Printf("getMonitorPoll.getMonitorLogLastChecked: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - if err = tx.Commit(); err != nil { - log.Printf("getMonitorPoll.Commit: %s", err) + log.Printf("alerts.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - refreshDelay := 5 - - nextRefreshMsg := fmt.Sprintf( - "Checking for updates in %ds", - refreshDelay, - ) - const markup = ` -
- {{if .LastCheckedSuccess}} - OK - {{else}} - Error - {{end}} -
- - - {{.NextRefreshMsg}} - + {{define "title"}}Services{{end}} + {{define "body"}} +
+
+

Alerts

+
- {{range $i, $log := .Logs}} -
- {{$log.StartedAt}} - {{$log.Latency}} - {{if eq $log.Result "error"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "success"}} - - {{$log.ResponseCode.Int64}} - - {{end}} - - {{if eq $log.Result "timeout"}} - - TIMEOUT - - {{end}} +
+ + {{if eq (len .Alerts) 0}} +
+
+ + + +
+ Create your first alert + Create alert +
+ {{else}} + + {{end}} {{end}} ` - tmpl, err := parseTmpl("getMonitorPoll", markup) + tmpl, err := parseTmpl("alerts", markup) if err != nil { - log.Printf("getMonitorPoll.parseTmpl: %s", err) + log.Printf("alerts.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) - for _, log := range monitorLogs { - formattedMonitorLogs = append( - formattedMonitorLogs, - MonitorLogView{ - ID: log.ID, - StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), - Latency: log.EndedAt.Sub(log.StartedAt). - Round(time.Millisecond * 1), - ResponseCode: log.ResponseCode, - ErrorMessage: log.ErrorMessage, - Attempts: log.Attempts, - Result: log.Result, - MonitorID: log.MonitorID, - }, - ) + type FormattedAlert struct { + ID int + Title string + AlertType string + Severity string + CreatedAt string + EndedAt string } - timeIDs := make(map[int]string, len(formattedMonitorLogs)) - for i, log := range monitorLogs { - if i > 0 { - lastLog := monitorLogs[i-1] - if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || - log.StartedAt.Minute() != lastLog.StartedAt.Minute() { - timeIDs[log.ID] = log.StartedAt.Format("15:04") - } - } else { - timeIDs[log.ID] = log.StartedAt.Format("15:04") + formattedAlerts := make([]FormattedAlert, 0, len(alerts)) + for _, alert := range alerts { + createdAt := alert.CreatedAt.Format("Jan 2 2006 • 15:04 MST") + if alert.CreatedAt.Year() == time.Now().UTC().Year() { + createdAt = alert.CreatedAt.Format("Jan 2 • 15:04 MST") + } + + formattedAlert := FormattedAlert{ + ID: alert.ID, + Title: alert.Title, + AlertType: alert.AlertType, + Severity: alert.Severity, + CreatedAt: createdAt, + } + if alert.EndedAt != nil { + formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") } + + formattedAlerts = append(formattedAlerts, formattedAlert) } err = tmpl.Execute( w, struct { - Logs []MonitorLogView - LastLogID int - MonitorID int - TimeIDs map[int]string - RefreshDelay int - NextRefreshMsg string - LastCheckedSuccess bool - Date string + Alerts []FormattedAlert + Ctx pageCtx }{ - Logs: formattedMonitorLogs, - MonitorID: id, - TimeIDs: timeIDs, - RefreshDelay: 5, - NextRefreshMsg: nextRefreshMsg, - LastCheckedSuccess: lastChecked.ResponseCode.Int32 != 0 && lastChecked.ResponseCode.Int32 < 400, - Date: dateParam, + + Alerts: formattedAlerts, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getMonitorPoll.Execute: %s", err) + log.Printf("alerts.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func getEditMonitor(w http.ResponseWriter, r *http.Request) { - refreshID := r.URL.Query().Get("refresh") - id, _ := strconv.Atoi(chi.URLParam(r, "id")) +type Monitor struct { + ID int + Slug string + Name string + URL string + Method string + Frequency int + Timeout int + Attempts int + RequestHeaders map[string]string + BodyFormat sql.NullString + Body sql.NullString +} - tx, err := db.Begin() - if err != nil { - log.Printf("getEditMonitor.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() +func listMonitors(tx *sql.Tx) ([]Monitor, error) { + const query = ` + select id, slug, name, url, method, frequency, timeout, attempts, request_headers, + body_format, body + from monitor + ` - monitor, err := getMonitorByID(tx, id) + monitorListings := []Monitor{} + + rows, err := tx.Query(query) if err != nil { - log.Printf("getEditMonitor.getMonitorByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return monitorListings, fmt.Errorf("listMonitors.Query: %w", err) } + defer rows.Close() - channels, err := listNotificationChannels(tx, listNotificationsOptions{}) - if err != nil { - log.Printf("getEditMonitor.listNotificationChannels: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + for rows.Next() { + var serializedRequestHeaders sql.NullString + + monitor := Monitor{} + err = rows.Scan( + &monitor.ID, + &monitor.Slug, + &monitor.Name, + &monitor.URL, + &monitor.Method, + &monitor.Frequency, + &monitor.Timeout, + &monitor.Attempts, + &serializedRequestHeaders, + &monitor.BodyFormat, + &monitor.Body, + ) + if err != nil { + return monitorListings, fmt.Errorf("listMonitors.Scan: %w", err) + } + + requestHeaders := map[string]string{} + if serializedRequestHeaders.Valid { + err = json.Unmarshal([]byte(serializedRequestHeaders.String), &requestHeaders) + if err != nil { + return monitorListings, fmt.Errorf("listMonitors.Unmarshal: %w", err) + } + } + + monitor.RequestHeaders = requestHeaders + monitorListings = append(monitorListings, monitor) } - monitorNotificationChannels, err := listNotificationChannelsByMonitorID(tx, monitor.ID) + return monitorListings, nil +} + +func monitors(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { - log.Printf("getEditMonitor.listNotificationChannelsByMonitorID: %s", err) + log.Printf("monitors.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - monitorNotificationsMap := map[int]bool{} - for _, v := range monitorNotificationChannels { - monitorNotificationsMap[v.ID] = true - } + defer tx.Rollback() - mailGroups, err := listMailGroups(tx) + monitors, err := listMonitors(tx) if err != nil { - log.Printf("getEditMonitor.mailGroups: %s", err) + log.Printf("monitors.listMonitors: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - selectedMailGroups, err := listMailGroupIDsByMonitorID(tx, monitor.ID) + lastCheckedLogs, err := listAllMonitorLogLastChecked(tx) if err != nil { - log.Printf("getEditMonitor.listMailGroupIDsByMonitorID: %s", err) + log.Printf("monitors.listAllMonitorLogLastChecked: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - selectedMailGroupsMap := map[int]bool{} - for _, v := range selectedMailGroups { - selectedMailGroupsMap[v] = true - } - err = tx.Commit() - if err != nil { - log.Printf("getEditMonitor.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + monitorHappy := make(map[int]bool, len(lastCheckedLogs)) + for _, v := range lastCheckedLogs { + monitorHappy[v.ID] = v.ResponseCode.Int32 != 0 && v.ResponseCode.Int32 < 400 } const markup = ` - {{define "title"}}Edit monitor{{end}} + {{define "title"}}Monitors{{end}} {{define "body"}} -
-
+
+
+

Monitors

+
+ + {{if not .Ctx.ConfigFile}}
- - - - + + + + - -

Edit monitor

+ {{end}} +
+ + {{if eq (len .Monitors) 0}} +
+
+ + + + +
+ Create your first monitor + {{if not .Ctx.ConfigFile}} + Create monitor + {{else}} + Go to settings + {{end}} +
+ {{else}} + + {{end}} + {{end}} + ` -
- + tmpl, err := parseTmpl("monitors", markup) + if err != nil { + log.Printf("monitors.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - - -
-
- -
- - - - - -
-
+ err = tmpl.Execute( + w, + struct { + Monitors []Monitor + MonitorHappy map[int]bool + Ctx pageCtx + }{ -
- -
- - - -
-
+ Monitors: monitors, + MonitorHappy: monitorHappy, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("monitors.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} -
- -
- - - -
-
+func getMonitorByID(tx *sql.Tx, id int) (Monitor, error) { + const query = ` + select + id, + name, + url, + method, + frequency, + timeout, + attempts, + request_headers, + body_format, + body + from + monitor + where + id = ? + ` -
- -
- - - -
-
-
+ monitor := Monitor{} + + var serializedRequestHeaders sql.NullString + + err := tx.QueryRow(query, id).Scan( + &monitor.ID, + &monitor.Name, + &monitor.URL, + &monitor.Method, + &monitor.Frequency, + &monitor.Timeout, + &monitor.Attempts, + &serializedRequestHeaders, + &monitor.BodyFormat, + &monitor.Body, + ) + if err != nil { + return monitor, fmt.Errorf("getMonitorByID.QueryRow: %w", err) + } + + requestHeaders := map[string]string{} + + if serializedRequestHeaders.Valid { + err = json.Unmarshal([]byte(serializedRequestHeaders.String), &requestHeaders) + if err != nil { + return monitor, fmt.Errorf("getMonitorByID.Unmarshal: %w", err) + } + } + + monitor.RequestHeaders = requestHeaders + + return monitor, nil +} + +type MonitorLog struct { + ID int + StartedAt time.Time + EndedAt time.Time + ResponseCode sql.NullInt64 + ErrorMessage sql.NullString + Attempts int + Result string + MonitorID int +} + +func listMonitorLogs(tx *sql.Tx, monitorID int, limit int, after int, before int, date time.Time) ([]MonitorLog, error) { + query := ` + select + id, + started_at, + ended_at, + response_code, + error_message, + attempts, + result, + monitor_id + from + monitor_log + where + monitor_id = ? + ` + + if after != 0 { + query += "and id < ?" + } + + if before != 0 { + query += " and id >= ?" + } + + query += " and started_at >= ? and started_at < ?" + + query += "\norder by id desc" + + if limit > 0 { + query += "\nlimit " + strconv.Itoa(limit) + } + + monitorLogs := make([]MonitorLog, 0, limit) + + params := []any{monitorID} + + if after != 0 { + params = append(params, after) + } + + if before != 0 { + params = append(params, before) + } + + endOfDay := date.Add(time.Hour * 24) + params = append(params, date, endOfDay) + + rows, err := tx.Query(query, params...) + if err != nil { + return monitorLogs, fmt.Errorf("listMonitorLogs.Query: %w", err) + } + defer rows.Close() + + for rows.Next() { + monitorLog := MonitorLog{} + err = rows.Scan( + &monitorLog.ID, + &monitorLog.StartedAt, + &monitorLog.EndedAt, + &monitorLog.ResponseCode, + &monitorLog.ErrorMessage, + &monitorLog.Attempts, + &monitorLog.Result, + &monitorLog.MonitorID, + ) + if err != nil { + return monitorLogs, fmt.Errorf("listMonitorLogs.Scan: %w", err) + } + monitorLogs = append(monitorLogs, monitorLog) + } + + return monitorLogs, nil +} + +type MonitorLogView struct { + ID int + StartedAt string + Latency time.Duration + ResponseCode sql.NullInt64 + ErrorMessage sql.NullString + Attempts int + Result string + MonitorID int +} + +func getMonitor(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + dateParam := r.URL.Query().Get("date") + if dateParam == "" { + dateParam = time.Now().UTC().Format("2006-01-02") + } + + date, err := time.Parse("2006-01-02", dateParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + tx, err := db.Begin() + if err != nil { + log.Printf("getMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + const logLimit = 100 + + monitor, err := getMonitorByID(tx, id) + if err != nil { + log.Printf("getMonitor.getMonitorByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + monitorLogs, err := listMonitorLogs(tx, id, logLimit, 0, 0, date) + if err != nil { + log.Printf("getMonitor.listMonitorLogs: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + lastChecked, err := getMonitorLogLastChecked(tx, monitor.ID) + if err != nil { + log.Printf("getMonitor.getMonitorLogLastChecked: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if err = tx.Commit(); err != nil { + log.Printf("getMonitor.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if _, ok := r.URL.Query()["ready"]; ok { + if len(monitorLogs) == 0 { + w.WriteHeader(http.StatusNoContent) + return + } + } + + const markup = ` + {{define "title"}}{{.Monitor.Name}} - Monitor{{end}} + {{define "body"}} +
+
+
+ + + + + +

{{.Monitor.Name}}

+
+
+
+ {{if len .Logs}} +
+ {{if .LastCheckedSuccess}} + OK + {{else}} + Error + {{end}} +
+ + {{.NextRefreshMsg}} + + {{end}} +
+ +
+ + + Delete {{.Monitor.Name}} + +
+ + +
+ +
+
+
+
+ + +
+

Logs

+ +
+ + +
+
+ +
+ +
+ + {{if len .Logs}} +
+ {{range $i, $log := .Logs}} +
+ {{$log.StartedAt}} + {{$log.Latency}} + {{if eq $log.Result "error"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "success"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "timeout"}} + + TIMEOUT + + {{end}} +
+ {{end}} +
+ {{else}} +
+
+ + + +
+ Getting first logs... +
+ {{end}} +
+ + {{end}} + ` + + tmpl, err := parseTmpl("getMonitor", markup) + if err != nil { + log.Printf("getMonitor.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + refreshDelay := 5 + + nextRefreshMsg := fmt.Sprintf( + "Checking for updates in %ds", + refreshDelay, + ) + + timeIDs := make(map[int]string, logLimit) + for i, log := range monitorLogs { + if i > 0 { + lastLog := monitorLogs[i-1] + if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || log.StartedAt.Minute() != lastLog.StartedAt.Minute() { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } else { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } + + formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) + for _, log := range monitorLogs { + formattedMonitorLogs = append( + formattedMonitorLogs, + MonitorLogView{ + ID: log.ID, + StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), + Latency: log.EndedAt.Sub(log.StartedAt). + Round(time.Millisecond * 1), + ResponseCode: log.ResponseCode, + ErrorMessage: log.ErrorMessage, + Attempts: log.Attempts, + Result: log.Result, + MonitorID: log.MonitorID, + }, + ) + } + + if dateParam != "" { + w.Header().Set("HX-Push-Url", r.URL.Path+"?date="+dateParam) + } + + lastLogID := 0 + if len(monitorLogs) > 0 { + lastLogID = monitorLogs[len(monitorLogs)-1].ID + } + + err = tmpl.Execute( + w, + struct { + Monitor Monitor + Logs []MonitorLogView + NextRefreshMsg string + LastCheckedSuccess bool + LastLogID int + TimeIDs map[int]string + RefreshDelay int + Ctx pageCtx + Date string + }{ + Monitor: monitor, + Logs: formattedMonitorLogs, + NextRefreshMsg: nextRefreshMsg, + LastCheckedSuccess: lastChecked.ResponseCode.Int32 != 0 && lastChecked.ResponseCode.Int32 < 400, + LastLogID: lastLogID, + TimeIDs: timeIDs, + RefreshDelay: refreshDelay, + Date: dateParam, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("getMonitor.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + +func getMonitorAllLogs(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + afterParam := r.URL.Query().Get("after") + if afterParam == "" { + return + } + + after, err := strconv.Atoi(afterParam) + if err != nil { + return + } + + dateParam := r.URL.Query().Get("date") + if dateParam == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + date, err := time.Parse("2006-01-02", dateParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + tx, err := db.Begin() + if err != nil { + log.Printf("getMonitorAllLogs.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + const logLimit = 2160 + + monitorLogs, err := listMonitorLogs(tx, id, logLimit, after, 0, date) + if err != nil { + log.Printf("getMonitorAllLogs.listMonitorLogs: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if err = tx.Commit(); err != nil { + log.Printf("getMonitorAllLogs.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + lastLogID := 0 + if len(monitorLogs) > 0 { + lastLogID = monitorLogs[len(monitorLogs)-1].ID + } + + const markup = ` + {{range $log := .Logs}} +
+ {{$log.StartedAt}} + {{$log.Latency}} + {{if eq $log.Result "error"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "success"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "timeout"}} + + TIMEOUT + + {{end}} +
+ {{if eq $log.ID $.LastLogID }} +
+
+ {{end}} + {{end}} + {{if not (len .Logs)}} +
+ + +
+ + +
+
+ + {{end}} + ` + + tmpl, err := parseTmpl("getMonitorAllLogs", markup) + if err != nil { + log.Printf("getMonitorAllLogs.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) + for _, log := range monitorLogs { + formattedMonitorLogs = append( + formattedMonitorLogs, + MonitorLogView{ + ID: log.ID, + StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), + Latency: log.EndedAt.Sub(log.StartedAt). + Round(time.Millisecond * 1), + ResponseCode: log.ResponseCode, + ErrorMessage: log.ErrorMessage, + Attempts: log.Attempts, + Result: log.Result, + MonitorID: log.MonitorID, + }, + ) + } + + timeIDs := make(map[int]string, logLimit) + for i, log := range monitorLogs { + if i > 0 { + lastLog := monitorLogs[i-1] + if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || + log.StartedAt.Minute() != lastLog.StartedAt.Minute() { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } else { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } + + err = tmpl.Execute( + w, + struct { + Logs []MonitorLogView + LastLogID int + MonitorID int + TimeIDs map[int]string + Date string + }{ + Logs: formattedMonitorLogs, + LastLogID: lastLogID, + MonitorID: id, + TimeIDs: timeIDs, + Date: dateParam, + }, + ) + if err != nil { + log.Printf("getMonitorAllLogs.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + +func getMonitorPoll(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + beforeParam := r.URL.Query().Get("before") + if beforeParam == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + before, err := strconv.Atoi(beforeParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + dateParam := r.URL.Query().Get("date") + if dateParam == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + date, err := time.Parse("2006-01-02", dateParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + tx, err := db.Begin() + if err != nil { + log.Printf("getMonitorPoll.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + monitorLogs, err := listMonitorLogs(tx, id, 0, 0, before, date) + if err != nil { + log.Printf("getMonitorPoll.listMonitorLogs: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + lastChecked, err := getMonitorLogLastChecked(tx, id) + if err != nil { + log.Printf("getMonitorPoll.getMonitorLogLastChecked: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if err = tx.Commit(); err != nil { + log.Printf("getMonitorPoll.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + refreshDelay := 5 + + nextRefreshMsg := fmt.Sprintf( + "Checking for updates in %ds", + refreshDelay, + ) + + const markup = ` +
+ {{if .LastCheckedSuccess}} + OK + {{else}} + Error + {{end}} +
+ + + {{.NextRefreshMsg}} + + + {{range $i, $log := .Logs}} +
+ {{$log.StartedAt}} + {{$log.Latency}} + {{if eq $log.Result "error"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "success"}} + + {{$log.ResponseCode.Int64}} + + {{end}} + + {{if eq $log.Result "timeout"}} + + TIMEOUT + + {{end}} +
+ {{end}} + ` + + tmpl, err := parseTmpl("getMonitorPoll", markup) + if err != nil { + log.Printf("getMonitorPoll.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + formattedMonitorLogs := make([]MonitorLogView, 0, len(monitorLogs)) + for _, log := range monitorLogs { + formattedMonitorLogs = append( + formattedMonitorLogs, + MonitorLogView{ + ID: log.ID, + StartedAt: log.StartedAt.Format("2006/01/02 15:04:05 MST"), + Latency: log.EndedAt.Sub(log.StartedAt). + Round(time.Millisecond * 1), + ResponseCode: log.ResponseCode, + ErrorMessage: log.ErrorMessage, + Attempts: log.Attempts, + Result: log.Result, + MonitorID: log.MonitorID, + }, + ) + } + + timeIDs := make(map[int]string, len(formattedMonitorLogs)) + for i, log := range monitorLogs { + if i > 0 { + lastLog := monitorLogs[i-1] + if log.StartedAt.Hour() != lastLog.StartedAt.Hour() || + log.StartedAt.Minute() != lastLog.StartedAt.Minute() { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } else { + timeIDs[log.ID] = log.StartedAt.Format("15:04") + } + } + + err = tmpl.Execute( + w, + struct { + Logs []MonitorLogView + LastLogID int + MonitorID int + TimeIDs map[int]string + RefreshDelay int + NextRefreshMsg string + LastCheckedSuccess bool + Date string + }{ + Logs: formattedMonitorLogs, + MonitorID: id, + TimeIDs: timeIDs, + RefreshDelay: 5, + NextRefreshMsg: nextRefreshMsg, + LastCheckedSuccess: lastChecked.ResponseCode.Int32 != 0 && lastChecked.ResponseCode.Int32 < 400, + Date: dateParam, + }, + ) + if err != nil { + log.Printf("getMonitorPoll.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + +func getEditMonitor(w http.ResponseWriter, r *http.Request) { + readOnly := strings.HasSuffix(r.URL.Path, "view") + if !readOnly && metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) + return + } + + refreshID := r.URL.Query().Get("refresh") + id, _ := strconv.Atoi(chi.URLParam(r, "id")) + + tx, err := db.Begin() + if err != nil { + log.Printf("getEditMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + monitor, err := getMonitorByID(tx, id) + if err != nil { + log.Printf("getEditMonitor.getMonitorByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + channels, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + log.Printf("getEditMonitor.listNotificationChannels: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + monitorNotificationChannels, err := listNotificationChannelsByMonitorID(tx, monitor.ID) + if err != nil { + log.Printf("getEditMonitor.listNotificationChannelsByMonitorID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + monitorNotificationsMap := map[int]bool{} + for _, v := range monitorNotificationChannels { + monitorNotificationsMap[v.ID] = true + } + + mailGroups, err := listMailGroups(tx) + if err != nil { + log.Printf("getEditMonitor.mailGroups: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + selectedMailGroups, err := listMailGroupIDsByMonitorID(tx, monitor.ID) + if err != nil { + log.Printf("getEditMonitor.listMailGroupIDsByMonitorID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + selectedMailGroupsMap := map[int]bool{} + for _, v := range selectedMailGroups { + selectedMailGroupsMap[v.ID] = true + } + + err = tx.Commit() + if err != nil { + log.Printf("getEditMonitor.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + const markup = ` + {{define "title"}} + {{if .ReadOnly}} + View monitor + {{else}} + Edit monitor + {{end}} + {{end}} + {{define "body"}} +
+
+
+ + + + + + + {{if .ReadOnly}} +

View monitor

+ {{else}} +

Edit monitor

+ {{end}} +
+
+ +
+ + + + +
+
+ +
+ + + + + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+
+ +
+
+ Request headers +
+
+ + + +
+ No headers set + {{if not .Ctx.ConfigFile}} + + {{else}} + Go to settings + {{end}} +
+
+ Request headers list +
+ {{if len .Monitor.RequestHeaders}} + {{range $k, $v := .Monitor.RequestHeaders}} +
+ + + +
+ {{end}} + {{else}} +
+ + + +
+ {{end}} +
+ +
+
+
+ +
+
+ + +
+
+ + Text +
+
+ + Form +
+
+
+ +
+
+ +
+ Form values +
+
+ + + +
+ No parameters set + +
+
+
+ {{if and (eq .Monitor.BodyFormat.String "form") (len .FormData)}} + {{range $key, $values := .FormData}} +
+ + + +
+ {{end}} + {{else}} +
+ + + +
+ {{end}} +
+ +
+
+
+ +
+ + + {{if not (len .Notifications)}} +
+
+ + + +
+ No notification channels found +
+ {{if not .Ctx.ConfigFile}} + + + + + + Add channel + + + {{else}} + Go to settings + {{end}} +
+
+ {{end}} + +
+ {{range $notification := .Notifications}} + + {{end}} +
+
+ +
+ + Mail groups + + + {{if not (len .MailGroups)}} +
+
+ + + + +
+ + No mail groups found + +
+ {{if not .Ctx.ConfigFile}} + + + + + + Add mail group + + + {{else}} + Go to settings + {{end}} +
+
+ {{end}} + +
+ {{range $mailGroup := .MailGroups}} + + {{end}} +
+
+ +
+ {{if not .ReadOnly}} + + {{end}} +
+ + + + + + +
+
+ {{end}} + ` + + tmpl, err := parseTmpl("getEditMonitor", markup) + if err != nil { + log.Printf("getEditMonitor.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + textBody := "" + if monitor.BodyFormat.String == "text" { + textBody = monitor.Body.String + } + + formData := url.Values{} + if monitor.BodyFormat.String == "form" { + data, err := url.ParseQuery(monitor.Body.String) + if err != nil { + log.Printf("getEditMonitor.ParseQuery: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + formData = data + } + + err = tmpl.Execute( + w, + struct { + Monitor Monitor + TextBody string + FormData url.Values + Notifications []NotificationChannel + MonitorNotifications map[int]bool + MailGroups []MailGroup + SelectedMailGroups map[int]bool + RefreshID string + ReadOnly bool + Ctx pageCtx + }{ + Monitor: monitor, + TextBody: textBody, + FormData: formData, + Notifications: channels, + MonitorNotifications: monitorNotificationsMap, + MailGroups: mailGroups, + SelectedMailGroups: selectedMailGroupsMap, + RefreshID: refreshID, + ReadOnly: readOnly, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("getEditMonitor.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + +func getDetailsMonitor(w http.ResponseWriter, r *http.Request) { + getEditMonitor(w, r) +} + +func editMonitor( + tx *sql.Tx, + id int, + name string, + url string, + method string, + frequency int, + timeout int, + attempts int, + requestHeaders sql.NullString, + bodyFormat sql.NullString, + body sql.NullString, +) (int, error) { + const query = ` + update monitor set name = ?, url = ?, method = ?, frequency = ?, timeout = ?, + attempts = ?, request_headers = ?, body_format = ?, body = ? + where id = ? + ` + + var monitorID int + _, err := tx.Exec( + query, + name, + url, + method, + frequency, + timeout, + attempts, + requestHeaders, + bodyFormat, + body, + id, + ) + if err != nil { + return monitorID, fmt.Errorf("editMonitor.QueryRow: %w", err) + } + + return id, nil +} + +func updateMonitorSlug(tx *sql.Tx, old string, new string) (int, error) { + const query = ` + update monitor set slug = ? where slug = ? returning id + ` + + var id int + + err := tx.QueryRow(query, new, old).Scan(&id) + if err != nil { + return id, fmt.Errorf("updateMonitorSlug.QueryRow: %w", err) + } + + return id, nil +} + +func postEditMonitor(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) + return + } + + name := r.PostFormValue("name") + if name == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + reqURL := r.PostFormValue("url") + validURL := true + parsedReqURL, err := url.Parse(reqURL) + if err != nil { + validURL = false + } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { + validURL = false + } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { + validURL = false + } + + if !validURL { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` + + Invalid URL + + `)) + return + } + + method := r.PostFormValue("method") + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if method != http.MethodGet && + method != http.MethodPost && + method != http.MethodPatch && + method != http.MethodPut && + method != http.MethodDelete { + w.WriteHeader(http.StatusBadRequest) + return + } + + frequency, err := strconv.Atoi(r.PostFormValue("frequency")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if frequency != 10 && frequency != 30 && frequency != 60 { + w.WriteHeader(http.StatusBadRequest) + return + } + + timeout, err := strconv.Atoi(r.PostFormValue("timeout")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if timeout != 5 && timeout != 10 && timeout != 15 { + w.WriteHeader(http.StatusBadRequest) + return + } + + attempts, err := strconv.Atoi(r.PostFormValue("attempts")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if attempts != 1 && attempts != 2 && attempts != 3 { + w.WriteHeader(http.StatusBadRequest) + return + } + + requestHeaders := sql.NullString{} + requestHeadersMap := map[string]string{} + if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { + for i := range r.Form["header-key"] { + requestHeadersMap[r.Form["header-key"][i]] = r.Form["header-value"][i] + } + } + requestHeadersSerialized, err := json.Marshal(requestHeadersMap) + if err != nil { + log.Printf("postEditMonitor.Marshal: %s", err) + w.WriteHeader(http.StatusBadRequest) + return + } + if len(requestHeadersMap) > 0 { + requestHeaders = sql.NullString{ + Valid: true, + String: string(requestHeadersSerialized), + } + } + + bodyFormat := sql.NullString{} + if r.PostFormValue("format") != "" { + bodyFormat = sql.NullString{ + Valid: true, + String: r.PostFormValue("format"), + } + } + + body := sql.NullString{} + if r.PostFormValue("body") != "" { + body = sql.NullString{ + Valid: true, + String: r.PostFormValue("body"), + } + } + + if r.PostFormValue("form-key") != "" && r.PostFormValue("form-value") != "" { + urlValues := url.Values{} + for i := 0; i < len(r.Form["form-key"]); i++ { + urlValues.Add(r.Form["form-key"][i], r.Form["form-value"][i]) + } + body = sql.NullString{ + Valid: true, + String: urlValues.Encode(), + } + } + + notificationChannelsParam := r.PostForm["notification-channels"] + notificationChannels := make([]int, 0, len(notificationChannelsParam)) + for _, channelID := range notificationChannelsParam { + id, err := strconv.Atoi(channelID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + notificationChannels = append(notificationChannels, id) + } + + mailGroupsParam := r.PostForm["mail-groups"] + mailGroups := make([]int, 0, len(mailGroupsParam)) + for _, channelID := range mailGroupsParam { + id, err := strconv.Atoi(channelID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + mailGroups = append(mailGroups, id) + } + + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postEditMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + idParam := chi.URLParam(r, "id") + monitorID, err := strconv.Atoi(idParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + _, err = getMonitorByID(tx, monitorID) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusBadRequest) + return + } + + log.Printf("postEditMonitor.getMonitorByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + _, err = editMonitor( + tx, + monitorID, + name, + reqURL, + method, + frequency, + timeout, + attempts, + requestHeaders, + bodyFormat, + body, + ) + if err != nil { + log.Printf("postEditMonitor.createMonitor: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = updateMonitorNotificationChannels(tx, monitorID, notificationChannels) + if err != nil { + log.Printf("postEditMonitor.updateMonitorNotificationChannels: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = updateMonitorMailGroups(tx, monitorID, mailGroups) + if err != nil { + log.Printf("postEditMonitor.updateMonitorMailGroups: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if err = tx.Commit(); err != nil { + log.Printf("postEditMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Add("HX-Location", "/admin/monitors/"+idParam) +} + +func deleteMonitorByID(tx *sql.Tx, id int) error { + const query = ` + delete from monitor where id = ? + ` + + _, err := tx.Exec(query, id) + if err != nil { + return fmt.Errorf("deleteMonitorByID.Exec: %w", err) + } + + return nil +} + +func deleteMonitor(w http.ResponseWriter, r *http.Request) { + id, _ := strconv.Atoi(chi.URLParam(r, "id")) + + tx, err := rwDB.Begin() + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + log.Printf("deleteMonitor.Begin: %s", err) + return + } + defer tx.Rollback() + + err = deleteMonitorByID(tx, id) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + log.Printf("deleteMonitor.deleteMonitorByID: %s", err) + return + } + + err = tx.Commit() + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + log.Printf("deleteMonitor.Commit: %s", err) + return + } + + w.Header().Add("HX-Location", "/admin/monitors") +} + +func getCreateMonitor(w http.ResponseWriter, r *http.Request) { + refreshID := r.URL.Query().Get("refresh") + + tx, err := db.Begin() + if err != nil { + log.Printf("getCreateMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + notifications, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + log.Printf("getCreateMonitor.listNotificationChannels: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + mailGroups, err := listMailGroups(tx) + if err != nil { + log.Printf("getEditMonitor.mailGroups: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tx.Commit() + if err != nil { + log.Printf("getCreateMonitor.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + const markup = ` + {{define "title"}}Create monitor{{end}} + {{define "body"}} +
+
+
+ + + + + + +

Create monitor

+
+
+ +
+ + + + +
+
+ +
+ + + + + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+
+ +
+
+ Request headers +
+
+ + + +
+ No headers set + +
+
+ Request headers list +
+
+ + + +
+
+ +
+
+
+ + + + +
+ + + {{if not (len .Notifications)}} +
+
+ + + +
+ No notification channels found +
+ + + + + + Add channel + + +
+
+ {{end}} + +
+ {{range $notification := .Notifications}} + + {{end}} +
+
+ +
+ + Mail groups + + + {{if not (len .MailGroups)}} +
+
+ + + + +
+ + No mail groups found + +
+ + + + + + Add mail group + + +
+
+ {{end}} + +
+ {{range $mailGroup := .MailGroups}} + + {{end}} +
+
+ +
+ +
+ + + + + + +
+
+ {{end}} + ` + + tmpl, err := parseTmpl("getCreateMonitor", markup) + if err != nil { + log.Printf("getCreateMonitor.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tmpl.Execute( + w, + struct { + Notifications []NotificationChannel + MailGroups []MailGroup + RefreshID string + Ctx pageCtx + }{ + Notifications: notifications, + MailGroups: mailGroups, + RefreshID: refreshID, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("getCreateMonitor.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + +func updateMonitorNotificationChannels(tx *sql.Tx, monitorID int, channelIDs []int) error { + const deleteQuery = ` + delete from monitor_notification_channel where monitor_id = ? + ` + + _, err := tx.Exec(deleteQuery, monitorID) + if err != nil { + return fmt.Errorf("updateMonitorNotificationChannels.DeleteExec: %w", err) + } + + if len(channelIDs) > 0 { + const baseInsertQuery = ` + insert into monitor_notification_channel(monitor_id, notification_channel_id) + values + ` + + insertQuery := baseInsertQuery + + for i := range channelIDs { + insertQuery += "(?, ?)" + + if i != len(channelIDs)-1 { + insertQuery += "," + } + } + + params := []any{} + for _, v := range channelIDs { + params = append(params, monitorID, v) + } + + _, err = tx.Exec(insertQuery, params...) + if err != nil { + return fmt.Errorf("updateMonitorNotificationChannels.InsertExec: %w", err) + } + } + + return nil +} + +func createMonitor( + tx *sql.Tx, + slug string, + name string, + url string, + method string, + frequency int, + timeout int, + attempts int, + requestHeaders sql.NullString, + bodyFormat sql.NullString, + body sql.NullString, +) (int, error) { + const query = ` + insert into + monitor(slug, name, url, method, frequency, timeout, attempts, request_headers, + body_format, body) + values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?) returning id + ` + + var monitorID int + err := tx.QueryRow( + query, + slug, + name, + url, + method, + frequency, + timeout, + attempts, + requestHeaders, + bodyFormat, + body, + ).Scan(&monitorID) + if err != nil { + return monitorID, fmt.Errorf("createMonitor.QueryRow: %w", err) + } + + return monitorID, nil +} + +func postCreateMonitor(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) + return + } + + name := r.PostFormValue("name") + if name == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + reqURL := r.PostFormValue("url") + validURL := true + parsedReqURL, err := url.Parse(reqURL) + if err != nil { + validURL = false + } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { + validURL = false + } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { + validURL = false + } + + if !validURL { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` + + Invalid URL + + `)) + return + } + + method := r.PostFormValue("method") + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if method != http.MethodGet && + method != http.MethodPost && + method != http.MethodPatch && + method != http.MethodPut && + method != http.MethodDelete { + w.WriteHeader(http.StatusBadRequest) + return + } + + frequency, err := strconv.Atoi(r.PostFormValue("frequency")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if frequency != 10 && frequency != 30 && frequency != 60 { + w.WriteHeader(http.StatusBadRequest) + return + } + + timeout, err := strconv.Atoi(r.PostFormValue("timeout")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if timeout != 5 && timeout != 10 && timeout != 15 { + w.WriteHeader(http.StatusBadRequest) + return + } + + attempts, err := strconv.Atoi(r.PostFormValue("attempts")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + if attempts != 1 && attempts != 2 && attempts != 3 { + w.WriteHeader(http.StatusBadRequest) + return + } + + requestHeaders := sql.NullString{} + requestHeadersMap := map[string]string{} + if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { + for i := range r.Form["header-key"] { + requestHeadersMap[r.Form["header-key"][i]] = r.Form["header-value"][i] + } + } + requestHeadersSerialized, err := json.Marshal(requestHeadersMap) + if err != nil { + log.Printf("postEditMonitor.Marshal: %s", err) + w.WriteHeader(http.StatusBadRequest) + return + } + if len(requestHeadersMap) > 0 { + requestHeaders = sql.NullString{ + Valid: true, + String: string(requestHeadersSerialized), + } + } + + body := sql.NullString{} + if r.PostFormValue("body") != "" { + body = sql.NullString{ + Valid: true, + String: r.PostFormValue("body"), + } + } + + if r.PostFormValue("form-key") != "" && r.PostFormValue("form-value") != "" { + urlValues := url.Values{} + for i := 0; i < len(r.Form["form-key"]); i++ { + urlValues.Add(r.Form["form-key"][i], r.Form["form-value"][i]) + } + body = sql.NullString{ + Valid: true, + String: urlValues.Encode(), + } + } + + format := sql.NullString{} + if r.PostFormValue("format") != "" { + format = sql.NullString{ + Valid: true, + String: r.PostFormValue("format"), + } + } + + notificationChannelsParam := r.PostForm["notification-channels"] + notificationChannels := make([]int, 0, len(notificationChannelsParam)) + for _, channelID := range notificationChannelsParam { + id, err := strconv.Atoi(channelID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + notificationChannels = append(notificationChannels, id) + } + + mailGroupsParam := r.PostForm["mail-groups"] + mailGroups := make([]int, 0, len(mailGroupsParam)) + for _, channelID := range mailGroupsParam { + id, err := strconv.Atoi(channelID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + mailGroups = append(mailGroups, id) + } + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postCreateMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + monitors, err := listMonitors(tx) + if err != nil { + log.Printf("postCreateMonitor.listMonitors: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + monitorSlugs := map[string]bool{} + for _, v := range monitors { + monitorSlugs[v.Slug] = true + } + + monitorID, err := createMonitor( + tx, + generateSlug(name, monitorSlugs), + name, + reqURL, + method, + frequency, + timeout, + attempts, + requestHeaders, + format, + body, + ) + if err != nil { + log.Printf("postCreateMonitor.createMonitor: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = updateMonitorNotificationChannels(tx, monitorID, notificationChannels) + if err != nil { + log.Printf("postCreateMonitor.updateMonitorNotificationChannels: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = updateMonitorMailGroups(tx, monitorID, mailGroups) + if err != nil { + log.Printf("postEditMonitor.updateMonitorMailGroups: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if err = tx.Commit(); err != nil { + log.Printf("postCreateMonitor.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Add("HX-Location", "/admin/monitors/"+strconv.Itoa(monitorID)) +} + +type AlertDetailMessage struct { + ID int + Content string + CreatedAt *time.Time + LastUpdatedAt *time.Time +} + +type AlertDetailService struct { + ID int + Name string + HelperText string +} + +type AlertDetail struct { + ID int + Title string + AlertType string + Severity string + CreatedAt *time.Time + EndedAt *time.Time + Messages []AlertDetailMessage + Services []AlertDetailService +} + +func getAlertByID(tx *sql.Tx, id int) (AlertDetail, error) { + const alertQuery = ` + select + id, + title, + type, + severity, + created_at, + ended_at + from + alert + where + id = ? + ` + + alert := AlertDetail{} + + err := tx.QueryRow(alertQuery, id).Scan( + &alert.ID, + &alert.Title, + &alert.AlertType, + &alert.Severity, + &alert.CreatedAt, + &alert.EndedAt, + ) + if err != nil { + return alert, fmt.Errorf("getAlertByID.QueryRow: %w", err) + } + + const messageQuery = ` + select + id, + content, + created_at, + last_updated_at + from + alert_message + where + alert_id = ? + order by created_at desc + ` + + rows, err := tx.Query(messageQuery, id) + if err != nil { + return alert, fmt.Errorf("getAlertByID.Query: %w", err) + } + defer rows.Close() + + for rows.Next() { + message := AlertDetailMessage{} + err = rows.Scan( + &message.ID, + &message.Content, + &message.CreatedAt, + &message.LastUpdatedAt, + ) + if err != nil { + return alert, fmt.Errorf("getAlertByID.Scan: %w", err) + } + + alert.Messages = append(alert.Messages, message) + } + + const serviceQuery = ` + select + service.id, + service.name, + service.helper_text + from + alert_service + left join + service on service.id = alert_service.service_id + where + alert_id = ? + ` + + rows, err = tx.Query(serviceQuery, id) + if err != nil { + return alert, fmt.Errorf("getAlertByID.Query2: %w", err) + } + defer rows.Close() + + for rows.Next() { + service := AlertDetailService{} + err = rows.Scan( + &service.ID, + &service.Name, + &service.HelperText, + ) + if err != nil { + return alert, fmt.Errorf("getAlertByID.Scan2: %w", err) + } + + alert.Services = append(alert.Services, service) + } + + return alert, nil +} + +type AlertSettings struct { + SlackInstallURL string + SlackClientSecret string + ManagedSubscriptions bool +} + +func getAlertSettings(tx *sql.Tx) (AlertSettings, error) { + const query = ` + select name, value from alert_setting + ` + + settings := AlertSettings{} + + rows, err := tx.Query(query) + if err != nil { + return settings, fmt.Errorf("getAlertSettings.Query: %w", err) + } + defer rows.Close() + + for rows.Next() { + var k, v string + + err = rows.Scan(&k, &v) + if err != nil { + return settings, fmt.Errorf("getAlertSettings.Scan: %w", err) + } + + if k == "slack-install-url" { + settings.SlackInstallURL = v + } else if k == "slack-client-secret" { + settings.SlackClientSecret = v + } else if k == "managed-subscriptions" { + parsedV, err := strconv.ParseBool(v) + if err != nil { + return settings, fmt.Errorf("getAlertSettings.ParseBool: %w", err) + } + settings.ManagedSubscriptions = parsedV + } + } + + return settings, nil +} + +func getAlertSMTPNotificationSetting(tx *sql.Tx) (int, error) { + const query = ` + select notification_channel_id from alert_setting_smtp_notification limit 1 + ` + + v := 0 + + err := tx.QueryRow(query).Scan(&v) + if err != nil { + return v, fmt.Errorf("getAlertSMTPNotificationSetting.QueryRow: %w", err) + } + + return v, nil +} + +func getAlertNotifications(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() + if err != nil { + log.Printf("getAlertNotifications.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() + + notifications, err := listNotificationChannels(tx, listNotificationsOptions{Type: "smtp"}) + if err != nil { + log.Printf("getAlertNotifications.listNotificationChannels: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
-
- Request headers -
-
- - - -
- No headers set - -
-
- Request headers list -
- {{if len .Monitor.RequestHeaders}} - {{range $k, $v := .Monitor.RequestHeaders}} -
- - - -
- {{end}} - {{else}} -
- - - -
- {{end}} -
- -
-
-
+ settings, err := getAlertSettings(tx) + if err != nil { + log.Printf("getAlertNotifications.getAlertSettings: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
-
- + smtpNotificationChannelID, err := getAlertSMTPNotificationSetting(tx) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getAlertNotifications.getAlertSMTPNotificationSetting: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
-
- - Text -
-
- - Form -
-
-
+ err = tx.Commit() + if err != nil { + log.Printf("getAlertNotifications.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
-
- -
- Form values -
-
- - - -
- No parameters set - -
-
-
- {{if and (eq .Monitor.BodyFormat.String "form") (len .FormData)}} - {{range $key, $values := .FormData}} -
- - - -
- {{end}} - {{else}} -
- - - -
- {{end}} -
- -
-
+ const markup = ` + {{define "title"}}Alert notifications{{end}} + {{define "body"}} +
+
+
+ + + + + + +

Alert notifications

+
-
+

Configure which options appear on your status page for visitors to receive alert updates

+ +
+
- {{if not (len .Notifications)}} -
-
- - - -
- No notification channels found -
- - - - - - Add channel - - +
+ {{if not (len .Notifications)}} +
+
+ + + + +
+ No email notification channels found +
+ {{if not .Ctx.ConfigFile}} + + + + + + Add channel + + + {{else}} + + Go to settings + + {{end}} +
-
- {{end}} - -
+ {{end}} {{range $notification := .Notifications}} @@ -6618,2120 +10070,1745 @@ func getEditMonitor(w http.ResponseWriter, r *http.Request) {
-
- - Mail groups - - - {{if not (len .MailGroups)}} -
-
- - - - -
- - No mail groups found - -
- - - - - - Add mail group - - -
-
- {{end}} + -
- {{range $mailGroup := .MailGroups}} - - {{end}} -
-
- -
- +
+
- - - - - +

Copy the sharable URL and paste it into Statusnook

+ +
+
+ +
+ {{if not .Ctx.ConfigFile}} + + {{end}} +
+ {{end}} ` - tmpl, err := parseTmpl("getEditMonitor", markup) + tmpl, err := parseTmpl("getAlertNotifications", markup) if err != nil { - log.Printf("getEditMonitor.parseTmpl: %s", err) + log.Printf("getAlertNotifications.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - textBody := "" - if monitor.BodyFormat.String == "text" { - textBody = monitor.Body.String - } - - formData := url.Values{} - if monitor.BodyFormat.String == "form" { - data, err := url.ParseQuery(monitor.Body.String) - if err != nil { - log.Printf("getEditMonitor.ParseQuery: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - formData = data - } - - err = tmpl.Execute( - w, - struct { - Monitor Monitor - TextBody string - FormData url.Values - Notifications []NotificationChannel - MonitorNotifications map[int]bool - MailGroups []MailGroup - SelectedMailGroups map[int]bool - RefreshID string - Ctx pageCtx - }{ - Monitor: monitor, - TextBody: textBody, - FormData: formData, - Notifications: channels, - MonitorNotifications: monitorNotificationsMap, - MailGroups: mailGroups, - SelectedMailGroups: selectedMailGroupsMap, - RefreshID: refreshID, - Ctx: getPageCtx(r), - }, - ) + err = tmpl.Execute(w, struct { + Notifications []NotificationChannel + Settings AlertSettings + SMTPNotificationChannel int + Domain string + ConfigFileEnabled bool + Ctx pageCtx + }{ + Notifications: notifications, + Settings: settings, + SMTPNotificationChannel: smtpNotificationChannelID, + Domain: metaDomain, + ConfigFileEnabled: metaConfigFileEnabled, + Ctx: getPageCtx(r), + }) if err != nil { - log.Printf("getEditMonitor.Execute: %s", err) + log.Printf("getAlertNotifications.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func editMonitor( +func updateAlertSettings( tx *sql.Tx, - id int, - name string, - url string, - method string, - frequency int, - timeout int, - attempts int, - requestHeaders sql.NullString, - bodyFormat sql.NullString, - body sql.NullString, -) (int, error) { + slackInstallURL string, + slackClientSecret string, + managedSubscriptions bool, +) error { const query = ` - update monitor set name = ?, url = ?, method = ?, frequency = ?, timeout = ?, - attempts = ?, request_headers = ?, body_format = ?, body = ? - where id = ? + insert into alert_setting(name, value) values(?, ?), (?, ?), (?, ?) + on conflict(name) do update set value = excluded.value ` - var monitorID int _, err := tx.Exec( query, - name, - url, - method, - frequency, - timeout, - attempts, - requestHeaders, - bodyFormat, - body, - id, + "slack-install-url", + slackInstallURL, + "slack-client-secret", + slackClientSecret, + "managed-subscriptions", + managedSubscriptions, ) if err != nil { - return monitorID, fmt.Errorf("editMonitor.QueryRow: %w", err) + return fmt.Errorf("updateAlertSettings.Exec: %w", err) + } + + return nil +} + +func updateAlertSMTPNotificationSetting(tx *sql.Tx, notificationID int) error { + const deleteQuery = ` + delete from alert_setting_smtp_notification + ` + + _, err := tx.Exec(deleteQuery) + if err != nil { + return fmt.Errorf("updateAlertSMTPNotificationSetting.ExecDelete: %w", err) } - return id, nil + if notificationID != 0 { + const insertQuery = ` + insert into alert_setting_smtp_notification(notification_channel_id) values(?) + ` + + _, err = tx.Exec(insertQuery, notificationID) + if err != nil { + return fmt.Errorf("updateAlertSMTPNotificationSetting.ExecInsert: %w", err) + } + } + + return nil } -func postEditMonitor(w http.ResponseWriter, r *http.Request) { - name := r.PostFormValue("name") - if name == "" { +func postAlertNotifications(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { w.WriteHeader(http.StatusBadRequest) return } - reqURL := r.PostFormValue("url") - validURL := true - parsedReqURL, err := url.Parse(reqURL) - if err != nil { - validURL = false - } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { - validURL = false - } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { - validURL = false + slackInstallURLParam := r.FormValue("slack-install-url") + slackInstallURL := "" + if slackInstallURLParam != "" { + url, err := url.ParseRequestURI(slackInstallURLParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + slackInstallURL = url.String() } - if !validURL { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` - - Invalid URL - - `)) - return + slackClientSecretParam := r.FormValue("slack-client-secret") + + smtpNotificationChannelIDParam := r.FormValue("smtp-notification-channel") + smtpNotificationChannelID := 0 + if smtpNotificationChannelIDParam != "" { + id, err := strconv.Atoi(r.FormValue("smtp-notification-channel")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + smtpNotificationChannelID = id } - method := r.PostFormValue("method") + managedSubscriptions := false + managedSubscriptionsParam := r.FormValue("managed-subscriptions") + if managedSubscriptionsParam == "on" { + managedSubscriptions = true + } + + tx, err := rwDB.Begin() if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("postAlertNotifications.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if method != http.MethodGet && - method != http.MethodPost && - method != http.MethodPatch && - method != http.MethodPut && - method != http.MethodDelete { + defer tx.Rollback() + + channel, err := getNotificationChannelByID(tx, smtpNotificationChannelID) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("postAlertNotifications.getNotificationChannelByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if channel.ID != 0 && channel.Type != "smtp" { w.WriteHeader(http.StatusBadRequest) return } - frequency, err := strconv.Atoi(r.PostFormValue("frequency")) + err = updateAlertSMTPNotificationSetting(tx, channel.ID) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("postAlertNotifications.updateAlertSMTPNotificationSetting: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if frequency != 10 && frequency != 30 && frequency != 60 { - w.WriteHeader(http.StatusBadRequest) + + err = updateAlertSettings(tx, slackInstallURL, slackClientSecretParam, managedSubscriptions) + if err != nil { + log.Printf("postAlertNotifications.updateAlertSettings: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - timeout, err := strconv.Atoi(r.PostFormValue("timeout")) + err = tx.Commit() if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("postAlertNotifications.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if timeout != 5 && timeout != 10 && timeout != 15 { + + w.Header().Add("HX-Location", "/admin/alerts") +} + +func getAlert(w http.ResponseWriter, r *http.Request) { + idParam := chi.URLParam(r, "id") + + id, err := strconv.Atoi(idParam) + if err != nil { w.WriteHeader(http.StatusBadRequest) return } - attempts, err := strconv.Atoi(r.PostFormValue("attempts")) + tx, err := db.Begin() if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("getAlert.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if attempts != 1 && attempts != 2 && attempts != 3 { - w.WriteHeader(http.StatusBadRequest) + defer tx.Rollback() + + alert, err := getAlertByID(tx, id) + if err != nil { + log.Printf("getAlert.getAlertByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - requestHeaders := sql.NullString{} - requestHeadersMap := map[string]string{} - if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { - for i := range r.Form["header-key"] { - requestHeadersMap[r.Form["header-key"][i]] = r.Form["header-value"][i] - } + if err = tx.Commit(); err != nil { + log.Printf("getAlert.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - requestHeadersSerialized, err := json.Marshal(requestHeadersMap) + + const markup = ` + {{define "title"}}{{.Alert.Title}} - Alert{{end}} + {{define "body"}} +
+
+
+ + + + + + {{if not .Alert.EndedAt }} + {{if eq .Alert.AlertType "incident"}} +
LIVE
+ {{else}} +
ACTIVE
+ {{end}} + {{end}} +

{{.Alert.Title}}

+
+
+ + + + Resolve {{.Alert.Title}} +
+
+ + +
+
+
+ + + Unresolve {{.Alert.Title}} +
+
+ + +
+
+
+ + + Delete {{.Alert.Title}} +
+
+ + +
+
+
+
+
+
+

Affected services

+
+ {{.Services}} +
+
+
+
+

Timeline

+ +
+
+ {{range $message := .Alert.Messages}} +
+
+ {{$message.CreatedAt}} +
+ + + + Delete message +
+
+ + +
+
+
+
+
+ {{$message.Content}} +
+ {{end}} +
+
+
+ {{end}} + ` + + tmpl, err := parseTmpl("getAlert", markup) if err != nil { - log.Printf("postEditMonitor.Marshal: %s", err) - w.WriteHeader(http.StatusBadRequest) + log.Printf("getAlert.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - if len(requestHeadersMap) > 0 { - requestHeaders = sql.NullString{ - Valid: true, - String: string(requestHeadersSerialized), - } + + type FormattedAlertDetailMessage struct { + ID int + Content string + CreatedAt string + LastUpdatedAt string } - bodyFormat := sql.NullString{} - if r.PostFormValue("format") != "" { - bodyFormat = sql.NullString{ - Valid: true, - String: r.PostFormValue("format"), - } + type FormattedAlertDetailService struct { + ID int + Name string + HelperText string } - body := sql.NullString{} - if r.PostFormValue("body") != "" { - body = sql.NullString{ - Valid: true, - String: r.PostFormValue("body"), - } + type FormattedAlertDetail struct { + ID int + Title string + AlertType string + Severity string + CreatedAt string + EndedAt string + Messages []FormattedAlertDetailMessage + Services []FormattedAlertDetailService } - if r.PostFormValue("form-key") != "" && r.PostFormValue("form-value") != "" { - urlValues := url.Values{} - for i := 0; i < len(r.Form["form-key"]); i++ { - urlValues.Add(r.Form["form-key"][i], r.Form["form-value"][i]) - } - body = sql.NullString{ - Valid: true, - String: urlValues.Encode(), - } + formattedAlert := FormattedAlertDetail{} + formattedAlert.ID = alert.ID + formattedAlert.Title = alert.Title + formattedAlert.AlertType = alert.AlertType + formattedAlert.Severity = alert.Severity + formattedAlert.CreatedAt = alert.CreatedAt.Format("02/01/2006 15:04 MST") + if alert.EndedAt != nil { + formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") } - notificationChannelsParam := r.PostForm["notification-channels"] - notificationChannels := make([]int, 0, len(notificationChannelsParam)) - for _, channelID := range notificationChannelsParam { - id, err := strconv.Atoi(channelID) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - return + for _, message := range alert.Messages { + createdAt := message.CreatedAt.Format("Jan 2 2006 • 15:04 MST") + if message.CreatedAt.Year() == time.Now().UTC().Year() { + createdAt = message.CreatedAt.Format("Jan 2 • 15:04 MST") } - notificationChannels = append(notificationChannels, id) - } - - mailGroupsParam := r.PostForm["mail-groups"] - mailGroups := make([]int, 0, len(mailGroupsParam)) - for _, channelID := range mailGroupsParam { - id, err := strconv.Atoi(channelID) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - return + formattedMessage := FormattedAlertDetailMessage{ + ID: message.ID, + Content: message.Content, + CreatedAt: createdAt, + } + if message.LastUpdatedAt != nil { + formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format("02/01/2006 15:04 MST") } - mailGroups = append(mailGroups, id) + formattedAlert.Messages = append( + formattedAlert.Messages, + formattedMessage, + ) } - tx, err := rwDB.Begin() + serviceNames := make([]string, 0, len(alert.Services)) + for _, service := range alert.Services { + serviceNames = append(serviceNames, service.Name) + } + + err = tmpl.Execute( + w, + struct { + Alert FormattedAlertDetail + Services string + Ctx pageCtx + }{ + Alert: formattedAlert, + Services: strings.Join(serviceNames, " • "), + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("postEditMonitor.Begin: %s", err) + log.Printf("getAlert.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() +} - idParam := chi.URLParam(r, "id") - monitorID, err := strconv.Atoi(idParam) +func deleteAlertByID(tx *sql.Tx, id int) error { + const query = ` + delete from alert where id = ? + ` + + _, err := tx.Exec(query, id) + if err != nil { + return fmt.Errorf("deleteAlertByID.Exec: %w", err) + } + + return nil +} + +func deleteAlert(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { w.WriteHeader(http.StatusBadRequest) return } - _, err = getMonitorByID(tx, monitorID) + tx, err := rwDB.Begin() if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusBadRequest) - return - } + log.Printf("deleteAlert.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() - log.Printf("postEditMonitor.getMonitorByID: %s", err) + err = deleteAlertByID(tx, id) + if err != nil { + log.Printf("deleteAlert.deleteAlertByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - _, err = editMonitor( - tx, - monitorID, - name, - reqURL, - method, - frequency, - timeout, - attempts, - requestHeaders, - bodyFormat, - body, - ) + err = tx.Commit() if err != nil { - log.Printf("postEditMonitor.createMonitor: %s", err) + log.Printf("deleteAlert.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = updateMonitorNotificationChannels(tx, monitorID, notificationChannels) + w.Header().Add("HX-Location", "/admin/alerts") +} + +func getCreateAlert(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { - log.Printf("postEditMonitor.updateMonitorNotificationChannels: %s", err) + log.Printf("getCreateAlert.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = updateMonitorMailGroups(tx, monitorID, mailGroups) + services, err := listServices(tx) if err != nil { - log.Printf("postEditMonitor.updateMonitorMailGroups: %s", err) + log.Printf("getCreateAlert.listServices: %s", err) w.WriteHeader(http.StatusInternalServerError) return } if err = tx.Commit(); err != nil { - log.Printf("postEditMonitor.Begin: %s", err) + log.Printf("getCreateAlert.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/monitors/"+idParam) -} + const markup = ` + {{define "title"}}Create alert{{end}} + {{define "body"}} +
+
+
+ + + + + + +

Create alert

+
+
+ +
+ + + + +
+ + + {{if not (len .Services)}} +
+
+ + + +
+ No services found +
+ + + + + + Add service + + +
+
+ {{end}} + +
+ {{range $service := .Services}} + + {{end}} +
+
-func deleteMonitorByID(tx *sql.Tx, id int) error { - const query = ` - delete from monitor where id = ? - ` + +
+ + +
- _, err := tx.Exec(query, id) - if err != nil { - return fmt.Errorf("deleteMonitorByID.Exec: %w", err) - } + - return nil -} +
+ +
+
+
+ + {{end}} + ` - err = deleteMonitorByID(tx, id) + tmpl, err := parseTmpl("getCreateAlert", markup) if err != nil { + log.Printf("getCreateAlert.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) - log.Printf("deleteMonitor.deleteMonitorByID: %s", err) return } - err = tx.Commit() + err = tmpl.Execute( + w, + struct { + Services []service + Ctx pageCtx + }{ + Services: services, + Ctx: getPageCtx(r), + }, + ) if err != nil { + log.Printf("getCreateAlert.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) - log.Printf("deleteMonitor.Commit: %s", err) return } - - w.Header().Add("HX-Location", "/admin/monitors") } -func getCreateMonitor(w http.ResponseWriter, r *http.Request) { - refreshID := r.URL.Query().Get("refresh") - - tx, err := db.Begin() - if err != nil { - log.Printf("getCreateMonitor.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() +func createAlert( + tx *sql.Tx, + title string, + services []int, + alertType string, + severity string, +) (int, error) { + const alertQuery = ` + insert into alert(title, type, severity, created_at) values(?, ?, ?, ?) returning id + ` - notifications, err := listNotificationChannels(tx, listNotificationsOptions{}) + alertID := 0 + err := tx.QueryRow(alertQuery, title, alertType, severity, time.Now().UTC()).Scan(&alertID) if err != nil { - log.Printf("getCreateMonitor.listNotificationChannels: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return alertID, fmt.Errorf("createAlert.Scan: %w", err) } - mailGroups, err := listMailGroups(tx) - if err != nil { - log.Printf("getEditMonitor.mailGroups: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + const baseServiceQuery = ` + insert into alert_service(alert_id, service_id) values + ` - err = tx.Commit() - if err != nil { - log.Printf("getCreateMonitor.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + serviceQuery := baseServiceQuery - const markup = ` - {{define "title"}}Create monitor{{end}} - {{define "body"}} -
-
-
- - - - - - -

Create monitor

-
-
- -
- - - - -
-
- -
- - - - - -
-
+ params := []any{} -
- -
- - - -
-
+ for i, serviceID := range services { + serviceQuery += "(?, ?)" + if i < len(services)-1 { + serviceQuery += ", " + } + params = append(params, alertID, serviceID) + } -
- -
- - - -
-
+ _, err = tx.Exec(serviceQuery, params...) + if err != nil { + return alertID, fmt.Errorf("createAlert.Exec: %w", err) + } -
- -
- - - -
-
-
+ return alertID, nil +} -
-
- Request headers -
-
- - - -
- No headers set - -
-
- Request headers list -
-
- - - -
-
- -
-
-
+func createAlertMessageNotifications(tx *sql.Tx, createdAt time.Time, alertMessageID int) error { + const query = ` + insert into alert_notification(created_at, alert_subscription_id, alert_message_id) + select ?, id, ? from alert_subscription where alert_subscription.active = true + ` + _, err := tx.Exec(query, time.Now().UTC(), alertMessageID) + if err != nil { + return fmt.Errorf("createAlertMessageNotifications.Exec: %w", err) + } - + query := baseQuery -
- + params := []any{time.Now().UTC()} + for i, destination := range ids { + query += "?" + if i < len(ids)-1 { + query += "," + } + params = append(params, destination) + } + query += ")" - {{if not (len .Notifications)}} -
-
- - - -
- No notification channels found -
- - - - - - Add channel - - -
-
- {{end}} + _, err := tx.Exec(query, params...) + if err != nil { + return fmt.Errorf("updateAlertSentAtByID.Exec: %w", err) + } -
- {{range $notification := .Notifications}} - - {{end}} -
-
+ return nil +} -
- - Mail groups - +func postCreateAlert(w http.ResponseWriter, r *http.Request) { + title := r.PostFormValue("title") + if title == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - {{if not (len .MailGroups)}} -
-
- - - - -
- - No mail groups found - -
- - - - - - Add mail group - - -
-
- {{end}} + message := r.PostFormValue("message") + if message == "" { + w.WriteHeader(http.StatusBadRequest) + return + } -
- {{range $mailGroup := .MailGroups}} - - {{end}} -
-
+ services := []int{} + for _, service := range r.PostForm["services"] { + num, err := strconv.Atoi(service) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + services = append(services, num) + } + if len(services) == 0 { + w.WriteHeader(http.StatusBadRequest) + return + } -
- -
+ alertType := r.PostFormValue("type") + if alertType != "incident" && alertType != "maintenance" { + w.WriteHeader(http.StatusBadRequest) + return + } - - - - - -
-
- {{end}} - ` + function updateType(type) { + if (type === "incident") { + document.querySelector(".radio-group").style.display = "block"; + document.querySelector(".radio-group").disabled = false; + } else { + document.querySelector(".radio-group").style.display = "none"; + document.querySelector(".radio-group").disabled = true; + } + } + + {{end}} + ` - tmpl, err := parseTmpl("getCreateMonitor", markup) + tmpl, err := parseTmpl("getEditAlert", markup) if err != nil { - log.Printf("getCreateMonitor.parseTmpl: %s", err) + log.Printf("getEditAlert.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Notifications []NotificationChannel - MailGroups []MailGroup - RefreshID string - Ctx pageCtx - }{ - Notifications: notifications, - MailGroups: mailGroups, - RefreshID: refreshID, - Ctx: getPageCtx(r), - }, - ) + checkedServices := map[int]bool{} + for _, service := range services { + checkedServices[service.ID] = false + } + for _, service := range alert.Services { + checkedServices[service.ID] = true + } + + err = tmpl.Execute(w, struct { + Alert AlertDetail + Services []service + CheckedServices map[int]bool + Ctx pageCtx + }{ + Alert: alert, + Services: services, + CheckedServices: checkedServices, + Ctx: getPageCtx(r), + }) if err != nil { - log.Printf("getCreateMonitor.Execute: %s", err) + log.Printf("getEditAlert.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func updateMonitorNotificationChannels(tx *sql.Tx, monitorID int, channelIDs []int) error { - const deleteQuery = ` - delete from monitor_notification_channel where monitor_id = ? +func editAlert( + tx *sql.Tx, + id int, + title string, + services []int, + alertType string, + severity string, +) error { + const alertQuery = ` + update alert set title = ?, type = ?, severity = ? where id = ? ` - _, err := tx.Exec(deleteQuery, monitorID) + _, err := tx.Exec(alertQuery, title, alertType, severity, id) if err != nil { - return fmt.Errorf("updateMonitorNotificationChannels.DeleteExec: %w", err) - } - - if len(channelIDs) > 0 { - const baseInsertQuery = ` - insert into monitor_notification_channel(monitor_id, notification_channel_id) - values - ` - - insertQuery := baseInsertQuery - - for i := range channelIDs { - insertQuery += "(?, ?)" - - if i != len(channelIDs)-1 { - insertQuery += "," - } - } - - params := []any{} - for _, v := range channelIDs { - params = append(params, monitorID, v) - } - - _, err = tx.Exec(insertQuery, params...) - if err != nil { - return fmt.Errorf("updateMonitorNotificationChannels.InsertExec: %w", err) - } + return fmt.Errorf("editAlert.Exec: %w", err) } - return nil -} - -func createMonitor( - tx *sql.Tx, - name string, - url string, - method string, - frequency int, - timeout int, - attempts int, - requestHeaders sql.NullString, - bodyFormat sql.NullString, - body sql.NullString, -) (int, error) { - const query = ` - insert into - monitor(name, url, method, frequency, timeout, attempts, request_headers, - body_format, body) - values(?, ?, ?, ?, ?, ?, ?, ?, ?) returning id + const serviceDeleteQuery = ` + delete from alert_service where alert_id = ? ` - var monitorID int - err := tx.QueryRow( - query, - name, - url, - method, - frequency, - timeout, - attempts, - requestHeaders, - bodyFormat, - body, - ).Scan(&monitorID) + _, err = tx.Exec(serviceDeleteQuery, id) if err != nil { - return monitorID, fmt.Errorf("createMonitor.QueryRow: %w", err) + return fmt.Errorf("editAlert.Exec2: %w", err) } - return monitorID, nil -} + const baseServiceInsertQuery = ` + insert into alert_service(alert_id, service_id) values + ` -func postCreateMonitor(w http.ResponseWriter, r *http.Request) { - name := r.PostFormValue("name") - if name == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + serviceInsertQuery := baseServiceInsertQuery - reqURL := r.PostFormValue("url") - validURL := true - parsedReqURL, err := url.Parse(reqURL) - if err != nil { - validURL = false - } else if parsedReqURL.Scheme == "" || parsedReqURL.Host == "" { - validURL = false - } else if parsedReqURL.Scheme != "http" && parsedReqURL.Scheme != "https" { - validURL = false - } + params := []any{} - if !validURL { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` - - Invalid URL - - `)) - return + for i, serviceID := range services { + serviceInsertQuery += "(?, ?)" + if i < len(services)-1 { + serviceInsertQuery += ", " + } + params = append(params, id, serviceID) } - method := r.PostFormValue("method") + _, err = tx.Exec(serviceInsertQuery, params...) if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - if method != http.MethodGet && - method != http.MethodPost && - method != http.MethodPatch && - method != http.MethodPut && - method != http.MethodDelete { - w.WriteHeader(http.StatusBadRequest) - return + return fmt.Errorf("editAlert.Exec3: %w", err) } - frequency, err := strconv.Atoi(r.PostFormValue("frequency")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - if frequency != 10 && frequency != 30 && frequency != 60 { - w.WriteHeader(http.StatusBadRequest) - return - } + return nil +} - timeout, err := strconv.Atoi(r.PostFormValue("timeout")) +func postEditAlert(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { w.WriteHeader(http.StatusBadRequest) return } - if timeout != 5 && timeout != 10 && timeout != 15 { - w.WriteHeader(http.StatusBadRequest) - return - } - attempts, err := strconv.Atoi(r.PostFormValue("attempts")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - if attempts != 1 && attempts != 2 && attempts != 3 { + title := r.PostFormValue("title") + if title == "" { w.WriteHeader(http.StatusBadRequest) return } - requestHeaders := sql.NullString{} - requestHeadersMap := map[string]string{} - if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { - for i := range r.Form["header-key"] { - requestHeadersMap[r.Form["header-key"][i]] = r.Form["header-value"][i] + services := []int{} + for _, service := range r.PostForm["services"] { + num, err := strconv.Atoi(service) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return } + services = append(services, num) } - requestHeadersSerialized, err := json.Marshal(requestHeadersMap) - if err != nil { - log.Printf("postEditMonitor.Marshal: %s", err) + if len(services) == 0 { w.WriteHeader(http.StatusBadRequest) return } - if len(requestHeadersMap) > 0 { - requestHeaders = sql.NullString{ - Valid: true, - String: string(requestHeadersSerialized), - } - } - - body := sql.NullString{} - if r.PostFormValue("body") != "" { - body = sql.NullString{ - Valid: true, - String: r.PostFormValue("body"), - } - } - - if r.PostFormValue("form-key") != "" && r.PostFormValue("form-value") != "" { - urlValues := url.Values{} - for i := 0; i < len(r.Form["form-key"]); i++ { - urlValues.Add(r.Form["form-key"][i], r.Form["form-value"][i]) - } - body = sql.NullString{ - Valid: true, - String: urlValues.Encode(), - } - } - format := sql.NullString{} - if r.PostFormValue("format") != "" { - format = sql.NullString{ - Valid: true, - String: r.PostFormValue("format"), - } + alertType := r.PostFormValue("type") + if alertType != "incident" && alertType != "maintenance" { + w.WriteHeader(http.StatusBadRequest) + return } - notificationChannelsParam := r.PostForm["notification-channels"] - notificationChannels := make([]int, 0, len(notificationChannelsParam)) - for _, channelID := range notificationChannelsParam { - id, err := strconv.Atoi(channelID) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) + severity := r.PostFormValue("severity") + if alertType == "incident" { + if severity != "red" && severity != "amber" { + w.WriteHeader(http.StatusBadRequest) return } - - notificationChannels = append(notificationChannels, id) + } else { + alertType = "maintenance" } - mailGroupsParam := r.PostForm["mail-groups"] - mailGroups := make([]int, 0, len(mailGroupsParam)) - for _, channelID := range mailGroupsParam { - id, err := strconv.Atoi(channelID) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - return - } - - mailGroups = append(mailGroups, id) - } tx, err := rwDB.Begin() if err != nil { - log.Printf("postCreateMonitor.Begin: %s", err) + log.Printf("postEditAlert.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - - monitorID, err := createMonitor( - tx, - name, - reqURL, - method, - frequency, - timeout, - attempts, - requestHeaders, - format, - body, - ) + + err = editAlert(tx, id, title, services, alertType, severity) if err != nil { - log.Printf("postCreateMonitor.createMonitor: %s", err) + log.Printf("postEditAlert.editAlert: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = updateMonitorNotificationChannels(tx, monitorID, notificationChannels) + alerts, err := getOngoingAlerts(tx) if err != nil { - log.Printf("postCreateMonitor.updateMonitorNotificationChannels: %s", err) + log.Printf("postEditAlert.getOngoingAlerts: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = updateMonitorMailGroups(tx, monitorID, mailGroups) + newSeverity := "blue" + for _, alert := range alerts { + if alert.Severity == "amber" { + newSeverity = "amber" + continue + } + + if alert.Severity == "red" { + newSeverity = "red" + break + } + } + + err = updateSeverity(tx, newSeverity) if err != nil { - log.Printf("postEditMonitor.updateMonitorMailGroups: %s", err) + log.Printf("postEditAlert.updateSeverity: %s", err) w.WriteHeader(http.StatusInternalServerError) return } if err = tx.Commit(); err != nil { - log.Printf("postCreateMonitor.Begin: %s", err) + log.Printf("postEditAlert.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/monitors/"+strconv.Itoa(monitorID)) + w.Header().Add("HX-Location", "/admin/alerts") } -type AlertDetailMessage struct { - ID int - Content string - CreatedAt *time.Time - LastUpdatedAt *time.Time -} +func resolveAlert(tx *sql.Tx, id int) error { + const query = ` + update alert set ended_at = ? where id = ? + ` -type AlertDetailService struct { - ID int - Name string - HelperText string -} + _, err := tx.Exec(query, time.Now().UTC(), id) + if err != nil { + return fmt.Errorf("resolveAlert.Exec: %w", err) + } -type AlertDetail struct { - ID int - Title string - AlertType string - Severity string - CreatedAt *time.Time - EndedAt *time.Time - Messages []AlertDetailMessage - Services []AlertDetailService + return nil } -func getAlertByID(tx *sql.Tx, id int) (AlertDetail, error) { - const alertQuery = ` - select - id, - title, - type, - severity, - created_at, - ended_at - from - alert - where - id = ? +func getSeverity(tx *sql.Tx) (string, error) { + const query = ` + select severity from severity limit 1 ` - alert := AlertDetail{} + var severity string - err := tx.QueryRow(alertQuery, id).Scan( - &alert.ID, - &alert.Title, - &alert.AlertType, - &alert.Severity, - &alert.CreatedAt, - &alert.EndedAt, - ) + err := tx.QueryRow(query).Scan(&severity) if err != nil { - return alert, fmt.Errorf("getAlertByID.QueryRow: %w", err) + return severity, fmt.Errorf("getSeverity.QueryRow: %w", err) } - const messageQuery = ` - select - id, - content, - created_at, - last_updated_at - from - alert_message - where - alert_id = ? - order by created_at desc + return severity, nil +} + +func updateSeverity(tx *sql.Tx, severity string) error { + const query = ` + update severity set severity = ? ` - rows, err := tx.Query(messageQuery, id) + _, err := tx.Exec(query, severity) if err != nil { - return alert, fmt.Errorf("getAlertByID.Query: %w", err) + return fmt.Errorf("updateSeverity.Exec: %w", err) } - defer rows.Close() - for rows.Next() { - message := AlertDetailMessage{} - err = rows.Scan( - &message.ID, - &message.Content, - &message.CreatedAt, - &message.LastUpdatedAt, - ) - if err != nil { - return alert, fmt.Errorf("getAlertByID.Scan: %w", err) - } + return nil +} - alert.Messages = append(alert.Messages, message) +func postResolveAlert(w http.ResponseWriter, r *http.Request) { + idParam := chi.URLParam(r, "id") + id, err := strconv.Atoi(idParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return } - const serviceQuery = ` - select - service.id, - service.name, - service.helper_text - from - alert_service - left join - service on service.id = alert_service.service_id - where - alert_id = ? - ` - - rows, err = tx.Query(serviceQuery, id) + tx, err := rwDB.Begin() if err != nil { - return alert, fmt.Errorf("getAlertByID.Query2: %w", err) + log.Printf("postResolveAlert.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - defer rows.Close() - - for rows.Next() { - service := AlertDetailService{} - err = rows.Scan( - &service.ID, - &service.Name, - &service.HelperText, - ) - if err != nil { - return alert, fmt.Errorf("getAlertByID.Scan2: %w", err) - } + defer tx.Rollback() - alert.Services = append(alert.Services, service) + err = resolveAlert(tx, id) + if err != nil { + log.Printf("postResolveAlert.resolveAlert: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - return alert, nil -} - -type AlertSettings struct { - SlackInstallURL string - SlackClientSecret string - ManagedSubscriptions bool -} - -func getAlertSettings(tx *sql.Tx) (AlertSettings, error) { - const query = ` - select name, value from alert_setting - ` - - settings := AlertSettings{} - - rows, err := tx.Query(query) + alerts, err := getOngoingAlerts(tx) if err != nil { - return settings, fmt.Errorf("getAlertSettings.Query: %w", err) + log.Printf("postResolveAlert.getOngoingAlerts: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - defer rows.Close() - - for rows.Next() { - var k, v string - err = rows.Scan(&k, &v) - if err != nil { - return settings, fmt.Errorf("getAlertSettings.Scan: %w", err) + newSeverity := "blue" + for _, alert := range alerts { + if alert.Severity == "amber" { + newSeverity = "amber" + continue } - if k == "slack-install-url" { - settings.SlackInstallURL = v - } else if k == "slack-client-secret" { - settings.SlackClientSecret = v - } else if k == "managed-subscriptions" { - parsedV, err := strconv.ParseBool(v) - if err != nil { - return settings, fmt.Errorf("getAlertSettings.ParseBool: %w", err) - } - settings.ManagedSubscriptions = parsedV + if alert.Severity == "red" { + newSeverity = "red" + break } } - return settings, nil + err = updateSeverity(tx, newSeverity) + if err != nil { + log.Printf("postResolveAlert.updateSeverity: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tx.Commit() + if err != nil { + log.Printf("postResolveAlert.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Add("HX-Location", "/admin/alerts/"+idParam) } -func getAlertSMTPNotificationSetting(tx *sql.Tx) (int, error) { +func unresolveAlert(tx *sql.Tx, id int) error { const query = ` - select notification_channel_id from alert_setting_smtp_notification limit 1 + update alert set ended_at = null where id = ? ` - v := 0 - - err := tx.QueryRow(query).Scan(&v) + _, err := tx.Exec(query, id) if err != nil { - return v, fmt.Errorf("getAlertSMTPNotificationSetting.QueryRow: %w", err) + return fmt.Errorf("unresolveAlert.Exec: %w", err) } - return v, nil + return nil } -func getAlertNotifications(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() +func postUnresolveAlert(w http.ResponseWriter, r *http.Request) { + idParam := chi.URLParam(r, "id") + id, err := strconv.Atoi(idParam) if err != nil { - log.Printf("getAlertNotifications.Begin: %s", err) + w.WriteHeader(http.StatusBadRequest) + return + } + + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postUnresolveAlert.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - notifications, err := listNotificationChannels(tx, listNotificationsOptions{Type: "smtp"}) + err = unresolveAlert(tx, id) if err != nil { - log.Printf("getAlertNotifications.listNotificationChannels: %s", err) + log.Printf("postUnresolveAlert.resolveAlert: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - settings, err := getAlertSettings(tx) + alerts, err := getOngoingAlerts(tx) if err != nil { - log.Printf("getAlertNotifications.getAlertSettings: %s", err) + log.Printf("postUnresolveAlert.getOngoingAlerts: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - smtpNotificationChannelID, err := getAlertSMTPNotificationSetting(tx) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("getAlertNotifications.getAlertSMTPNotificationSetting: %s", err) + newSeverity := "blue" + for _, alert := range alerts { + if alert.Severity == "amber" { + newSeverity = "amber" + continue + } + + if alert.Severity == "red" { + newSeverity = "red" + break + } + } + + err = updateSeverity(tx, newSeverity) + if err != nil { + log.Printf("postUnresolveAlert.updateSeverity: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("getAlertNotifications.Commit: %s", err) + log.Printf("postUnresolveAlert.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}Alert notifications{{end}} - {{define "body"}} -
-
-
- - - - - - -

Alert notifications

-
-
- -

Configure which options appear on your status page for visitors to receive alert updates

- -
-
- - -
- {{if not (len .Notifications)}} -
-
- - - - -
- No email notification channels found -
- - - - - - Add channel - - -
-
- {{end}} - {{range $notification := .Notifications}} - - {{end}} -
-
- - - -
- -
- - -
- - - - - -
- - - Go to your Slack apps - - - - - - - - - -
- - - - - - - - - - - - Create new Slack app - - - - - - -

Select the "From scratch" option

- - -

Name your app, choose your Slack workspace, and click “Create app”

- -
- - + w.Header().Add("HX-Location", "/admin/alerts/"+idParam) +} -
-

Turn incoming webhooks on - you don't need to add any webhooks

- +func getAddAlertMessage(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } -

- Add the following redirect URL to your Slack app: - https://{{.Domain}}/callback/slack -

- + tx, err := db.Begin() + if err != nil { + log.Printf("getAddAlertMessage.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() -

Copy the client secret and paste it into Statusnook

- + alert, err := getAlertByID(tx, id) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusNotFound) + return + } + log.Printf("getAddAlertMessage.getAlertByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -

Copy the sharable URL and paste it into Statusnook

- -
+ err = tx.Commit() + if err != nil { + log.Printf("getAddAlertMessage.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + const markup = ` + {{define "title"}}{{.Alert.Title}} - add message{{end}} + {{define "body"}} +
+
+
+ + + + + + {{if not .Alert.EndedAt }} + {{if eq .Alert.AlertType "incident"}} +
LIVE
+ {{else}} +
ACTIVE
+ {{end}} + {{end}} +

{{.Alert.Title}}

- +
+ + + +
- +
- {{end}} ` - tmpl, err := parseTmpl("getAlertNotifications", markup) + tmpl, err := parseTmpl("getAddAlertMessage", markup) if err != nil { - log.Printf("getAlertNotifications.parseTmpl: %s", err) + log.Printf("getAddAlertMessage.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute(w, struct { - Notifications []NotificationChannel - Settings AlertSettings - SMTPNotificationChannel int - Domain string - Ctx pageCtx - }{ - Notifications: notifications, - Settings: settings, - SMTPNotificationChannel: smtpNotificationChannelID, - Domain: metaDomain, - Ctx: getPageCtx(r), - }) + err = tmpl.Execute( + w, + struct { + Alert AlertDetail + Ctx pageCtx + }{ + Alert: alert, + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("getAlertNotifications.Execute: %s", err) + log.Printf("getAddAlertMessage.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func updateAlertSettings( - tx *sql.Tx, - slackInstallURL string, - slackClientSecret string, - managedSubscriptions bool, -) error { +func createAlertMessage(tx *sql.Tx, alertID int, content string) (int, error) { const query = ` - insert into alert_setting(name, value) values(?, ?), (?, ?), (?, ?) - on conflict(name) do update set value = excluded.value + insert into + alert_message(content, created_at, alert_id) + values(?, ?, ?) + returning id ` - _, err := tx.Exec( - query, - "slack-install-url", - slackInstallURL, - "slack-client-secret", - slackClientSecret, - "managed-subscriptions", - managedSubscriptions, - ) + var id int + + err := tx.QueryRow(query, content, time.Now().UTC(), alertID).Scan(&id) if err != nil { - return fmt.Errorf("updateAlertSettings.Exec: %w", err) + return id, fmt.Errorf("createAlertMessage.Scan: %w", err) } - return nil + return id, nil } -func updateAlertSMTPNotificationSetting(tx *sql.Tx, notificationID int) error { - const deleteQuery = ` - delete from alert_setting_smtp_notification - ` +func postAddAlertMessage(w http.ResponseWriter, r *http.Request) { + idParam := chi.URLParam(r, "id") - _, err := tx.Exec(deleteQuery) + id, err := strconv.Atoi(idParam) if err != nil { - return fmt.Errorf("updateAlertSMTPNotificationSetting.ExecDelete: %w", err) - } - - if notificationID != 0 { - const insertQuery = ` - insert into alert_setting_smtp_notification(notification_channel_id) values(?) - ` - - _, err = tx.Exec(insertQuery, notificationID) - if err != nil { - return fmt.Errorf("updateAlertSMTPNotificationSetting.ExecInsert: %w", err) - } + w.WriteHeader(http.StatusBadRequest) + return } - return nil -} + message := r.PostFormValue("message") -func postAlertNotifications(w http.ResponseWriter, r *http.Request) { - slackInstallURLParam := r.FormValue("slack-install-url") - slackInstallURL := "" - if slackInstallURLParam != "" { - url, err := url.ParseRequestURI(slackInstallURLParam) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - slackInstallURL = url.String() + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postAddAlertMessage.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - slackClientSecretParam := r.FormValue("slack-client-secret") - - smtpNotificationChannelIDParam := r.FormValue("smtp-notification-channel") - smtpNotificationChannelID := 0 - if smtpNotificationChannelIDParam != "" { - id, err := strconv.Atoi(r.FormValue("smtp-notification-channel")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - smtpNotificationChannelID = id + alertMessageID, err := createAlertMessage(tx, id, message) + if err != nil { + log.Printf("postAddAlertMessage.createAlertMessage: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - managedSubscriptions := false - managedSubscriptionsParam := r.FormValue("managed-subscriptions") - if managedSubscriptionsParam == "on" { - managedSubscriptions = true + err = createAlertMessageNotifications(tx, time.Now().UTC(), alertMessageID) + if err != nil { + log.Printf("postAddAlertMessage.createAlertMessageNotifications: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - tx, err := rwDB.Begin() + err = tx.Commit() if err != nil { - log.Printf("postAlertNotifications.Begin: %s", err) + log.Printf("postAddAlertMessage.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - channel, err := getNotificationChannelByID(tx, smtpNotificationChannelID) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - log.Printf("postAlertNotifications.getNotificationChannelByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.Header().Add("HX-Location", "/admin/alerts/"+idParam) +} + +func deleteAlertMessageByID(tx *sql.Tx, alertID int, messageID int) error { + const query = ` + delete from alert_message where alert_id = ? and id = ? + ` + + _, err := tx.Exec(query, alertID, messageID) + if err != nil { + return fmt.Errorf("deleteAlertMessageByID.Exec: %w", err) + } + + return nil +} + +func deleteAlertMessage(w http.ResponseWriter, r *http.Request) { + alertIDParam := chi.URLParam(r, "id") + alertID, err := strconv.Atoi(alertIDParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) return } - if channel.ID != 0 && channel.Type != "smtp" { + messageID, err := strconv.Atoi(chi.URLParam(r, "messageID")) + if err != nil { w.WriteHeader(http.StatusBadRequest) return } - err = updateAlertSMTPNotificationSetting(tx, channel.ID) + tx, err := rwDB.Begin() if err != nil { - log.Printf("postAlertNotifications.updateAlertSMTPNotificationSetting: %s", err) + log.Printf("deleteAlertMessage.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = updateAlertSettings(tx, slackInstallURL, slackClientSecretParam, managedSubscriptions) + err = deleteAlertMessageByID(tx, alertID, messageID) if err != nil { - log.Printf("postAlertNotifications.updateAlertSettings: %s", err) + log.Printf("deleteAlertMessage.deleteAlertMessageByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("postAlertNotifications.Commit: %s", err) + log.Printf("deleteAlertMessage.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/alerts") + w.Header().Add("HX-Location", "/admin/alerts/"+alertIDParam) } -func getAlert(w http.ResponseWriter, r *http.Request) { - idParam := chi.URLParam(r, "id") +func getEditAlertMessage(w http.ResponseWriter, r *http.Request) { + alertID, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } - id, err := strconv.Atoi(idParam) + messageID, err := strconv.Atoi(chi.URLParam(r, "messageID")) if err != nil { w.WriteHeader(http.StatusBadRequest) return @@ -8739,32 +11816,50 @@ func getAlert(w http.ResponseWriter, r *http.Request) { tx, err := db.Begin() if err != nil { - log.Printf("getAlert.Begin: %s", err) + log.Printf("getEditAlertMessage.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - alert, err := getAlertByID(tx, id) + alert, err := getAlertByID(tx, alertID) if err != nil { - log.Printf("getAlert.getAlertByID: %s", err) + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusNotFound) + return + } + log.Printf("getEditAlertMessage.getAlertByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tx.Commit() + if err != nil { + log.Printf("getEditAlertMessage.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getAlert.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) + message := AlertDetailMessage{} + for _, msg := range alert.Messages { + if msg.ID == messageID { + message = msg + break + } + } + + if message.ID == 0 { + w.WriteHeader(http.StatusNotFound) return } const markup = ` - {{define "title"}}{{.Alert.Title}} - Alert{{end}} + {{define "title"}}{{.Alert.Title}} - add message{{end}} {{define "body"}} -
+
-
- - - - Resolve {{.Alert.Title}} -
-
- - -
-
-
- - - Unresolve {{.Alert.Title}} -
-
- - -
-
-
- - - Delete {{.Alert.Title}} -
-
- - -
-
-
-
-
-
-

Affected services

-
- {{.Services}} -
-
-
-

Timeline

- -
-
- {{range $message := .Alert.Messages}} -
-
- {{$message.CreatedAt}} -
- +
+ - - Delete message - -
- - -
- -
-
-
- {{$message.Content}} -
- {{end}} +
+
-
+
{{end}} ` - tmpl, err := parseTmpl("getAlert", markup) + tmpl, err := parseTmpl("getEditAlertMessage", markup) if err != nil { - log.Printf("getAlert.parseTmpl: %s", err) + log.Printf("getEditAlertMessage.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - type FormattedAlertDetailMessage struct { - ID int - Content string - CreatedAt string - LastUpdatedAt string + err = tmpl.Execute( + w, + struct { + Alert AlertDetail + Message AlertDetailMessage + Ctx pageCtx + }{ + Alert: alert, + Message: message, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("getEditAlertMessage.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } +} - type FormattedAlertDetailService struct { - ID int - Name string - HelperText string - } +func editAlertMessage(tx *sql.Tx, alertID int, messageID int, content string) error { + const query = ` + update alert_message + set + content = ?, + last_updated_at = ? + where + alert_id = ? and id = ? + ` - type FormattedAlertDetail struct { - ID int - Title string - AlertType string - Severity string - CreatedAt string - EndedAt string - Messages []FormattedAlertDetailMessage - Services []FormattedAlertDetailService + _, err := tx.Exec(query, content, time.Now().UTC(), alertID, messageID) + if err != nil { + return fmt.Errorf("editAlertMessage.Exec: %w", err) } - formattedAlert := FormattedAlertDetail{} - formattedAlert.ID = alert.ID - formattedAlert.Title = alert.Title - formattedAlert.AlertType = alert.AlertType - formattedAlert.Severity = alert.Severity - formattedAlert.CreatedAt = alert.CreatedAt.Format("02/01/2006 15:04 MST") - if alert.EndedAt != nil { - formattedAlert.EndedAt = alert.EndedAt.Format("02/01/2006 15:04 MST") + return nil +} + +func postEditAlertMessage(w http.ResponseWriter, r *http.Request) { + alertIDParam := chi.URLParam(r, "id") + + alertID, err := strconv.Atoi(alertIDParam) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return } - for _, message := range alert.Messages { - createdAt := message.CreatedAt.Format("Jan 2 2006 • 15:04 MST") - if message.CreatedAt.Year() == time.Now().UTC().Year() { - createdAt = message.CreatedAt.Format("Jan 2 • 15:04 MST") - } + messageID, err := strconv.Atoi(chi.URLParam(r, "messageID")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } - formattedMessage := FormattedAlertDetailMessage{ - ID: message.ID, - Content: message.Content, - CreatedAt: createdAt, - } - if message.LastUpdatedAt != nil { - formattedMessage.LastUpdatedAt = message.LastUpdatedAt.Format("02/01/2006 15:04 MST") - } + message := r.PostFormValue("message") + if message == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - formattedAlert.Messages = append( - formattedAlert.Messages, - formattedMessage, - ) + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postEditAlertMessage.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - serviceNames := make([]string, 0, len(alert.Services)) - for _, service := range alert.Services { - serviceNames = append(serviceNames, service.Name) + err = editAlertMessage(tx, alertID, messageID, message) + if err != nil { + log.Printf("postEditAlertMessage.editAlertMessage: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - err = tmpl.Execute( - w, - struct { - Alert FormattedAlertDetail - Services string - Ctx pageCtx - }{ - Alert: formattedAlert, - Services: strings.Join(serviceNames, " • "), - Ctx: getPageCtx(r), - }, - ) + err = tx.Commit() if err != nil { - log.Printf("getAlert.Execute: %s", err) + log.Printf("postEditAlertMessage.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + + w.Header().Add("HX-Location", "/admin/alerts/"+alertIDParam) +} + +type service struct { + ID int + Slug string + Name string + HelperText string } -func deleteAlertByID(tx *sql.Tx, id int) error { +func listServices(tx *sql.Tx) ([]service, error) { const query = ` - delete from alert where id = ? + select + id, slug, name, helper_text + from + service ` - _, err := tx.Exec(query, id) + services := []service{} + + rows, err := tx.Query(query) if err != nil { - return fmt.Errorf("deleteAlertByID.Exec: %w", err) + return services, fmt.Errorf("listServices.Query: %w", err) } + defer rows.Close() - return nil -} + for rows.Next() { + svc := service{} + err = rows.Scan( + &svc.ID, + &svc.Slug, + &svc.Name, + &svc.HelperText, + ) + if err != nil { + return services, fmt.Errorf("listServices.Scan: %w", err) + } -func deleteAlert(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return + services = append(services, svc) } - tx, err := rwDB.Begin() + return services, nil +} + +func services(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { - log.Printf("deleteAlert.Begin: %s", err) + log.Printf("services.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = deleteAlertByID(tx, id) + services, err := listServices(tx) if err != nil { - log.Printf("deleteAlert.deleteAlertByID: %s", err) + log.Printf("services.listServices: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("deleteAlert.Commit: %s", err) + log.Printf("services.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/alerts") -} + const markup = ` + {{define "title"}}Services{{end}} + {{define "body"}} +
+
+

Services

+
-func getCreateAlert(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() - if err != nil { - log.Printf("getCreateAlert.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + {{if not .Ctx.ConfigFile}} + + {{end}} +
- services, err := listServices(tx) + {{if eq (len .Services) 0}} +
+
+ + + +
+ Add your first service + {{if not .Ctx.ConfigFile}} + Add service + {{else}} + Go to settings + {{end}} +
+ {{else}} +
+ {{range $service := .Services}} +
+
+ {{$service.Name}} + {{$service.HelperText}} +
+ {{if not $.Ctx.ConfigFile}} + + + Delete {{$service.Name}} +
+
+ + +
+
+
+ {{end}} +
+ {{end}} +
+ {{end}} + {{end}} + ` + + tmpl, err := parseTmpl("services", markup) if err != nil { - log.Printf("getCreateAlert.listServices: %s", err) + log.Printf("services.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getCreateAlert.Commit: %s", err) + err = tmpl.Execute( + w, + struct { + Services []service + Ctx pageCtx + }{ + Services: services, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("services.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} +func getCreateService(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Create alert{{end}} + {{define "title"}}Create service{{end}} {{define "body"}}
- + -

Create alert

+

Create service

-
- - + -
- - - {{if not (len .Services)}} -
-
- - - -
- No services found -
- - - - - - Add service - - -
-
- {{end}} - -
- {{range $service := .Services}} - - {{end}} -
-
- -
- - -
- -
- {{end}} ` - tmpl, err := parseTmpl("getCreateAlert", markup) + tmpl, err := parseTmpl("getCreateService", markup) if err != nil { - log.Printf("getCreateAlert.parseTmpl: %s", err) + log.Printf("getCreateService.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -9184,1406 +12184,1961 @@ func getCreateAlert(w http.ResponseWriter, r *http.Request) { err = tmpl.Execute( w, struct { - Services []service - Ctx pageCtx + Ctx pageCtx }{ - Services: services, - Ctx: getPageCtx(r), + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getCreateAlert.Execute: %s", err) + log.Printf("getCreateService.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func createAlert( - tx *sql.Tx, - title string, - services []int, - alertType string, - severity string, -) (int, error) { - const alertQuery = ` - insert into alert(title, type, severity, created_at) values(?, ?, ?, ?) returning id +func createService(tx *sql.Tx, slug string, name string, helperText string) error { + const query = ` + insert into service(slug, name, helper_text) values(?, ?, ?) ` - alertID := 0 - err := tx.QueryRow(alertQuery, title, alertType, severity, time.Now().UTC()).Scan(&alertID) + _, err := tx.Exec(query, slug, name, helperText) if err != nil { - return alertID, fmt.Errorf("createAlert.Scan: %w", err) + return fmt.Errorf("createService.Exec: %w", err) } - const baseServiceQuery = ` - insert into alert_service(alert_id, service_id) values - ` + return nil +} - serviceQuery := baseServiceQuery +func postCreateService(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) + return + } - params := []any{} + name := r.PostFormValue("name") + helperText := r.PostFormValue("helper") - for i, serviceID := range services { - serviceQuery += "(?, ?)" - if i < len(services)-1 { - serviceQuery += ", " - } - params = append(params, alertID, serviceID) + if name == "" { + w.WriteHeader(http.StatusBadRequest) + return } - _, err = tx.Exec(serviceQuery, params...) + tx, err := rwDB.Begin() if err != nil { - return alertID, fmt.Errorf("createAlert.Exec: %w", err) + log.Printf("postCreateService.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - return alertID, nil + services, err := listServices(tx) + if err != nil { + log.Printf("postCreateService.listServices: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + serviceSlugs := map[string]bool{} + for _, v := range services { + serviceSlugs[v.Slug] = true + } + + err = createService(tx, generateSlug(name, serviceSlugs), name, helperText) + if err != nil { + log.Printf("postCreateService.createService: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tx.Commit() + if err != nil { + log.Printf("postCreateService.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Add("HX-Location", "/admin/services") } -func createAlertMessageNotifications(tx *sql.Tx, createdAt time.Time, alertMessageID int) error { +func deleteServiceByID(tx *sql.Tx, id int) error { const query = ` - insert into alert_notification(created_at, alert_subscription_id, alert_message_id) - select ?, id, ? from alert_subscription where alert_subscription.active = true + delete from service where id = $1 ` - _, err := tx.Exec(query, time.Now().UTC(), alertMessageID) + _, err := tx.Exec(query, id) if err != nil { - return fmt.Errorf("createAlertMessageNotifications.Exec: %w", err) + return fmt.Errorf("deleteServiceByID.Exec: %w", err) } return nil } -func updateAlertSentAtByID(tx *sql.Tx, now time.Time, ids []int) error { - const baseQuery = ` - update alert_notification set sent_at = ? - where id in( - ` +func deleteService(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } - query := baseQuery + tx, err := rwDB.Begin() + if err != nil { + log.Printf("deleteService.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() - params := []any{time.Now().UTC()} - for i, destination := range ids { - query += "?" - if i < len(ids)-1 { - query += "," - } - params = append(params, destination) + err = deleteServiceByID(tx, id) + if err != nil { + log.Printf("deleteService.deleteServiceByID: %s", err) } - query += ")" - _, err := tx.Exec(query, params...) + err = tx.Commit() if err != nil { - return fmt.Errorf("updateAlertSentAtByID.Exec: %w", err) + log.Printf("deleteService.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - return nil + w.Header().Add("HX-Location", "/admin/services") } -func postCreateAlert(w http.ResponseWriter, r *http.Request) { - title := r.PostFormValue("title") - if title == "" { +func getServiceByID(tx *sql.Tx, id int) (service, error) { + const query = ` + select id, name, helper_text from service where id = $1 + ` + + service := service{} + + err := tx.QueryRow(query, id).Scan( + &service.ID, + &service.Name, + &service.HelperText, + ) + if err != nil { + return service, fmt.Errorf("getServiceByID.Scan: %w", err) + } + + return service, nil +} + +func getEditService(w http.ResponseWriter, r *http.Request) { + readOnly := strings.HasSuffix(r.URL.Path, "view") + if !readOnly && metaConfigFileEnabled { w.WriteHeader(http.StatusBadRequest) return } - message := r.PostFormValue("message") - if message == "" { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { w.WriteHeader(http.StatusBadRequest) return } - services := []int{} - for _, service := range r.PostForm["services"] { - num, err := strconv.Atoi(service) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - services = append(services, num) - } - if len(services) == 0 { - w.WriteHeader(http.StatusBadRequest) + tx, err := db.Begin() + if err != nil { + log.Printf("getEditService.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - alertType := r.PostFormValue("type") - if alertType != "incident" && alertType != "maintenance" { - w.WriteHeader(http.StatusBadRequest) + svc, err := getServiceByID(tx, id) + if err != nil { + log.Printf("getEditService.getServiceByID: %s", err) + } + + err = tx.Commit() + if err != nil { + log.Printf("getEditService.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - severity := r.PostFormValue("severity") - if alertType == "incident" { - if severity != "red" && severity != "amber" { - w.WriteHeader(http.StatusBadRequest) - return - } - } else { - alertType = "maintenance" + const markup = ` + {{define "title"}}Edit service{{end}} + {{define "body"}} +
+
+
+ + + + + + +

Edit service

+
+
+ +
+ + + + +
+ +
+
+
+ {{end}} + ` + + tmpl, err := parseTmpl("getEditService", markup) + if err != nil { + log.Printf("getEditService.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - tx, err := rwDB.Begin() + err = tmpl.Execute( + w, + struct { + Service service + Ctx pageCtx + }{ + Service: svc, + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("postCreateAlert.Begin: %s", err) + log.Printf("getEditService.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() +} + +func editService(tx *sql.Tx, id int, name string, helperText string) error { + const query = ` + update service set name = ?, helper_text = ? where id = ? + ` + + _, err := tx.Exec(query, name, helperText, id) + if err != nil { + return fmt.Errorf("editService.Exec: %w", err) + } + + return nil +} + +func updateServiceSlug(tx *sql.Tx, old string, new string) (int, error) { + const query = ` + update service set slug = ? where slug = ? returning id + ` + + var id int - alertID, err := createAlert(tx, title, services, alertType, severity) + err := tx.QueryRow(query, new, old).Scan(&id) if err != nil { - log.Printf("postCreateAlert.createAlert: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return id, fmt.Errorf("updateServiceSlug.Exec: %w", err) } - alertMessageID, err := createAlertMessage(tx, alertID, message) - if err != nil { - log.Printf("postCreateAlert.createAlertMessage: %s", err) - w.WriteHeader(http.StatusInternalServerError) + return id, nil +} + +func postEditService(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) return } - alerts, err := getOngoingAlerts(tx) + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { - log.Printf("postCreateAlert.getOngoingAlerts: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } - newSeverity := "blue" - for _, alert := range alerts { - if alert.Severity == "amber" { - newSeverity = "amber" - continue - } + name := r.PostFormValue("name") + helperText := r.PostFormValue("helper") - if alert.Severity == "red" { - newSeverity = "red" - break - } + if name == "" { + w.WriteHeader(http.StatusBadRequest) + return } - err = updateSeverity(tx, newSeverity) + tx, err := rwDB.Begin() if err != nil { - log.Printf("postCreateAlert.updateSeverity: %s", err) + log.Printf("postEditService.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = createAlertMessageNotifications(tx, time.Now().UTC(), alertMessageID) + err = editService(tx, id, name, helperText) if err != nil { - log.Printf("postCreateAlert.createAlertMessageNotifications: %s", err) + log.Printf("postEditService.createService: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("postCreateAlert.Commit: %s", err) + err = tx.Commit() + if err != nil { + log.Printf("postEditService.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/alerts") + w.Header().Add("HX-Location", "/admin/services") } -func getEditAlert(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) +func notifications(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("notifications.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - tx, err := db.Begin() + channels, err := listNotificationChannels(tx, listNotificationsOptions{}) if err != nil { - log.Printf("getEditAlert.Begin: %s", err) + log.Printf("notifications.listNotificationChannels: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - services, err := listServices(tx) + mailGroups, err := listMailGroups(tx) if err != nil { - log.Printf("getEditAlert.listServices: %s", err) + log.Printf("notifications.listMailGroups: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - alert, err := getAlertByID(tx, id) + err = tx.Commit() if err != nil { - log.Printf("getEditAlert.getAlertByID: %s", err) + log.Printf("notifications.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - if err = tx.Commit(); err != nil { - log.Printf("getEditAlert.Commit: %s", err) + const markup = ` + {{define "title"}}Notifications{{end}} + {{define "body"}} +
+
+

Notifications

+
+
+ +
+
+

Channels

+ + {{if not .Ctx.ConfigFile}} + + {{end}} +
+ +
+ {{if eq (len .Notifications) 0}} +
+
+ + + +
+ Add your first notification channel + {{if not .Ctx.ConfigFile}} + Add channel + {{else}} + Go to settings + {{end}} +
+ {{else}} + + {{end}} +
+ +
+

Mail groups

+ {{if not .Ctx.ConfigFile}} + + {{end}} +
+ + {{if eq (len .MailGroups) 0}} +
+
+ + + + +
+ Create your first mail group + {{if not .Ctx.ConfigFile}} + Add mail group + {{else}} + Go to settings + {{end}} +
+ {{else}} +
+ {{range $mailGroup := .MailGroups}} + {{if $.Ctx.ConfigFile}} + + {{else}} +
+ {{end}} +
+
+ {{$mailGroup.Name}} + {{if $mailGroup.Description}} + {{$mailGroup.Description}} + {{end}} +
+
+ {{if not $.Ctx.ConfigFile}} +
+ + Delete {{$mailGroup.Name}} +
+
+ + +
+
+
+ {{end}} + {{if $.Ctx.ConfigFile}} + + {{else}} +
+ {{end}} + {{end}} +
+ {{end}} +
+ {{end}} + ` + + tmpl, err := parseTmpl("notifications", markup) + if err != nil { + log.Printf("notifications.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tmpl.Execute( + w, + struct { + Notifications []NotificationChannel + MailGroups []MailGroup + Ctx pageCtx + }{ + Notifications: channels, + MailGroups: mailGroups, + Ctx: getPageCtx(r), + }, + ) + if err != nil { + log.Printf("notifications.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} +func getCreateNotification(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Edit alert{{end}} + {{define "title"}}Create notification channel{{end}} {{define "body"}}
- + - - -

Edit alert

+ + +

Create notification channel

+ + +
+ + +
+ + + +
+ SMTP details + -
- {{if not (len .Services)}} -
-
- - - -
- No services found -
- - - - - - Add service - -
-
- {{end}} - -
- {{range $service := .Services}} - - {{end}} +
+ Request headers list +
+
+ + + +
+
+ +
+
-
+ - -
+
+ Slack info + +
+

You'll need to create a Slack app (if you haven't already) and then add a new webhook to your workspace.

+ + + + + + + + + + + + + Create new Slack app + + + + + + +

Select the "From scratch" option

+ + +

Name your app, choose your Slack workspace, and click “Create app”

+ - Incident - - -
-
- Severity - - + +

Select the Slack channel you'd like to receive notifications in

+ + +

Copy and paste your new webhook URL into statusnook

+ +
- +
{{end}} ` - tmpl, err := parseTmpl("getEditAlert", markup) + tmpl, err := parseTmpl("getCreateNotification", markup) if err != nil { - log.Printf("getEditAlert.parseTmpl: %s", err) + log.Printf("getCreateNotification.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - checkedServices := map[int]bool{} - for _, service := range services { - checkedServices[service.ID] = false - } - for _, service := range alert.Services { - checkedServices[service.ID] = true - } - - err = tmpl.Execute(w, struct { - Alert AlertDetail - Services []service - CheckedServices map[int]bool - Ctx pageCtx - }{ - Alert: alert, - Services: services, - CheckedServices: checkedServices, - Ctx: getPageCtx(r), - }) + err = tmpl.Execute( + w, + struct { + Ctx pageCtx + }{ + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("getEditAlert.Execute: %s", err) + log.Printf("getCreateNotification.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func editAlert( - tx *sql.Tx, - id int, - title string, - services []int, - alertType string, - severity string, -) error { - const alertQuery = ` - update alert set title = ?, type = ?, severity = ? where id = ? - ` - - _, err := tx.Exec(alertQuery, title, alertType, severity, id) - if err != nil { - return fmt.Errorf("editAlert.Exec: %w", err) - } - - const serviceDeleteQuery = ` - delete from alert_service where alert_id = ? - ` - - _, err = tx.Exec(serviceDeleteQuery, id) - if err != nil { - return fmt.Errorf("editAlert.Exec2: %w", err) - } - - const baseServiceInsertQuery = ` - insert into alert_service(alert_id, service_id) values - ` - - serviceInsertQuery := baseServiceInsertQuery - - params := []any{} - - for i, serviceID := range services { - serviceInsertQuery += "(?, ?)" - if i < len(services)-1 { - serviceInsertQuery += ", " - } - params = append(params, id, serviceID) - } - - _, err = tx.Exec(serviceInsertQuery, params...) - if err != nil { - return fmt.Errorf("editAlert.Exec3: %w", err) - } - - return nil +type SMTPNotificationDetails struct { + Host string `json:"host"` + Port int `json:"port"` + Username string `json:"username"` + Password string `json:"password"` + From string `json:"from"` + Headers map[string]string `json:"headers"` + Misc map[string]string `json:"misc"` } -func postEditAlert(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } +type SlackNotificationDetails struct { + WebhookURL string `json:"webhookURL"` +} - title := r.PostFormValue("title") - if title == "" { - w.WriteHeader(http.StatusBadRequest) - return - } +type NotificationChannel struct { + ID int + Slug string + Name string + Type string + Details any +} - services := []int{} - for _, service := range r.PostForm["services"] { - num, err := strconv.Atoi(service) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - services = append(services, num) - } - if len(services) == 0 { - w.WriteHeader(http.StatusBadRequest) - return - } +type listNotificationsOptions struct { + Type string +} - alertType := r.PostFormValue("type") - if alertType != "incident" && alertType != "maintenance" { - w.WriteHeader(http.StatusBadRequest) - return - } +func listNotificationChannels(tx *sql.Tx, options listNotificationsOptions) ([]NotificationChannel, error) { + const baseQuery = ` + select id, slug, name, type, details from notification_channel + ` - severity := r.PostFormValue("severity") - if alertType == "incident" { - if severity != "red" && severity != "amber" { - w.WriteHeader(http.StatusBadRequest) - return - } - } else { - alertType = "maintenance" - } + query := baseQuery - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postEditAlert.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + params := []any{} - err = editAlert(tx, id, title, services, alertType, severity) - if err != nil { - log.Printf("postEditAlert.editAlert: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if options.Type != "" { + query += " where type = ?" + params = append(params, options.Type) } - alerts, err := getOngoingAlerts(tx) + var channels []NotificationChannel + + rows, err := tx.Query(query, params...) if err != nil { - log.Printf("postEditAlert.getOngoingAlerts: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return channels, fmt.Errorf("listNotificationChannels.Query: %w", err) } + defer rows.Close() - newSeverity := "blue" - for _, alert := range alerts { - if alert.Severity == "amber" { - newSeverity = "amber" - continue - } + for rows.Next() { + var detailsStr string + var channel NotificationChannel - if alert.Severity == "red" { - newSeverity = "red" - break + err := rows.Scan(&channel.ID, &channel.Slug, &channel.Name, &channel.Type, &detailsStr) + if err != nil { + return channels, fmt.Errorf("listNotificationChannels.Scan: %w", err) } - } - err = updateSeverity(tx, newSeverity) - if err != nil { - log.Printf("postEditAlert.updateSeverity: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if channel.Type == "smtp" { + var details SMTPNotificationDetails - if err = tx.Commit(); err != nil { - log.Printf("postEditAlert.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channels, fmt.Errorf("listNotificationChannels.UnmarshalSMTP: %w", err) + } + + channel.Details = details + } else if channel.Type == "slack" { + var details SlackNotificationDetails + + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channels, fmt.Errorf("listNotificationChannels.UnmarshalSlack: %w", err) + } + + channel.Details = details + } + + channels = append(channels, channel) } - w.Header().Add("HX-Location", "/admin/alerts") + return channels, nil } -func resolveAlert(tx *sql.Tx, id int) error { +func listNotificationChannelsByMonitorID(tx *sql.Tx, monitorID int) ([]NotificationChannel, error) { const query = ` - update alert set ended_at = ? where id = ? + select notification_channel.id, notification_channel.slug, + notification_channel.name, notification_channel.type, notification_channel.details + from monitor_notification_channel + left join notification_channel on + notification_channel.id = monitor_notification_channel.notification_channel_id + where monitor_notification_channel.monitor_id = ? ` - _, err := tx.Exec(query, time.Now().UTC(), id) + var notifications []NotificationChannel + + rows, err := tx.Query(query, monitorID) if err != nil { - return fmt.Errorf("resolveAlert.Exec: %w", err) + return notifications, fmt.Errorf("listNotificationChannelsByMonitorID.Query: %w", err) } + defer rows.Close() - return nil -} + for rows.Next() { + var detailsStr string + var channel NotificationChannel -func getSeverity(tx *sql.Tx) (string, error) { - const query = ` - select severity from severity limit 1 - ` + err := rows.Scan(&channel.ID, &channel.Slug, &channel.Name, &channel.Type, &detailsStr) + if err != nil { + return notifications, fmt.Errorf("listNotificationChannelsByMonitorID.Scan: %w", err) + } - var severity string + if channel.Type == "smtp" { + var details SMTPNotificationDetails - err := tx.QueryRow(query).Scan(&severity) - if err != nil { - return severity, fmt.Errorf("getSeverity.QueryRow: %w", err) + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return notifications, fmt.Errorf("listNotificationChannelsByMonitorID.UnmarshalSMTP: %w", err) + } + + channel.Details = details + } else if channel.Type == "slack" { + var details SlackNotificationDetails + + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return notifications, fmt.Errorf("listNotificationChannelsByMonitorID.UnmarshalSlack: %w", err) + } + + channel.Details = details + } + + notifications = append(notifications, channel) } - return severity, nil + return notifications, nil } -func updateSeverity(tx *sql.Tx, severity string) error { +func createNotification( + tx *sql.Tx, + slug string, + name string, + notificationType string, + details string, +) error { const query = ` - update severity set severity = ? + insert into notification_channel(slug, name, type, details) values(?, ?, ?, ?) ` - _, err := tx.Exec(query, severity) + _, err := tx.Exec(query, slug, name, notificationType, details) if err != nil { - return fmt.Errorf("updateSeverity.Exec: %w", err) + return fmt.Errorf("createNotification.Exec: %w", err) } return nil } -func postResolveAlert(w http.ResponseWriter, r *http.Request) { - idParam := chi.URLParam(r, "id") - id, err := strconv.Atoi(idParam) - if err != nil { +func postCreateNotification(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { w.WriteHeader(http.StatusBadRequest) return } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postResolveAlert.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() - - err = resolveAlert(tx, id) - if err != nil { - log.Printf("postResolveAlert.resolveAlert: %s", err) - w.WriteHeader(http.StatusInternalServerError) + notificationType := r.PostFormValue("type") + if notificationType != "smtp" && notificationType != "slack" { + w.WriteHeader(http.StatusBadRequest) return } - alerts, err := getOngoingAlerts(tx) - if err != nil { - log.Printf("postResolveAlert.getOngoingAlerts: %s", err) - w.WriteHeader(http.StatusInternalServerError) + displayName := r.PostFormValue("display-name") + if displayName == "" { + w.WriteHeader(http.StatusBadRequest) return } - newSeverity := "blue" - for _, alert := range alerts { - if alert.Severity == "amber" { - newSeverity = "amber" - continue + if notificationType == "smtp" { + host := r.PostFormValue("host") + if host == "" { + w.WriteHeader(http.StatusBadRequest) + return } - if alert.Severity == "red" { - newSeverity = "red" - break + port := r.PostFormValue("port") + if port == "" { + w.WriteHeader(http.StatusBadRequest) + return } - } - - err = updateSeverity(tx, newSeverity) - if err != nil { - log.Printf("postResolveAlert.updateSeverity: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = tx.Commit() - if err != nil { - log.Printf("postResolveAlert.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - w.Header().Add("HX-Location", "/admin/alerts/"+idParam) -} + portNum, err := strconv.Atoi(port) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } -func unresolveAlert(tx *sql.Tx, id int) error { - const query = ` - update alert set ended_at = null where id = ? - ` + username := r.PostFormValue("username") + if username == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - _, err := tx.Exec(query, id) - if err != nil { - return fmt.Errorf("unresolveAlert.Exec: %w", err) - } + password := r.PostFormValue("password") + if password == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - return nil -} + from := r.PostFormValue("from") + if password == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + _, err = mail.ParseAddress(from) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } -func postUnresolveAlert(w http.ResponseWriter, r *http.Request) { - idParam := chi.URLParam(r, "id") - id, err := strconv.Atoi(idParam) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } + headers := map[string]string{} + if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { + for i := 0; i < len(r.Form["header-key"]); i++ { + headers[r.Form["header-key"][i]] = r.Form["header-value"][i] + } + } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postUnresolveAlert.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + misc := map[string]string{} + if strings.EqualFold(host, "smtp.postmarkapp.com") { + txStream := r.PostFormValue("pm-transactional") + bStream := r.PostFormValue("pm-broadcast") - err = unresolveAlert(tx, id) - if err != nil { - log.Printf("postUnresolveAlert.resolveAlert: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + if txStream == "" || bStream == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - alerts, err := getOngoingAlerts(tx) - if err != nil { - log.Printf("postUnresolveAlert.getOngoingAlerts: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + misc["pm-transactional"] = txStream + misc["pm-broadcast"] = bStream + } - newSeverity := "blue" - for _, alert := range alerts { - if alert.Severity == "amber" { - newSeverity = "amber" - continue + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postCreateNotification.BeginSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - if alert.Severity == "red" { - newSeverity = "red" - break + details := SMTPNotificationDetails{ + Host: host, + Port: portNum, + Username: username, + Password: password, + From: from, + Headers: headers, + Misc: misc, } - } - err = updateSeverity(tx, newSeverity) - if err != nil { - log.Printf("postUnresolveAlert.updateSeverity: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + serializedDetails, err := json.Marshal(details) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } - err = tx.Commit() - if err != nil { - log.Printf("postUnresolveAlert.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + channels, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + log.Printf("postCreateNotification.listNotificationChannelsSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - w.Header().Add("HX-Location", "/admin/alerts/"+idParam) -} + channelSlugs := map[string]bool{} + for _, v := range channels { + channelSlugs[v.Slug] = true + } -func getAddAlertMessage(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } + err = createNotification( + tx, + generateSlug(displayName, channelSlugs), + displayName, + notificationType, + string(serializedDetails), + ) + if err != nil { + log.Printf("postCreateNotification.createNotificationSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - tx, err := db.Begin() - if err != nil { - log.Printf("getAddAlertMessage.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + if err = tx.Commit(); err != nil { + log.Printf("postCreateNotification.CommitSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } else if notificationType == "slack" { + webhookURL, err := url.ParseRequestURI(r.PostFormValue("webhook-url")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + } - alert, err := getAlertByID(tx, id) - if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusNotFound) + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postCreateNotification.BeginSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - log.Printf("getAddAlertMessage.getAlertByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + defer tx.Rollback() - err = tx.Commit() - if err != nil { - log.Printf("getAddAlertMessage.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + details := SlackNotificationDetails{ + WebhookURL: webhookURL.String(), + } - const markup = ` - {{define "title"}}{{.Alert.Title}} - add message{{end}} - {{define "body"}} -
-
-
- - - - - - {{if not .Alert.EndedAt }} - {{if eq .Alert.AlertType "incident"}} -
LIVE
- {{else}} -
ACTIVE
- {{end}} - {{end}} -

{{.Alert.Title}}

-
-
+ serializedDetails, err := json.Marshal(details) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } -
- + channels, err := listNotificationChannels(tx, listNotificationsOptions{}) + if err != nil { + log.Printf("postCreateNotification.listNotificationChannelsSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
- -
-
-
- {{end}} - ` + channelSlugs := map[string]bool{} + for _, v := range channels { + channelSlugs[v.Slug] = true + } - tmpl, err := parseTmpl("getAddAlertMessage", markup) - if err != nil { - log.Printf("getAddAlertMessage.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + err = createNotification( + tx, + generateSlug(displayName, channelSlugs), + displayName, + notificationType, + string(serializedDetails), + ) + if err != nil { + log.Printf("postCreateNotification.createNotificationSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - err = tmpl.Execute( - w, - struct { - Alert AlertDetail - Ctx pageCtx - }{ - Alert: alert, - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("getAddAlertMessage.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if err = tx.Commit(); err != nil { + log.Printf("postCreateNotification.CommitSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } } + + w.Header().Add("HX-Location", "/admin/notifications") } -func createAlertMessage(tx *sql.Tx, alertID int, content string) (int, error) { +func getNotificationChannelByID(tx *sql.Tx, id int) (NotificationChannel, error) { const query = ` - insert into - alert_message(content, created_at, alert_id) - values(?, ?, ?) - returning id + select id, slug, name, type, details from notification_channel + where id = ? ` - var id int - - err := tx.QueryRow(query, content, time.Now().UTC(), alertID).Scan(&id) - if err != nil { - return id, fmt.Errorf("createAlertMessage.Scan: %w", err) - } - - return id, nil -} - -func postAddAlertMessage(w http.ResponseWriter, r *http.Request) { - idParam := chi.URLParam(r, "id") + var channel NotificationChannel + var detailsStr string - id, err := strconv.Atoi(idParam) + err := tx.QueryRow(query, id).Scan( + &channel.ID, + &channel.Slug, + &channel.Name, + &channel.Type, + &detailsStr, + ) if err != nil { - w.WriteHeader(http.StatusBadRequest) - return + return channel, fmt.Errorf("getNotificationChannelByID.QueryRow: %w", err) } - message := r.PostFormValue("message") + if channel.Type == "smtp" { + var details SMTPNotificationDetails - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postAddAlertMessage.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channel, fmt.Errorf("getNotificationChannelByID.UnmarshalSMTP: %w", err) + } - alertMessageID, err := createAlertMessage(tx, id, message) - if err != nil { - log.Printf("postAddAlertMessage.createAlertMessage: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + channel.Details = details + } else if channel.Type == "slack" { + var details SlackNotificationDetails - err = createAlertMessageNotifications(tx, time.Now().UTC(), alertMessageID) - if err != nil { - log.Printf("postAddAlertMessage.createAlertMessageNotifications: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channel, fmt.Errorf("getNotificationChannelByID.UnmarshalSlack: %w", err) + } - err = tx.Commit() - if err != nil { - log.Printf("postAddAlertMessage.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + channel.Details = details } - w.Header().Add("HX-Location", "/admin/alerts/"+idParam) + return channel, nil } -func deleteAlertMessageByID(tx *sql.Tx, alertID int, messageID int) error { +func getNotificationChannelBySlug(tx *sql.Tx, slug string) (NotificationChannel, error) { const query = ` - delete from alert_message where alert_id = ? and id = ? + select id, slug, name, type, details from notification_channel + where slug = ? ` - _, err := tx.Exec(query, alertID, messageID) + var channel NotificationChannel + var detailsStr string + + err := tx.QueryRow(query, slug).Scan( + &channel.ID, + &channel.Slug, + &channel.Name, + &channel.Type, + &detailsStr, + ) if err != nil { - return fmt.Errorf("deleteAlertMessageByID.Exec: %w", err) + return channel, fmt.Errorf("getNotificationChannelBySlug.QueryRow: %w", err) } - return nil + if channel.Type == "smtp" { + var details SMTPNotificationDetails + + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channel, fmt.Errorf("getNotificationChannelBySlug.UnmarshalSMTP: %w", err) + } + + channel.Details = details + } else if channel.Type == "slack" { + var details SlackNotificationDetails + + err := json.Unmarshal([]byte(detailsStr), &details) + if err != nil { + return channel, fmt.Errorf("getNotificationChannelBySlug.UnmarshalSlack: %w", err) + } + + channel.Details = details + } + + return channel, nil } -func deleteAlertMessage(w http.ResponseWriter, r *http.Request) { - alertIDParam := chi.URLParam(r, "id") - alertID, err := strconv.Atoi(alertIDParam) - if err != nil { +func getEditNotification(w http.ResponseWriter, r *http.Request) { + readOnly := strings.HasSuffix(r.URL.Path, "view") + if !readOnly && metaConfigFileEnabled { w.WriteHeader(http.StatusBadRequest) return } - messageID, err := strconv.Atoi(chi.URLParam(r, "messageID")) + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { w.WriteHeader(http.StatusBadRequest) return } - tx, err := rwDB.Begin() + tx, err := db.Begin() if err != nil { - log.Printf("deleteAlertMessage.Begin: %s", err) + log.Printf("getEditNotification.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = deleteAlertMessageByID(tx, alertID, messageID) + channel, err := getNotificationChannelByID(tx, id) if err != nil { - log.Printf("deleteAlertMessage.deleteAlertMessageByID: %s", err) + log.Printf("getEditNotification.getNotificationChannelByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("deleteAlertMessage.Commit: %s", err) + log.Printf("getEditNotification.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/alerts/"+alertIDParam) -} + const markup = ` + {{define "title"}} + {{if .ReadOnly}} + View notification channel + {{else}} + Edit notification channel + {{end}} + {{end}} + {{define "body"}} +
+
+
+ + + + + + + {{if .ReadOnly}} +

View notification channel

+ {{else}} +

Edit notification channel

+ {{end}} +
+
+ +
+ +
+ {{if eq .Notification.Type "smtp"}} + + {{end}} + {{if eq .Notification.Type "slack"}} + + {{end}} +
+ + + + {{if eq .Notification.Type "smtp"}} +
+ + + + + + + + + + +
+ + + +
+
+ Headers +
+
+ + + +
+ No headers set + {{if not .ReadOnly}} + + {{end}} +
+
+ Headers list +
+ {{if len .Notification.Details.Headers}} + {{range $k, $v := .Notification.Details.Headers}} +
+ + + +
+ {{end}} + {{else}} +
+ + + +
+ {{end}} +
+ +
+
+
+
+ {{else if eq .Notification.Type "slack"}} +
+ Slack info + -func getEditAlertMessage(w http.ResponseWriter, r *http.Request) { - alertID, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } +
+

You'll need to create a Slack app (if you haven't already) and then add a new webhook to your workspace.

- messageID, err := strconv.Atoi(chi.URLParam(r, "messageID")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } + + + + + + + + + + + + Create new Slack app + + + + + - tx, err := db.Begin() - if err != nil { - log.Printf("getEditAlertMessage.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() +

Select the "From scratch" option

+ - alert, err := getAlertByID(tx, alertID) - if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusNotFound) - return - } - log.Printf("getEditAlertMessage.getAlertByID: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } +

Name your app, choose your Slack workspace, and click “Create app”

+ - err = tx.Commit() - if err != nil { - log.Printf("getEditAlertMessage.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - message := AlertDetailMessage{} - for _, msg := range alert.Messages { - if msg.ID == messageID { - message = msg - break - } - } +

Activate incoming webhooks in your app and click “Add New Webhook to Workspace”

+ - if message.ID == 0 { - w.WriteHeader(http.StatusNotFound) - return - } - const markup = ` - {{define "title"}}{{.Alert.Title}} - add message{{end}} - {{define "body"}} -
-
-
- - - - - - {{if not .Alert.EndedAt }} - {{if eq .Alert.AlertType "incident"}} -
LIVE
- {{else}} -
ACTIVE
- {{end}} - {{end}} -

{{.Alert.Title}}

-
-
+

Select the Slack channel you'd like to receive notifications in

+ - - +

Copy and paste your new webhook URL into statusnook

+ +
+
+ {{end}}
- + {{if not .ReadOnly}} + + {{end}}
- {{end}} - ` + + {{end}} + ` - err = editAlertMessage(tx, alertID, messageID, message) + tmpl, err := parseTmpl("getEditNotification", markup) if err != nil { - log.Printf("postEditAlertMessage.editAlertMessage: %s", err) + log.Printf("getEditNotification.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() + isPostmark := false + + smtpDetail, ok := channel.Details.(SMTPNotificationDetails) + if ok { + isPostmark = strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") + } + + err = tmpl.Execute( + w, + struct { + Notification NotificationChannel + IsPostmark bool + ReadOnly bool + Ctx pageCtx + }{ + Notification: channel, + IsPostmark: isPostmark, + ReadOnly: readOnly, + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("postEditAlertMessage.Commit: %s", err) + log.Printf("getEditNotification.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - - w.Header().Add("HX-Location", "/admin/alerts/"+alertIDParam) -} - -type service struct { - ID int - Name string - HelperText string } -func listServices(tx *sql.Tx) ([]service, error) { +func editNotificationChannel(tx *sql.Tx, channel NotificationChannel) error { const query = ` - select - id, name, helper_text - from - service + update notification_channel set name = ?, details = ? + where id = ? ` - services := []service{} - - rows, err := tx.Query(query) + _, err := tx.Exec(query, channel.Name, channel.Details, channel.ID) if err != nil { - return services, fmt.Errorf("listServices.Query: %w", err) + return fmt.Errorf("editNotificationChannel.Exec: %w", err) } - defer rows.Close() - for rows.Next() { - svc := service{} - err = rows.Scan( - &svc.ID, - &svc.Name, - &svc.HelperText, - ) - if err != nil { - return services, fmt.Errorf("listServices.Scan: %w", err) - } + return nil +} - services = append(services, svc) +func updateNotificationChannelSlug(tx *sql.Tx, old string, new string) (int, error) { + const query = ` + update notification_channel set slug = ? where slug = ? returning id + ` + + var id int + + err := tx.QueryRow(query, new, old).Scan(&id) + if err != nil { + return id, fmt.Errorf("updateNotificationChannelSlug.QueryRow: %w", err) } - return services, nil + return id, nil } -func services(w http.ResponseWriter, r *http.Request) { - tx, err := db.Begin() - if err != nil { - log.Printf("services.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) +func postEditNotification(w http.ResponseWriter, r *http.Request) { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) return } - defer tx.Rollback() - services, err := listServices(tx) + idParam := chi.URLParam(r, "id") + notificationID, err := strconv.Atoi(idParam) if err != nil { - log.Printf("services.listServices: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } - err = tx.Commit() + tx, err := rwDB.Begin() if err != nil { - log.Printf("services.Commit: %s", err) + log.Printf("postEditNotification.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - const markup = ` - {{define "title"}}Services{{end}} - {{define "body"}} -
-
-

Services

-
- - -
- - {{if eq (len .Services) 0}} -
-
- - - -
- Add your first service - Add service -
- {{else}} -
- {{range $service := .Services}} -
-
- {{$service.Name}} - {{$service.HelperText}} -
- - - Delete {{$service.Name}} -
-
- - -
-
-
-
- {{end}} -
- {{end}} - {{end}} - ` - - tmpl, err := parseTmpl("services", markup) + channel, err := getNotificationChannelByID(tx, notificationID) if err != nil { - log.Printf("services.parseTmpl: %s", err) + log.Printf("postEditNotification.getNotificationChannelByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Services []service - Ctx pageCtx - }{ - Services: services, - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("services.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) + displayName := r.PostFormValue("display-name") + if displayName == "" { + w.WriteHeader(http.StatusBadRequest) return } -} -func getCreateService(w http.ResponseWriter, r *http.Request) { - const markup = ` - {{define "title"}}Create service{{end}} - {{define "body"}} -
-
-
- - - - - - -

Create service

-
-
+ if channel.Type == "smtp" { + host := r.PostFormValue("host") + if host == "" { + w.WriteHeader(http.StatusBadRequest) + return + } -
- + port := r.PostFormValue("port") + if port == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - + portNum, err := strconv.Atoi(port) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } -
- -
-
-
- {{end}} - ` + username := r.PostFormValue("username") + if username == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - tmpl, err := parseTmpl("getCreateService", markup) - if err != nil { - log.Printf("getCreateService.parseTmpl: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + password := r.PostFormValue("password") + if password == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - err = tmpl.Execute( - w, - struct { - Ctx pageCtx - }{ - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("getCreateService.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } -} + from := r.PostFormValue("from") + if password == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + _, err = mail.ParseAddress(from) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + headers := map[string]string{} + if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { + for i := 0; i < len(r.Form["header-key"]); i++ { + headers[r.Form["header-key"][i]] = r.Form["header-value"][i] + } + } -func createService(tx *sql.Tx, name string, helperText string) error { - const query = ` - insert into service(name, helper_text) values(?, ?) - ` + misc := map[string]string{} + if strings.EqualFold(host, "smtp.postmarkapp.com") { + txStream := r.PostFormValue("pm-transactional") + bStream := r.PostFormValue("pm-broadcast") - _, err := tx.Exec(query, name, helperText) - if err != nil { - return fmt.Errorf("createService.Exec: %w", err) - } + if txStream == "" || bStream == "" { + w.WriteHeader(http.StatusBadRequest) + return + } - return nil -} + misc["pm-transactional"] = txStream + misc["pm-broadcast"] = bStream + } -func postCreateService(w http.ResponseWriter, r *http.Request) { - name := r.PostFormValue("name") - helperText := r.PostFormValue("helper") + details := SMTPNotificationDetails{ + Host: host, + Port: portNum, + Username: username, + Password: password, + Headers: headers, + From: from, + Misc: misc, + } - if name == "" { - w.WriteHeader(http.StatusBadRequest) - return - } + serializedDetails, err := json.Marshal(details) + if err != nil { + log.Printf("postEditNotification.MarshalSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postCreateService.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() + err = editNotificationChannel( + tx, + NotificationChannel{ + ID: channel.ID, + Name: displayName, + Type: channel.Type, + Details: serializedDetails, + }, + ) + if err != nil { + log.Printf("postEditNotification.editNotificationChannelSMTP: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } else if channel.Type == "slack" { + webhookURL, err := url.ParseRequestURI(r.PostFormValue("webhook-url")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + } - _, err = listServices(tx) - if err != nil { - log.Printf("postCreateService.listServices: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + details := SlackNotificationDetails{ + WebhookURL: webhookURL.String(), + } - err = createService(tx, name, helperText) - if err != nil { - log.Printf("postCreateService.createService: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + serializedDetails, err := json.Marshal(details) + if err != nil { + log.Printf("postEditNotification.MarshalSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = editNotificationChannel( + tx, + NotificationChannel{ + ID: channel.ID, + Name: displayName, + Type: channel.Type, + Details: serializedDetails, + }, + ) + if err != nil { + log.Printf("postEditNotification.editNotificationChannelSlack: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } } err = tx.Commit() if err != nil { - log.Printf("postCreateService.Commit: %s", err) + log.Printf("postEditNotification.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/services") + w.Header().Add("HX-Location", "/admin/notifications") } -func deleteServiceByID(tx *sql.Tx, id int) error { +func getViewNotification(w http.ResponseWriter, r *http.Request) { + getEditNotification(w, r) +} + +func deleteNotificationChannelByID(tx *sql.Tx, id int) error { const query = ` - delete from service where id = $1 + delete from notification_channel where id = $1 ` _, err := tx.Exec(query, id) if err != nil { - return fmt.Errorf("deleteServiceByID.Exec: %w", err) + return fmt.Errorf("deleteNotificationChannelByID.Exec: %w", err) } return nil } -func deleteService(w http.ResponseWriter, r *http.Request) { +func deleteNotificationChannel(w http.ResponseWriter, r *http.Request) { id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { w.WriteHeader(http.StatusBadRequest) @@ -10592,111 +14147,149 @@ func deleteService(w http.ResponseWriter, r *http.Request) { tx, err := rwDB.Begin() if err != nil { - log.Printf("deleteService.Begin: %s", err) + log.Printf("deleteNotificationChannel.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = deleteServiceByID(tx, id) + err = deleteNotificationChannelByID(tx, id) if err != nil { - log.Printf("deleteService.deleteServiceByID: %s", err) + log.Printf("deleteNotificationChannel.deleteNotificationChannelByID: %s", err) } err = tx.Commit() if err != nil { - log.Printf("deleteService.Commit: %s", err) + log.Printf("deleteNotificationChannel.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/services") -} - -func getServiceByID(tx *sql.Tx, id int) (service, error) { - const query = ` - select id, name, helper_text from service where id = $1 - ` - - service := service{} - - err := tx.QueryRow(query, id).Scan( - &service.ID, - &service.Name, - &service.HelperText, - ) - if err != nil { - return service, fmt.Errorf("getServiceByID.Scan: %w", err) - } - - return service, nil + w.Header().Add("HX-Location", "/admin/notifications") } -func getEditService(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - - tx, err := db.Begin() - if err != nil { - log.Printf("getEditService.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() - - svc, err := getServiceByID(tx, id) - if err != nil { - log.Printf("getEditService.getServiceByID: %s", err) - } - - err = tx.Commit() - if err != nil { - log.Printf("getEditService.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - +func getCreateMailGroup(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Edit service{{end}} + {{define "title"}}Create mail group{{end}} {{define "body"}}
- + - -

Edit service

+ +

Create mail group

-
+ + + + +
+ Members +
+
+ + + +
+ No members + +
+
+ Request headers list +
+
+ + +
+
+ +
+
+ +
+ +
+
+
+ {{end}} ` - tmpl, err := parseTmpl("getEditService", markup) + tmpl, err := parseTmpl("getCreateMailGroup", markup) if err != nil { - log.Printf("getEditService.parseTmpl: %s", err) + log.Printf("getCreateMailGroup.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -10704,292 +14297,68 @@ func getEditService(w http.ResponseWriter, r *http.Request) { err = tmpl.Execute( w, struct { - Service service - Ctx pageCtx + Ctx pageCtx }{ - Service: svc, - Ctx: getPageCtx(r), + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getEditService.Execute: %s", err) + log.Printf("getCreateMailGroup.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func editService(tx *sql.Tx, id int, name string, helperText string) error { - const query = ` - update service set name = ?, helper_text = ? where id = ? - ` - - _, err := tx.Exec(query, name, helperText, id) - if err != nil { - return fmt.Errorf("editService.Exec: %w", err) - } - - return nil -} - -func postEditService(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - - name := r.PostFormValue("name") - helperText := r.PostFormValue("helper") - - if name == "" { +func getEditMailGroup(w http.ResponseWriter, r *http.Request) { + readOnly := strings.HasSuffix(r.URL.Path, "view") + if !readOnly && metaConfigFileEnabled { w.WriteHeader(http.StatusBadRequest) return } - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postEditService.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() - - err = editService(tx, id, name, helperText) - if err != nil { - log.Printf("postEditService.createService: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = tx.Commit() + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { - log.Printf("postEditService.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } - w.Header().Add("HX-Location", "/admin/services") -} - -func notifications(w http.ResponseWriter, r *http.Request) { tx, err := db.Begin() if err != nil { - log.Printf("notifications.Begin: %s", err) + log.Printf("getEditMailGroup.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - channels, err := listNotificationChannels(tx, listNotificationsOptions{}) - if err != nil { - log.Printf("notifications.listNotificationChannels: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - mailGroups, err := listMailGroups(tx) - if err != nil { - log.Printf("notifications.listMailGroups: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = tx.Commit() + mailGroup, err := getMailGroupByID(tx, id) if err != nil { - log.Printf("notifications.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - const markup = ` - {{define "title"}}Notifications{{end}} - {{define "body"}} -
-
-

Notifications

-
-
- -
-
-

Channels

- - -
- -
- {{if eq (len .Notifications) 0}} -
-
- - - -
- Add your first notification channel - Add channel -
- {{else}} -
- {{range $notification := .Notifications}} -
-
- {{if eq $notification.Type "smtp"}} - - - - - {{else if eq $notification.Type "slack"}} - - - - - - - - - - - {{end}} -
- {{if eq $notification.Type "smtp"}} - {{if $notification.Name}} - {{$notification.Name}} - {{else}} - {{$notification.Details.Host}} - {{end}} - {{else}} - {{$notification.Name}} - {{end}} - {{if eq $notification.Type "smtp"}} - {{$notification.Details.Host}} - {{end}} -
-
- - - Delete {{$notification.Name}} -
-
- - -
-
-
-
- {{end}} -
- {{end}} -
- -
-

Mail groups

- -
- - {{if eq (len .MailGroups) 0}} -
-
- - - - -
- Create your first mail group - Add mail group -
- {{else}} -
- {{range $mailGroup := .MailGroups}} -
-
-
- {{$mailGroup.Name}} - {{if $mailGroup.Description}} - {{$mailGroup.Description}} - {{end}} -
-
- - - Delete {{$mailGroup.Name}} -
-
- - -
-
-
-
- {{end}} -
- {{end}} -
- {{end}} - ` + log.Printf("getEditMailGroup.getMailGroupByID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - tmpl, err := parseTmpl("notifications", markup) + mailGroupMembers, err := listMailGroupMembersByID(tx, id) if err != nil { - log.Printf("notifications.parseTmpl: %s", err) + log.Printf("getEditMailGroup.listMailGroupMembersByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Notifications []NotificationChannel - MailGroups []MailGroup - Ctx pageCtx - }{ - Notifications: channels, - MailGroups: mailGroups, - Ctx: getPageCtx(r), - }, - ) + err = tx.Commit() if err != nil { - log.Printf("notifications.Execute: %s", err) + log.Printf("getEditMailGroup.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} -func getCreateNotification(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Create notification channel{{end}} + {{define "title"}} + {{if .ReadOnly}} + View mail group + {{else}} + Edit mail group + {{end}} + {{end}} {{define "body"}}
@@ -10998,260 +14367,108 @@ func getCreateNotification(w http.ResponseWriter, r *http.Request) { - - -

Create notification channel

+ + + {{if .ReadOnly}} +

View mail group

+ {{else}} +

Edit mail group

+ {{end}}
-
- - - -
- - -
- - - -
- SMTP details - - - - - - - - - - -
- - - -
-
- Headers -
-
- - - -
- No headers set - -
-
- Request headers list -
-
- - - -
-
- -
-
-
-
- -
- Slack info - - -
-

You'll need to create a Slack app (if you haven't already) and then add a new webhook to your workspace.

- - - - - - - - - - - - - Create new Slack app - - - - - - -

Select the "From scratch" option

- - -

Name your app, choose your Slack workspace, and click “Create app”

- - - -

Activate incoming webhooks in your app and click “Add New Webhook to Workspace”

- - - -

Select the Slack channel you'd like to receive notifications in

- + + -

Copy and paste your new webhook URL into statusnook

- + + +
+ Members +
+
+ + + +
+ No members + {{if not .Ctx.ConfigFile}} + + {{else}} + Go to settings + {{end}}
+
+ Request headers list +
+ {{if .MailGroupMembers}} + {{range $member := .MailGroupMembers}} +
+ + +
+ {{end}} + {{else}} +
+ + +
+ {{end}} +
+ +
- + {{if not .Ctx.ConfigFile}} + + {{end}}
+ latestRelease := GitHubRelease{} + + err = json.Unmarshal(body, &latestRelease) + if err != nil { + log.Printf("updateCheck.Unmarshal: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + updateAvailable := semver.Compare(latestRelease.TagName, VERSION) > 0 + latestVersion := latestRelease.TagName + + const markup = ` +
+ {{if .UpdateAvailable}} +
+
+
+ + + + +
+ Updates are available +
+ {{if not .Docker}} + + {{end}} +
+
+
+ + + + {{.LatestVersion}} +
+
+ + + + + {{.PublishedAt}} +
+
+ {{else}} +
+
+
+ + + +
+ Statusnook is up to date +
+
+ {{end}} +
+ {{if .UpdateAvailable}} +

{{.UpdateBody}}

{{end}} + + Update to {{.LatestVersion}} +
+
+ + +
+
+
` - tmpl, err := parseTmpl("getEditNotification", markup) + tmpl, err := parseTmpl("updateCheck", markup) if err != nil { - log.Printf("getEditNotification.parseTmpl: %s", err) + log.Printf("updateCheck.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - isPostmark := false - - smtpDetail, ok := channel.Details.(SMTPNotificationDetails) - if ok { - isPostmark = strings.EqualFold(smtpDetail.Host, "smtp.postmarkapp.com") - } - err = tmpl.Execute( w, struct { - Notification NotificationChannel - IsPostmark bool - Ctx pageCtx + UpdateAvailable bool + LatestVersion string + PublishedAt string + UpdateBody string + Docker bool + Ctx pageCtx }{ - Notification: channel, - IsPostmark: isPostmark, - Ctx: getPageCtx(r), + + UpdateAvailable: updateAvailable, + LatestVersion: latestVersion, + PublishedAt: latestRelease.PublishedAt.Format("2006/01/02"), + UpdateBody: latestRelease.Body, + Docker: *dockerFlag, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getEditNotification.Execute: %s", err) + log.Printf("updateCheck.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func editNotificationChannel(tx *sql.Tx, channel NotificationChannel) error { - const query = ` - update notification_channel set name = ?, details = ? - where id = ? +func afterUpdate(w http.ResponseWriter, r *http.Request) { + const markup = ` +
+ + Successfully installed {{.Version}} + +
` - _, err := tx.Exec(query, channel.Name, channel.Details, channel.ID) - if err != nil { - return fmt.Errorf("editNotificationChannel.Exec: %w", err) - } - - return nil -} - -func postEditNotification(w http.ResponseWriter, r *http.Request) { - idParam := chi.URLParam(r, "id") - notificationID, err := strconv.Atoi(idParam) + tmpl, err := parseTmpl("afterUpdate", markup) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("afterUpdate.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := rwDB.Begin() + err = tmpl.Execute( + w, + struct { + Version string + Ctx pageCtx + }{ + Version: VERSION, + Ctx: getPageCtx(r), + }, + ) if err != nil { - log.Printf("postEditNotification.Begin: %s", err) + log.Printf("afterUpdate.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() +} - channel, err := getNotificationChannelByID(tx, notificationID) +func postUpdate(w http.ResponseWriter, r *http.Request) { + httpClient := http.Client{ + Timeout: time.Second * 10, + } + + req, err := http.NewRequest( + http.MethodGet, + "https://api.github.com/repos/goksan/statusnook/releases/latest", + nil, + ) if err != nil { - log.Printf("postEditNotification.getNotificationChannelByID: %s", err) + log.Printf("postUpdate.NewRequest: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - displayName := r.PostFormValue("display-name") - if displayName == "" { - w.WriteHeader(http.StatusBadRequest) + resp, err := httpClient.Do(req) + if err != nil { + log.Printf("postUpdate.Do: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + defer resp.Body.Close() - if channel.Type == "smtp" { - host := r.PostFormValue("host") - if host == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - port := r.PostFormValue("port") - if port == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - portNum, err := strconv.Atoi(port) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - - username := r.PostFormValue("username") - if username == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - password := r.PostFormValue("password") - if password == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - from := r.PostFormValue("from") - if password == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - _, err = mail.ParseAddress(from) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - - headers := map[string]string{} - if r.PostFormValue("header-key") != "" && r.PostFormValue("header-value") != "" { - for i := 0; i < len(r.Form["header-key"]); i++ { - headers[r.Form["header-key"][i]] = r.Form["header-value"][i] - } - } - - misc := map[string]string{} - if strings.EqualFold(host, "smtp.postmarkapp.com") { - txStream := r.PostFormValue("pm-transactional") - bStream := r.PostFormValue("pm-broadcast") - - if txStream == "" || bStream == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - misc["pm-transactional"] = txStream - misc["pm-broadcast"] = bStream - } - - details := SMTPNotificationDetails{ - Host: host, - Port: portNum, - Username: username, - Password: password, - Headers: headers, - From: from, - Misc: misc, - } - - serializedDetails, err := json.Marshal(details) - if err != nil { - log.Printf("postEditNotification.MarshalSMTP: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = editNotificationChannel( - tx, - NotificationChannel{ - ID: channel.ID, - Name: displayName, - Type: channel.Type, - Details: serializedDetails, - }, - ) - if err != nil { - log.Printf("postEditNotification.editNotificationChannelSMTP: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - } else if channel.Type == "slack" { - webhookURL, err := url.ParseRequestURI(r.PostFormValue("webhook-url")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - } - - details := SlackNotificationDetails{ - WebhookURL: webhookURL.String(), - } + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Printf("postUpdate.ReadAll: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - serializedDetails, err := json.Marshal(details) - if err != nil { - log.Printf("postEditNotification.MarshalSlack: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + type GitHubReleaseAsset struct { + Name string `json:"name"` + URL string `json:"url"` + } - err = editNotificationChannel( - tx, - NotificationChannel{ - ID: channel.ID, - Name: displayName, - Type: channel.Type, - Details: serializedDetails, - }, - ) - if err != nil { - log.Printf("postEditNotification.editNotificationChannelSlack: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + type GitHubRelease struct { + TagName string `json:"tag_name"` + Assets []GitHubReleaseAsset `json:"assets"` } - err = tx.Commit() + latestRelease := GitHubRelease{} + + err = json.Unmarshal(body, &latestRelease) if err != nil { - log.Printf("postEditNotification.Commit: %s", err) + log.Printf("postUpdate.Unmarshal: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/notifications") -} + updateAvailable := semver.Compare(latestRelease.TagName, VERSION) > 0 + latestVersion := latestRelease.TagName -func deleteNotificationChannelByID(tx *sql.Tx, id int) error { - const query = ` - delete from notification_channel where id = $1 - ` + if !updateAvailable { + return + } - _, err := tx.Exec(query, id) - if err != nil { - return fmt.Errorf("deleteNotificationChannelByID.Exec: %w", err) + downloadURL := "" + + for _, asset := range latestRelease.Assets { + if strings.Contains(asset.Name, runtime.GOOS+"_"+runtime.GOARCH) { + downloadURL = asset.URL + } } - return nil -} + if downloadURL == "" { + log.Printf("postUpdate.downloadURL: no download URL") + w.WriteHeader(http.StatusInternalServerError) + return + } -func deleteNotificationChannel(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) + downloadReq, err := http.NewRequest(http.MethodGet, downloadURL, nil) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("postUpdate.NewRequestDownload: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + downloadReq.Header.Add("Accept", "application/octet-stream") - tx, err := rwDB.Begin() + resp, err = httpClient.Do(downloadReq) if err != nil { - log.Printf("deleteNotificationChannel.Begin: %s", err) + log.Printf("postUpdate.DoDownload: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() + defer resp.Body.Close() - err = deleteNotificationChannelByID(tx, id) + err = os.Remove("statusnook") if err != nil { - log.Printf("deleteNotificationChannel.deleteNotificationChannelByID: %s", err) + log.Printf("postUpdate.Remove: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - err = tx.Commit() + file, err := os.Create("statusnook") if err != nil { - log.Printf("deleteNotificationChannel.Commit: %s", err) + log.Printf("postUpdate.Create: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/notifications") -} - -func getCreateMailGroup(w http.ResponseWriter, r *http.Request) { - const markup = ` - {{define "title"}}Create mail group{{end}} - {{define "body"}} -
-
-
- - - - - - -

Create mail group

-
-
- -
- - - - -
- Members -
-
- - - -
- No members - -
-
- Request headers list -
-
- - -
-
- -
-
- -
- -
-
-
- - {{end}} - ` + syscall.Kill(syscall.Getpid(), syscall.SIGINT) +} - tmpl, err := parseTmpl("getCreateMailGroup", markup) +func getSettings(w http.ResponseWriter, r *http.Request) { + refresh := r.URL.Query().Get("refresh") != "" + + tx, err := db.Begin() if err != nil { - log.Printf("getCreateMailGroup.parseTmpl: %s", err) + log.Printf("getSettings.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = tmpl.Execute( - w, - struct { - Ctx pageCtx - }{ - Ctx: getPageCtx(r), - }, - ) + users, err := listUsers(tx) if err != nil { - log.Printf("getCreateMailGroup.Execute: %s", err) + log.Printf("getSettings.listUsers: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} -func getEditMailGroup(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) + invitations, err := listActiveUserInvitations(tx, time.Now().UTC().Add(-time.Hour*24)) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("getSettings.listActiveUserInvitations: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := db.Begin() - if err != nil { - log.Printf("getEditMailGroup.Begin: %s", err) + configFileEnabledStr, err := getMetaValue(tx, "configFileEnabled") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getSettings.getMetaValueConfigFileEnabled: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - mailGroup, err := getMailGroupByID(tx, id) - if err != nil { - log.Printf("getEditMailGroup.getMailGroupByID: %s", err) + configFileEnabled := false + if configFileEnabledStr != "" { + configFileEnabled, err = strconv.ParseBool(configFileEnabledStr) + if err != nil { + log.Printf("getSettings.ParseBoolConfigFileEnabled: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + configFile := "" + if configFileEnabled { + cfg, err := getMetaValue(tx, "configFile") + if err != nil { + log.Printf("getSettings.getMetaValueConfigFile: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + configFile = cfg + } + + githubManagedConfigStr, err := getMetaValue(tx, "githubManagedConfig") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getSettings.getMetaValueGitHubManagedConfig: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - mailGroupMembers, err := listMailGroupMembersByID(tx, id) - if err != nil { - log.Printf("getEditMailGroup.listMailGroupMembersByID: %s", err) + githubManagedConfig := false + if githubManagedConfigStr != "" { + githubManagedConfig, err = strconv.ParseBool(githubManagedConfigStr) + if err != nil { + log.Printf("getSettings.ParseBoolGitHubManagedConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + githubConfigSHA := "" + githubRepoURL := "" + githubConfigPath := "" + githubConfigBranch := "" + githubConfigErrors := []string{} + if githubManagedConfig { + githubConfigSHA, err = getMetaValue(tx, "githubConfigSHA") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getSettings.getMetaValueGitHubConfigSHA: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + if githubConfigSHA != "" { + githubConfigSHA = githubConfigSHA[0:7] + } + + githubRepoURL, err = getMetaValue(tx, "githubRepoURL") + if err != nil { + log.Printf("getSettings.getMetaValueGitHubRepoURL: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + githubConfigPath, err = getMetaValue(tx, "githubConfigPath") + if err != nil { + log.Printf("getSettings.getMetaValueGitHubConfigPath: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + githubConfigBranch, err = getMetaValue(tx, "githubConfigBranch") + if err != nil { + log.Printf("getSettings.getMetaValueGitHubConfigBranch: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + githubConfigErrorsStr, err := getMetaValue(tx, "githubConfigErrors") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getSettings.getMetaValueGitHubConfigErrors: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + if githubConfigErrorsStr != "" { + err = json.Unmarshal([]byte(githubConfigErrorsStr), &githubConfigErrors) + if err != nil { + log.Printf("getSettings.UnmarshalGitHubConfigErrors: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + err = tx.Commit() if err != nil { - log.Printf("getEditMailGroup.Commit: %s", err) + log.Printf("getSettings.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}Edit mail group{{end}} - {{define "body"}} -
-
-
- - - - - - -

Edit mail group

-
+ type FormattedInvitation struct { + ID int + Token string + ExpiresIn string + } + + formattedInvitations := make([]FormattedInvitation, 0, len(invitations)) + + for _, invitation := range invitations { + expiresIn := invitation.CreatedAt.Add(time.Hour * 24).Sub(time.Now().UTC()) + h := int(expiresIn.Truncate(time.Hour).Hours()) + m := int(expiresIn.Truncate(time.Minute).Minutes()) - (h * 60) + formattedInvitations = append( + formattedInvitations, + FormattedInvitation{ + ID: invitation.ID, + Token: invitation.Token, + ExpiresIn: fmt.Sprintf("%dh %dm", h, m), + }, + ) + } + + const markup = ` + {{define "title"}}Settings{{end}} + {{define "body"}} +
+
+

Settings

+
+
+ +
+
+
+ + +
+ + + {{if not .Ctx.ConfigFile}} + + {{end}} + + + + +
+
+
+ +
+ + + {{if .Ctx.UnconfirmedDomainProblem}} + + {{else}} + + {{end}} + + {{if .Ctx.UnconfirmedDomain}} + {{if not .Ctx.UnconfirmedDomainProblem}} + + {{end}} + {{end}} + + {{if and .Ctx.UnconfirmedDomain .Ctx.UnconfirmedDomainProblem}} +
+ + + +
+ {{end}} + + {{if and .Domain (not .Ctx.UnconfirmedDomain)}} +
+ + + + + + + +
+ {{end}} +
+ +
+

Users

+
+
+ {{range $user := .Users}} +
+
+ {{$user.Username}} +
+ + + Delete {{$user.Username}} +
+
+ + +
+
+
+
+ {{end}} + + {{if .Refresh}} + + {{end}}
-
- +
+

Invitations

- - -
- Members - +
+ {{if len .Invitations}} + {{range $invite := .Invitations}} +
+
+ https://{{$.Ctx.Domain}}/invitation/{{$invite.Token}} + Expires in {{$invite.ExpiresIn}} +
+ + + Delete invite + +
+ + +
+ +
+
+ {{end}} + {{else}} +
- - + +
- No members - + Create invite +
-
- Request headers list -
- {{if .MailGroupMembers}} - {{range $member := .MailGroupMembers}} -
- - -
- {{end}} + {{end}} + {{if .Refresh}} + + {{end}} +
+ +
+

Configuration

+
+ {{if and .GitHubManagedConfig .GitHubConfigSHA}} +
+ {{if .GitHubConfigErrors}} + + + {{else}} -
- - -
+ + + {{end}} + {{.GitHubConfigSHA}}
- -
-
+ + Settings + {{if .ConfigFile}} + + {{end}} + +
+
+
+ {{if .ConfigFileEnabled}} +
+
+
+ Save changes + +
+
+ {{range $error := .GitHubConfigErrors}} +
+ {{$error}} +
+ {{end}} +
+
+ +
+ {{else}} +
+
+ + + +
+ Your configuration is managed by Statusnook web UI forms + Switch to text based +
+ {{end}} + +
- + Secrets +
- -
- + {{end}} + + + + if (!window.monaco) { + await addScript("/static/monaco-editor/min/vs/loader.js"); + await addScript("/static/monaco-editor/min/vs/editor/editor.main.nls.js"); + await addScript("/static/monaco-editor/min/vs/editor/editor.main.js"); + initEditor(); + } + })(); + {{end}} + + +
+
{{end}} ` - tmpl, err := parseTmpl("getEditMailGroup", markup) + tmpl, err := parseTmpl("getSettings", markup) if err != nil { - log.Printf("getEditMailGroup.parseTmpl: %s", err) + log.Printf("getSettings.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -12614,448 +16018,556 @@ func getEditMailGroup(w http.ResponseWriter, r *http.Request) { err = tmpl.Execute( w, struct { - MailGroup MailGroup - MailGroupMembers []MailGroupMember - Ctx pageCtx + CurrentVersion string + Domain string + Users []SettingsUser + Invitations []FormattedInvitation + Refresh bool + ConfigFileEnabled bool + ConfigFile string + GitHubManagedConfig bool + GitHubConfigSHA string + GitHubCommitLink string + GitHubConfigErrors []string + Ctx pageCtx }{ - MailGroup: mailGroup, - MailGroupMembers: mailGroupMembers, - Ctx: getPageCtx(r), + CurrentVersion: VERSION, + Domain: metaDomain, + Users: users, + Invitations: formattedInvitations, + Refresh: refresh, + ConfigFileEnabled: configFileEnabled, + ConfigFile: configFile, + GitHubManagedConfig: githubManagedConfig, + GitHubConfigSHA: githubConfigSHA, + GitHubCommitLink: githubRepoURL + "/blob/" + githubConfigBranch + "/" + + githubConfigPath, + GitHubConfigErrors: githubConfigErrors, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("getEditMailGroup.Execute: %s", err) + log.Printf("getSettings.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -type MailGroup struct { - ID int - Name string - Description string -} - -func listMailGroups(tx *sql.Tx) ([]MailGroup, error) { - const query = ` - select id, name, description from mail_group - ` - - mailGroups := []MailGroup{} - - rows, err := tx.Query(query) - if err != nil { - return mailGroups, fmt.Errorf("listMailGroups.Query: %w", err) - } - defer rows.Close() +func postSettings(w http.ResponseWriter, r *http.Request) { + name := r.PostFormValue("name") + domain := strings.ToLower(r.PostFormValue("domain")) - for rows.Next() { - mailGroup := MailGroup{} - err = rows.Scan(&mailGroup.ID, &mailGroup.Name, &mailGroup.Description) - if err != nil { - return mailGroups, fmt.Errorf("listMailGroups.Scan: %w", err) + if name != "" { + if metaConfigFileEnabled { + w.WriteHeader(http.StatusBadRequest) + return } - mailGroups = append(mailGroups, mailGroup) - } - - return mailGroups, nil -} - -func updateMonitorMailGroups(tx *sql.Tx, monitorID int, mailGroupIDs []int) error { - const deleteQuery = ` - delete from mail_group_monitor where monitor_id = ? - ` - - _, err := tx.Exec(deleteQuery, monitorID) - if err != nil { - return fmt.Errorf("updateMonitorMailGroups.ExecDelete: %w", err) - } - - if len(mailGroupIDs) > 0 { - const baseInsertQuery = ` - insert into mail_group_monitor(mail_group_id, monitor_id) values - ` - - insertQuery := baseInsertQuery - - params := []any{} - - for i, v := range mailGroupIDs { - insertQuery += "(?, ?)" - if i < len(mailGroupIDs)-1 { - insertQuery += "," - } - params = append(params, v, monitorID) + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postSettings.BeginName: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } + defer tx.Rollback() - _, err = tx.Exec(insertQuery, params...) + err = updateMetaValue(tx, "name", name) if err != nil { - return fmt.Errorf("updateMonitorMailGroups.ExecInsert: %w", err) + log.Printf("postSettings.updateMetaValueName: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - } - - return nil -} - -func listMailGroupIDsByMonitorID(tx *sql.Tx, monitorID int) ([]int, error) { - const query = ` - select mail_group_id from mail_group_monitor - where monitor_id = ? - ` - ids := []int{} - - rows, err := tx.Query(query, monitorID) - if err != nil { - return ids, fmt.Errorf("listMailGroupIDsByMonitorID.Query: %w", err) - } - defer rows.Close() - - for rows.Next() { - var id int - err = rows.Scan(&id) - if err != nil { - return ids, fmt.Errorf("listMailGroupIDsByMonitorID.Scan: %w", err) + if err := tx.Commit(); err != nil { + log.Printf("postSettings.CommitName: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - ids = append(ids, id) - } + metaName = name - return ids, nil -} + escapedName := html.EscapeString(metaName) -type MailGroupMember struct { - ID int - EmailAddress string -} + w.Write([]byte( + fmt.Sprintf(` + + %s + `, + escapedName, + escapedName, + ), + )) -func listMailGroupMembersByID(tx *sql.Tx, id int) ([]MailGroupMember, error) { - const query = ` - select id, email_address from mail_group_member where mail_group_id = ? - ` + return + } - members := []MailGroupMember{} + if domain != "" { + if metaSSL != "true" { + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postSettings.BeginUnmanagedDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } + defer tx.Rollback() - rows, err := tx.Query(query, id) - if err != nil { - return members, fmt.Errorf("listMailGroupMembersByID.Query: %w", err) - } - defer rows.Close() + err = updateMetaValue(tx, "domain", domain) + if err != nil { + log.Printf("postSettings.updateMetaValueDomainUnmanaged: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - for rows.Next() { - member := MailGroupMember{} - err = rows.Scan(&member.ID, &member.EmailAddress) - if err != nil { - return members, fmt.Errorf("listMailGroupMembersByID.Scan: %w", err) - } + err = tx.Commit() + if err != nil { + log.Printf("postSettings.CommitUnmanagedDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - members = append(members, member) - } + metaDomain = domain - return members, nil -} + w.Header().Add("HX-Location", "/admin/settings") + return + } -func listMailGroupMembersEmailsByMonitorID(tx *sql.Tx, id int) ([]string, error) { - const query = ` - select distinct email_address from mail_group_member - left join mail_group on mail_group.id = mail_group_member.mail_group_id - left join mail_group_monitor on mail_group_monitor.mail_group_id = mail_group.id - where mail_group_monitor.monitor_id = ? - ` + if metaDomain == "" { + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postSettings.BeginUnconfirmedDomainUpdate: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } + defer tx.Rollback() - emails := []string{} + err = updateMetaValue(tx, "unconfirmedDomain", domain) + if err != nil { + log.Printf("postSettings.updateMetaValueUnconfirmedDomainUpdate: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - rows, err := tx.Query(query, id) - if err != nil { - return emails, fmt.Errorf("listMailGroupMembersEmailsByMonitorID.Query: %w", err) - } - defer rows.Close() + if err := tx.Commit(); err != nil { + log.Printf("postSettings.CommitUnconfirmedDomainUpdate: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - for rows.Next() { - var email string - err = rows.Scan(&email) - if err != nil { - return emails, fmt.Errorf("listMailGroupMembersEmailsByMonitorID.Scan: %w", err) + metaUnconfirmedDomain = domain } - emails = append(emails, email) - } - - return emails, nil -} + domainPattern := regexp.MustCompile(`^[a-z0-9]+(?:[\-.][a-z0-9]+)*\.[a-z]+$`) -func getMailGroupByID(tx *sql.Tx, id int) (MailGroup, error) { - const query = ` - select id, name, description from mail_group where id = ? - ` + if strings.Contains(domain, "/") { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` + + `)) + return + } - mailGroup := MailGroup{} + if net.ParseIP(domain).String() != "" { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` + + `)) + return + } - err := tx.QueryRow(query, id).Scan(&mailGroup.ID, &mailGroup.Name, &mailGroup.Description) - if err != nil { - return mailGroup, fmt.Errorf("getMailGroupByID.QueryRow: %w", err) - } + if !domainPattern.MatchString(domain) { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` + + `)) + return + } - return mailGroup, nil -} + found, err := lookupDomain(domain) + if err != nil { + log.Printf("postSettings.lookupDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } -func createMailGroup(tx *sql.Tx, name string, description string) (int, error) { - const query = ` - insert into mail_group(name, description) values(?, ?) returning id - ` + if !found { + notFoundMsg := "We didn't find your domain's A record, verify it exists and then retry. " + + "If your domain and A record is correct, you might need to wait a few minutes before retrying." - var id int + if metaDomain == "" { + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postSettings.BeginUnconfirmedDomainProblemNotFound: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } + defer tx.Rollback() - err := tx.QueryRow(query, name, description).Scan(&id) - if err != nil { - return id, fmt.Errorf("createMailGroup.QueryRow: %w", err) - } + err = updateMetaValue(tx, "unconfirmedDomainProblem", notFoundMsg) + if err != nil { + log.Printf("postSettings.updateMetaValueDomainProblemNotFound: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - return id, nil -} + if err := tx.Commit(); err != nil { + log.Printf("postSettings.CommitUnconfirmedDomainProblemNotFound: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } -func updateMailGroup(tx *sql.Tx, id int, name string, description string) error { - const query = ` - update mail_group set name = ?, description = ? where id = ? - ` + metaUnconfirmedDomainProblem = notFoundMsg + } - _, err := tx.Exec(query, name, description, id) - if err != nil { - return fmt.Errorf("updateMailGroup.Exec: %w", err) - } + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte( + fmt.Sprintf(` + + `, + notFoundMsg, + ), + )) + return + } - return nil -} + err = attemptCertificateAcquisition(r.Context(), domain) + if err != nil { + errMsg := "An unexpected error occurred" -func updateMailGroupMembers(tx *sql.Tx, id int, members []string) error { - const deleteQuery = ` - delete from mail_group_member where mail_group_id = ? - ` + var acmeProblem acme.Problem + if errors.As(err, &acmeProblem) { + var ok bool + errMsg, ok = acmeProblemTypeMessages[acmeProblem.Type] + if !ok { + errMsg = "An unhandled error occurred " + + acmeProblem.Type + } + } else { + log.Printf("postSettings.attemptCertificateAcquisition: %s", err) + } - _, err := tx.Exec(deleteQuery, id) - if err != nil { - return fmt.Errorf("updateMailGroupMembers.ExecDelete: %w", err) - } + if metaDomain == "" { + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postSettings.BeginUnconfirmedDomainProblem: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } + defer tx.Rollback() - if len(members) > 0 { - const baseInsertQuery = ` - insert into mail_group_member(email_address, mail_group_id) - values - ` + err = updateMetaValue(tx, "unconfirmedDomainProblem", errMsg) + if err != nil { + log.Printf("postSettings.updateMetaValueDomainProblem: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - insertQuery := baseInsertQuery + if err := tx.Commit(); err != nil { + log.Printf("postSettings.CommitUnconfirmedDomainProblem %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - for i := range members { - insertQuery += "(?, ?)" + metaUnconfirmedDomainProblem = errMsg + } - if i != len(members)-1 { - insertQuery += "," + if errMsg == "An unexpected error occurred" { + w.WriteHeader(http.StatusInternalServerError) + } else { + w.WriteHeader(http.StatusBadRequest) } - } - params := []any{} - for _, v := range members { - params = append(params, v, id) + w.Write([]byte( + fmt.Sprintf(` + + `, + errMsg, + ), + )) + return } - insertQuery += " on conflict (mail_group_id, email_address) do nothing" - - _, err := tx.Exec(insertQuery, params...) + tx, err := rwDB.Begin() if err != nil { - return fmt.Errorf("updateMailGroupMembers.ExecInsert: %w", err) + log.Printf("postSettings.BeginDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return } - } - - return nil -} - -func postCreateMailGroup(w http.ResponseWriter, r *http.Request) { - name := r.PostFormValue("name") - if name == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - description := r.PostFormValue("description") + defer tx.Rollback() - if r.PostFormValue("members") != "" { - for _, v := range r.Form["members"] { - _, err := mail.ParseAddress(v) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } + err = updateMetaValue(tx, "domain", domain) + if err != nil { + log.Printf("postSettings.updateMetaValueDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return } - } - - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postCreateMailGroup.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - defer tx.Rollback() - - id, err := createMailGroup(tx, name, description) - if err != nil { - log.Printf("postCreateMailGroup.createMailGroup: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - err = updateMailGroupMembers(tx, id, r.Form["members"]) - if err != nil { - log.Printf("postCreateMailGroup.updateMailGroupMembers: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + err = updateMetaValue(tx, "unconfirmedDomain", "") + if err != nil { + log.Printf("postSettings.updateMetaValueUnconfirmedDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - err = tx.Commit() - if err != nil { - log.Printf("postCreateMailGroup.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + err = updateMetaValue(tx, "unconfirmedDomainProblem", "") + if err != nil { + log.Printf("postSettings.updateMetaValueUnconfirmedDomainProblem: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } - w.Header().Add("HX-Location", "/admin/notifications") -} + if err := tx.Commit(); err != nil { + log.Printf("postSettings.CommitDomain: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + ` + + `, + )) + return + } -func deleteMailGroupByID(tx *sql.Tx, id int) error { - const query = ` - delete from mail_group where id = ? - ` + metaDomain = domain + metaUnconfirmedDomain = "" + metaUnconfirmedDomainProblem = "" - _, err := tx.Exec(query, id) - if err != nil { - return fmt.Errorf("deleteMailGroupByID.Exec: %w", err) + w.Header().Add("HX-Location", "/admin/settings") } - - return nil } -func deleteMailGroup(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } +func postSettingsCancelDomain(w http.ResponseWriter, r *http.Request) { + v := "You cancelled the domain verification process. Please enter a new domain." tx, err := rwDB.Begin() if err != nil { - log.Printf("deleteMailGroup.Begin: %s", err) + log.Printf("postSettingsCancelDomain.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = deleteMailGroupByID(tx, id) + err = updateMetaValue(tx, "unconfirmedDomainProblem", v) if err != nil { - log.Printf("deleteMailGroup.deleteMailGroupByID: %s", err) + log.Printf("postSettingsCancelDomain.updateMetaValueProblem: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("deleteMailGroup.Commit: %s", err) + log.Printf("postSettingsCancelDomain.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/notifications") + metaUnconfirmedDomainProblem = v + + w.Header().Add("HX-Location", "/admin/settings") } -func postEditMailGroup(w http.ResponseWriter, r *http.Request) { +func getEditUser(w http.ResponseWriter, r *http.Request) { id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { w.WriteHeader(http.StatusBadRequest) return } - name := r.PostFormValue("name") - if name == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - - description := r.PostFormValue("description") - - if r.PostFormValue("members") != "" { - for _, v := range r.Form["members"] { - _, err := mail.ParseAddress(v) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - } - } - - tx, err := rwDB.Begin() + tx, err := db.Begin() if err != nil { - log.Printf("postEditMailGroup.Begin: %s", err) + log.Printf("getEditUser.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = updateMailGroup(tx, id, name, description) - if err != nil { - log.Printf("postEditMailGroup.updateMailGroup: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = updateMailGroupMembers(tx, id, r.Form["members"]) - if err != nil { - log.Printf("postEditMailGroup.updateMailGroupMembers: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = tx.Commit() + username, err := getUsernameByID(tx, id) if err != nil { - log.Printf("postEditMailGroup.Commit: %s", err) + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusNotFound) + return + } + log.Printf("getEditUser.getUsernameByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - w.Header().Add("HX-Location", "/admin/notifications") -} - -func update(w http.ResponseWriter, r *http.Request) { const markup = ` - {{define "title"}}Update{{end}} + {{define "title"}}Edit user{{end}} {{define "body"}} -
-
-

Update

-
-
- -
-
- Current version - {{.CurrentVersion}} +
+
+
+ + + + + + +

Edit user

+
-
-
+ +
+
+ + +
+ +
-
- - - -
- Checking for updates... +
-
+ +
{{end}} ` - tmpl, err := parseTmpl("update", markup) + tmpl, err := parseTmpl("getEditUser", markup) if err != nil { - log.Printf("update.parseTmpl: %s", err) + log.Printf("getEditUser.parseTmpl: %s", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -13063,1541 +16575,1534 @@ func update(w http.ResponseWriter, r *http.Request) { err = tmpl.Execute( w, struct { - CurrentVersion string - Ctx pageCtx + Username string + Ctx pageCtx }{ - CurrentVersion: VERSION, - Ctx: getPageCtx(r), + Username: username, + Ctx: getPageCtx(r), }, ) if err != nil { - log.Printf("update.Execute: %s", err) + log.Printf("getEditUser.Execute: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } -func updateCheck(w http.ResponseWriter, r *http.Request) { - httpClient := http.Client{ - Timeout: time.Second * 10, - } - - req, err := http.NewRequest( - http.MethodGet, - "https://api.github.com/repos/goksan/statusnook/releases/latest", nil, - ) +func postEditUser(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { - log.Printf("updateCheck.NewRequest: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } - resp, err := httpClient.Do(req) - if err != nil { - log.Printf("updateCheck.Do: %s", err) - w.WriteHeader(http.StatusInternalServerError) + username := r.PostFormValue("username") + if username == "" { + w.WriteHeader(http.StatusBadRequest) return } - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("updateCheck.ReadAll: %s", err) - w.WriteHeader(http.StatusInternalServerError) + password := r.PostFormValue("password") + if password == "" { + w.WriteHeader(http.StatusBadRequest) return } - type GitHubReleaseAsset struct { - Name string `json:"name"` - } - - type GitHubRelease struct { - TagName string `json:"tag_name"` - Assets []GitHubReleaseAsset `json:"assets"` - Body string `json:"body"` - PublishedAt time.Time `json:"published_at"` + if password != "retain" && len(password) < 8 { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Password must contain at least 8 characters +
+ `)) + return } - latestRelease := GitHubRelease{} - - err = json.Unmarshal(body, &latestRelease) + tx, err := rwDB.Begin() if err != nil { - log.Printf("updateCheck.Unmarshal: %s", err) + log.Printf("postEditUser.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - updateAvailable := semver.Compare(latestRelease.TagName, VERSION) > 0 - latestVersion := latestRelease.TagName - - const markup = ` -
- {{if .UpdateAvailable}} -
-
-
- - - - -
- Updates are available -
- {{if not .Docker}} - - {{end}} -
-
-
- - - - {{.LatestVersion}} -
-
- - - - - {{.PublishedAt}} -
-
- {{else}} -
-
-
- - - -
- Statusnook is up to date -
-
- {{end}} -
- {{if .UpdateAvailable}} -

{{.UpdateBody}}

- {{end}} - - Update to {{.LatestVersion}} -
-
- - -
-
-
- ` - - tmpl, err := parseTmpl("updateCheck", markup) + _, err = getUsernameByID(tx, id) if err != nil { - log.Printf("updateCheck.parseTmpl: %s", err) + if errors.Is(err, sql.ErrNoRows) { + w.WriteHeader(http.StatusNotFound) + return + } + log.Printf("postEditUser.getUsernameByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - UpdateAvailable bool - LatestVersion string - PublishedAt string - UpdateBody string - Docker bool - Ctx pageCtx - }{ + if password != "retain" { + pwHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if err != nil { + log.Printf("postEditUser.GenerateFromPassword: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - UpdateAvailable: updateAvailable, - LatestVersion: latestVersion, - PublishedAt: latestRelease.PublishedAt.Format("2006/01/02"), - UpdateBody: latestRelease.Body, - Docker: *dockerFlag, - Ctx: getPageCtx(r), - }, - ) - if err != nil { - log.Printf("updateCheck.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return - } -} + err = editUser(tx, id, username, string(pwHash)) + if err != nil { + var sqliteErr sqlite3.Error + if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ This username is already taken +
+ `)) + return + } + } + log.Printf("postEditUser.editUser: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -func afterUpdate(w http.ResponseWriter, r *http.Request) { - const markup = ` -
- - Successfully installed {{.Version}} - -
- ` + err = deleteAllSessionsByUserID(tx, id) + if err != nil { + log.Printf("postEditUser.deleteAllSessionsByUserID: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } else { + err = editUserUsername(tx, id, username) + if err != nil { + var sqliteErr sqlite3.Error + if errors.As(err, &sqliteErr) { + if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ This username is already taken +
+ `)) + return + } + } + log.Printf("postEditUser.editUserUsername: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } - tmpl, err := parseTmpl("afterUpdate", markup) + err = tx.Commit() if err != nil { - log.Printf("afterUpdate.parseTmpl: %s", err) + log.Printf("postEditUser.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Version string - Ctx pageCtx - }{ - Version: VERSION, - Ctx: getPageCtx(r), - }, - ) + authCtx := getAuthCtx(r) + + if authCtx.ID == id && password != "retain" { + w.Header().Add("HX-Location", "/login") + } else { + w.Header().Add("HX-Location", "/admin/settings") + } +} + +func deleteUser(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { - log.Printf("afterUpdate.Execute: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } -} -func postUpdate(w http.ResponseWriter, r *http.Request) { - httpClient := http.Client{ - Timeout: time.Second * 10, + authCtx := getAuthCtx(r) + if authCtx.ID == id { + w.WriteHeader(http.StatusBadRequest) + return } - req, err := http.NewRequest( - http.MethodGet, - "https://api.github.com/repos/goksan/statusnook/releases/latest", - nil, - ) + tx, err := rwDB.Begin() if err != nil { - log.Printf("postUpdate.NewRequest: %s", err) + log.Printf("deleteUser.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - resp, err := httpClient.Do(req) + err = deleteUserByID(tx, id) if err != nil { - log.Printf("postUpdate.Do: %s", err) + log.Printf("deleteUser.deleteUserByID: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) + err = tx.Commit() if err != nil { - log.Printf("postUpdate.ReadAll: %s", err) + log.Printf("deleteUser.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} - type GitHubReleaseAsset struct { - Name string `json:"name"` - URL string `json:"url"` +type UserInvitation struct { + ID int + Token string + CreatedAt time.Time +} + +func listActiveUserInvitations(tx *sql.Tx, minTime time.Time) ([]UserInvitation, error) { + const query = ` + select id, token, created_at from user_invitation + where created_at > ? + order by id desc + ` + + invs := []UserInvitation{} + + rows, err := tx.Query(query, minTime) + if err != nil { + return invs, fmt.Errorf("listActiveUserInvitations.Query: %w", err) } + defer rows.Close() - type GitHubRelease struct { - TagName string `json:"tag_name"` - Assets []GitHubReleaseAsset `json:"assets"` + for rows.Next() { + var inv UserInvitation + err := rows.Scan(&inv.ID, &inv.Token, &inv.CreatedAt) + if err != nil { + return invs, fmt.Errorf("listActiveUserInvitations.Scan: %w", err) + } + + invs = append(invs, inv) } - latestRelease := GitHubRelease{} + return invs, nil +} - err = json.Unmarshal(body, &latestRelease) +func validateUserInvitationToken(tx *sql.Tx, token string, minTime time.Time) (int, error) { + const query = ` + select id from user_invitation where token = ? and created_at > ? + ` + + var id int + err := tx.QueryRow(query, token, minTime).Scan(&id) if err != nil { - log.Printf("postUpdate.Unmarshal: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + return id, fmt.Errorf("validateUserInvitationToken.Scan: %w", err) } - updateAvailable := semver.Compare(latestRelease.TagName, VERSION) > 0 - latestVersion := latestRelease.TagName + return id, nil +} - if !updateAvailable { - return +func createUserInvitation(tx *sql.Tx, token string, createdAt time.Time) error { + const query = ` + insert into user_invitation(token, created_at) values(?, ?) + ` + + _, err := tx.Exec(query, token, createdAt) + if err != nil { + return fmt.Errorf("createUserInvitation.Exec: %w", err) } - downloadURL := "" + return nil +} - for _, asset := range latestRelease.Assets { - if strings.Contains(asset.Name, runtime.GOOS+"_"+runtime.GOARCH) { - downloadURL = asset.URL - } +func deleteUserInvitation(tx *sql.Tx, id int) error { + const query = ` + delete from user_invitation where id = ? + ` + + _, err := tx.Exec(query, id) + if err != nil { + return fmt.Errorf("deleteUserInvitation.Exec: %w", err) } - if downloadURL == "" { - log.Printf("postUpdate.downloadURL: no download URL") + return nil +} + +func postInviteUser(w http.ResponseWriter, r *http.Request) { + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postInviteUser.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - downloadReq, err := http.NewRequest(http.MethodGet, downloadURL, nil) + tokenBytes := make([]byte, 32) + _, err = rand.Read(tokenBytes) if err != nil { - log.Printf("postUpdate.NewRequestDownload: %s", err) + log.Printf("postInviteUser.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - downloadReq.Header.Add("Accept", "application/octet-stream") + token := base64.URLEncoding.EncodeToString(tokenBytes) - resp, err = httpClient.Do(downloadReq) + err = createUserInvitation(tx, token, time.Now().UTC()) if err != nil { - log.Printf("postUpdate.DoDownload: %s", err) + log.Printf("postInviteUser.createUserInvitation: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer resp.Body.Close() - err = os.Remove("statusnook") + err = tx.Commit() if err != nil { - log.Printf("postUpdate.Remove: %s", err) + log.Printf("postInviteUser.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} - file, err := os.Create("statusnook") +func postDeleteInvite(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) if err != nil { - log.Printf("postUpdate.Create: %s", err) - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) return } - err = file.Chmod(0700) + tx, err := rwDB.Begin() if err != nil { - log.Printf("postUpdate.Chmod: %s", err) + log.Printf("postDeleteInvite.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - _, err = io.Copy(file, resp.Body) + err = deleteUserInvitation(tx, id) if err != nil { - log.Printf("postUpdate.Copy: %s", err) + log.Printf("postDeleteInvite.deleteUserInvitation: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - file.Close() - - const markup = ` -
- {{.Svg}} - -
- ` - tmpl, err := parseTmpl("postUpdate", markup) + err = tx.Commit() if err != nil { - log.Printf("postUpdate.parseTmpl: %s", err) + log.Printf("postDeleteInvite.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } +} - svg, err := staticFS.ReadFile("static/images/statusnook.svg") +func getConfigSettings(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { + log.Printf("getConfigSettings.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = tmpl.Execute( - w, - struct { - Ctx pageCtx - Svg template.HTML - Version string - UpdateAvailable bool - LatestVersion string - }{ - - Ctx: getPageCtx(r), - Svg: template.HTML(svg), - UpdateAvailable: updateAvailable, - LatestVersion: latestVersion, - }, - ) - if err != nil { - log.Printf("postUpdate.Execute: %s", err) + configFileStr, err := getMetaValue(tx, "configFileEnabled") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueConfigFileEnabled: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + configFile := false + if configFileStr != "" { + configFile, err = strconv.ParseBool(configFileStr) + if err != nil { + log.Printf("getConfigSettings.ParseBoolConfigFile: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } - syscall.Kill(syscall.Getpid(), syscall.SIGINT) -} - -func getSettings(w http.ResponseWriter, r *http.Request) { - refresh := r.URL.Query().Get("refresh") != "" + githubManagedConfigStr, err := getMetaValue(tx, "githubManagedConfig") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubManagedConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + githubManagedConfig := false + if githubManagedConfigStr != "" { + githubManagedConfig, err = strconv.ParseBool(githubManagedConfigStr) + if err != nil { + log.Printf("getConfigSettings.ParseBoolGitHubManagedConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } - tx, err := db.Begin() - if err != nil { - log.Printf("getSettings.Begin: %s", err) + githubRepoURL, err := getMetaValue(tx, "githubRepoURL") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubRepoURL %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - users, err := listUsers(tx) - if err != nil { - log.Printf("getSettings.listUsers: %s", err) + githubBranch, err := getMetaValue(tx, "githubConfigBranch") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubConfigBranch %s", err) w.WriteHeader(http.StatusInternalServerError) return } - invitations, err := listActiveUserInvitations(tx, time.Now().UTC().Add(-time.Hour*24)) - if err != nil { - log.Printf("getSettings.listActiveUserInvitations: %s", err) + githubFilePath, err := getMetaValue(tx, "githubConfigPath") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubConfigPath %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() - if err != nil { - log.Printf("getSettings.Commit: %s", err) + githubToken, err := getMetaValue(tx, "githubConfigToken") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubConfigToken %s", err) w.WriteHeader(http.StatusInternalServerError) return } - type FormattedInvitation struct { - ID int - Token string - ExpiresIn string + githubWebhookSecret, err := getMetaValue(tx, "githubConfigWebhookSecret") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("getConfigSettings.getMetaValueGitHubConfigWebhookSecret %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - formattedInvitations := make([]FormattedInvitation, 0, len(invitations)) - - for _, invitation := range invitations { - expiresIn := invitation.CreatedAt.Add(time.Hour * 24).Sub(time.Now().UTC()) - h := int(expiresIn.Truncate(time.Hour).Hours()) - m := int(expiresIn.Truncate(time.Minute).Minutes()) - (h * 60) - formattedInvitations = append( - formattedInvitations, - FormattedInvitation{ - ID: invitation.ID, - Token: invitation.Token, - ExpiresIn: fmt.Sprintf("%dh %dm", h, m), - }, - ) + err = tx.Commit() + if err != nil { + log.Printf("getConfigSettings.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } const markup = ` - {{define "title"}}Settings{{end}} + {{define "title"}}Configuration settings{{end}} {{define "body"}} -
-
-

Settings

+
+
+
+ + + + + + +

Configuration settings

+
-
-
-
-
- +

+ Configure how your Statusnook configuration is managed +

+ + + -
- +
+ +
- + - - -
+
+
- - -
- - {{if .Ctx.UnconfirmedDomainProblem}} - - {{else}} - - {{end}} + + +
+
+
+
+ +
+
- `, - )) - return - } + - err = tx.Commit() - if err != nil { - log.Printf("postSettings.CommitUnmanagedDomain: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + + Generate new webhook secret + + Ensure you update your webhook secret on GitHub if you confirm these configuration changes + +
+
+ + +
+
+
+
+ {{end}} + ` - metaDomain = domain + tmpl, err := parseTmpl("getConfigSettings", markup) + if err != nil { + log.Printf("getConfigSettings.parseTmpl: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - w.Header().Add("HX-Location", "/admin/settings") - return - } + err = tmpl.Execute(w, struct { + ConfigFile bool + GitHubManagedConfig bool + GitHubRepoURL string + GitHubConfigBranch string + GitHubConfigPath string + GitHubToken string + GitHubWebhookSecret string + Domain string + Ctx pageCtx + }{ + ConfigFile: configFile, + GitHubManagedConfig: githubManagedConfig, + GitHubRepoURL: githubRepoURL, + GitHubConfigBranch: githubBranch, + GitHubConfigPath: githubFilePath, + GitHubToken: githubToken, + GitHubWebhookSecret: githubWebhookSecret, + Domain: metaDomain, + Ctx: getPageCtx(r), + }) + if err != nil { + log.Printf("getConfigSettings.Execute: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} - if metaDomain == "" { - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postSettings.BeginUnconfirmedDomainUpdate: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } - defer tx.Rollback() +func postConfigSettings(w http.ResponseWriter, r *http.Request) { + configFile := r.PostFormValue("config-file") == "on" + githubManaged := r.PostFormValue("github-managed") == "on" - err = updateMetaValue(tx, "unconfirmedDomain", domain) - if err != nil { - log.Printf("postSettings.updateMetaValueUnconfirmedDomainUpdate: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + githubRepoURL := strings.TrimSuffix(r.PostFormValue("github-repo-url"), "/") + githubBranch := r.PostFormValue("github-branch") + githubConfigPath := r.PostFormValue("github-config-path") + githubToken := r.PostFormValue("github-token") + githubWebhookSecret := r.PostFormValue("github-webhook-secret") - if err := tx.Commit(); err != nil { - log.Printf("postSettings.CommitUnconfirmedDomainUpdate: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + if !configFile && githubManaged { + w.WriteHeader(http.StatusBadRequest) + return + } - metaUnconfirmedDomain = domain + if githubManaged { + if githubRepoURL == "" || githubBranch == "" || githubConfigPath == "" || + githubToken == "" || githubWebhookSecret == "" { + w.WriteHeader(http.StatusBadRequest) + return } + } - domainPattern := regexp.MustCompile(`^[a-z0-9]+(?:[\-.][a-z0-9]+)*\.[a-z]+$`) + tx, err := rwDB.Begin() + if err != nil { + log.Printf("postConfigSettings.Begin: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer tx.Rollback() - if strings.Contains(domain, "/") { + err = updateMetaValue(tx, "configFileEnabled", strconv.FormatBool(configFile)) + if err != nil { + log.Printf("postConfigSettings.updateMetaValueConfigFileEnabled: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = updateMetaValue(tx, "githubManagedConfig", strconv.FormatBool(githubManaged)) + if err != nil { + log.Printf("postConfigSettings.updateMetaValueGitHubManagedConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if githubManaged { + parsedRepoURL, err := url.Parse(githubRepoURL) + if err != nil { w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` - - `)) + w.Write([]byte(`
Invalid repo url
`)) return } - if net.ParseIP(domain).String() != "" { - w.WriteHeader(http.StatusBadRequest) + if parsedRepoURL.Path == "" { w.Write([]byte(` - - `)) +
+ Invalid GitHub repository URL +
`, + )) + w.WriteHeader(http.StatusBadRequest) return } - if !domainPattern.MatchString(domain) { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` - - `)) - return + repoPath := parsedRepoURL.Path[1:] + + httpClient := http.Client{ + Timeout: time.Second * 10, } - found, err := lookupDomain(domain) + req, err := http.NewRequest( + http.MethodGet, + "https://api.github.com/repos/"+repoPath, + nil, + ) if err != nil { - log.Printf("postSettings.lookupDomain: %s", err) + log.Printf("postConfigSettings.NewRequestRepo: %s", err) w.WriteHeader(http.StatusInternalServerError) w.Write([]byte( - ` - - `, + `
An unexpected error occurred
`, )) return } + req.Header.Add("Accept", "application/vnd.github+json") + req.Header.Add("Authorization", "Bearer "+githubToken) - if !found { - notFoundMsg := "We didn't find your domain's A record, verify it exists and then retry. " + - "If your domain and A record is correct, you might need to wait a few minutes before retrying." + resp, err := httpClient.Do(req) + if err != nil { + log.Printf("postConfigSettings.DoRepo: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + `
An unexpected error occurred
`, + )) + return + } + defer resp.Body.Close() - if metaDomain == "" { - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postSettings.BeginUnconfirmedDomainProblemNotFound: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } - defer tx.Rollback() + respBody, err := io.ReadAll(r.Body) + if err != nil { + log.Printf("postConfigSettings.ReadAllNon200Repo: %s", err) + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(`
An error occurred when checking for your config
`)) + return + } - err = updateMetaValue(tx, "unconfirmedDomainProblem", notFoundMsg) - if err != nil { - log.Printf("postSettings.updateMetaValueDomainProblemNotFound: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + if resp.StatusCode != 200 { + if string(respBody) != "" { + log.Printf("postConfigSettings.StatusCodeRepo: %s", string(respBody)) + } - if err := tx.Commit(); err != nil { - log.Printf("postSettings.CommitUnconfirmedDomainProblemNotFound: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + w.WriteHeader(http.StatusBadRequest) + if resp.StatusCode == 404 { + w.Write([]byte(` +
+ Your GitHub repository could not be found. + Please double-check your repository URL and token permissions, then try again +
`, + )) + } else if resp.StatusCode == 401 { + w.Write([]byte( + `
+ There's an issue with your personal access token. + Please double-check your personal access token, then try again +
`, + )) - metaUnconfirmedDomainProblem = notFoundMsg } + return + } - w.WriteHeader(http.StatusBadRequest) + req, err = http.NewRequest( + http.MethodGet, + "https://api.github.com/repos/"+path.Join(repoPath, "contents", githubConfigPath)+"?ref="+ + githubBranch, + nil, + ) + if err != nil { + log.Printf("postConfigSettings.NewRequestConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) w.Write([]byte( - fmt.Sprintf(` - - `, - notFoundMsg, - ), + `
An unexpected error occurred
`, )) return } + req.Header.Add("Accept", "application/vnd.github+json") + req.Header.Add("Authorization", "Bearer "+githubToken) - err = attemptCertificateAcquisition(r.Context(), domain) + resp, err = httpClient.Do(req) if err != nil { - errMsg := "An unexpected error occurred" - - var acmeProblem acme.Problem - if errors.As(err, &acmeProblem) { - var ok bool - errMsg, ok = acmeProblemTypeMessages[acmeProblem.Type] - if !ok { - errMsg = "An unhandled error occurred " + - acmeProblem.Type - } - } else { - log.Printf("postSettings.attemptCertificateAcquisition: %s", err) - } - - if metaDomain == "" { - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postSettings.BeginUnconfirmedDomainProblem: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } - defer tx.Rollback() - - err = updateMetaValue(tx, "unconfirmedDomainProblem", errMsg) - if err != nil { - log.Printf("postSettings.updateMetaValueDomainProblem: %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + log.Printf("postConfigSettings.DoConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + `
An unexpected error occurred
`, + )) + return + } + defer resp.Body.Close() - if err := tx.Commit(); err != nil { - log.Printf("postSettings.CommitUnconfirmedDomainProblem %s", err) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) - return - } + respBody, err = io.ReadAll(r.Body) + if err != nil { + log.Printf("postConfigSettings.ReadAllNon200Config: %s", err) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte( + `
+ An unexpected error occurred +
`, + )) + return + } - metaUnconfirmedDomainProblem = errMsg + if resp.StatusCode != 200 { + if string(respBody) != "" { + log.Printf("postConfigSettings.StatusCodeConfig: %s", string(respBody)) } - if errMsg == "An unexpected error occurred" { - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusBadRequest) + if resp.StatusCode == 404 { + w.Write([]byte(` +
+ Your Statusnook configuration could not be found. + Please double-check the path and branch, then try again. +
`, + )) } else { - w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(` +
+ Your Statusnook configuration could not be found. An unexpcted error occurred. +
`, + )) } + return + } - w.Write([]byte( - fmt.Sprintf(` - - `, - errMsg, - ), - )) + err = updateMetaValue(tx, "githubRepoURL", githubRepoURL) + if err != nil { + log.Printf("postConfigSettings.updateMetaValueGitHubConfigBranch: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := rwDB.Begin() + err = updateMetaValue(tx, "githubConfigBranch", githubBranch) if err != nil { - log.Printf("postSettings.BeginDomain: %s", err) + log.Printf("postConfigSettings.updateMetaValueGitHubConfigBranch: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) return } - defer tx.Rollback() - err = updateMetaValue(tx, "domain", domain) + err = updateMetaValue(tx, "githubConfigPath", githubConfigPath) if err != nil { - log.Printf("postSettings.updateMetaValueDomain: %s", err) + log.Printf("postConfigSettings.updateMetaValueGitHubConfigPath: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) return } - err = updateMetaValue(tx, "unconfirmedDomain", "") + err = updateMetaValue(tx, "githubConfigToken", githubToken) if err != nil { - log.Printf("postSettings.updateMetaValueUnconfirmedDomain: %s", err) + log.Printf("postConfigSettings.updateMetaValueGitHubConfigToken: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) return } - err = updateMetaValue(tx, "unconfirmedDomainProblem", "") + err = updateMetaValue(tx, "githubConfigWebhookSecret", githubWebhookSecret) if err != nil { - log.Printf("postSettings.updateMetaValueUnconfirmedDomainProblem: %s", err) + log.Printf("postConfigSettings.updateMetaValueGitHubConfigWebhookSecret: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) return } + } - if err := tx.Commit(); err != nil { - log.Printf("postSettings.CommitDomain: %s", err) + if !githubManaged { + err = updateMetaValue(tx, "githubConfigSHA", "") + if err != nil { + log.Printf("postConfigSettings.updateMetaValueGitHubConfigSHA: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte( - ` - - `, - )) return } + } - metaDomain = domain - metaUnconfirmedDomain = "" - metaUnconfirmedDomainProblem = "" + if !metaConfigFileEnabled && configFile { + cfg, err := generateConfig(tx) + if err != nil { + log.Printf("postConfigSettings.generateConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - w.Header().Add("HX-Location", "/admin/settings") + err = updateMetaValue(tx, "configFile", cfg) + if err != nil { + log.Printf("postConfigSettings.updateMetaValueConfigFile: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } } -} -func postSettingsCancelDomain(w http.ResponseWriter, r *http.Request) { - v := "You cancelled the domain verification process. Please enter a new domain." + err = tx.Commit() + if err != nil { + log.Printf("postConfigSettings.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - tx, err := rwDB.Begin() + metaConfigFileEnabled = configFile + + w.Header().Add("HX-Location", "/admin/settings") +} + +func postGenerateWebhookSecret(w http.ResponseWriter, r *http.Request) { + tokenBytes := make([]byte, 32) + _, err := rand.Read(tokenBytes) if err != nil { - log.Printf("postSettingsCancelDomain.Begin: %s", err) + log.Printf("postGenerateWebhookSecret.Read: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - err = updateMetaValue(tx, "unconfirmedDomainProblem", v) + token := base64.StdEncoding.EncodeToString(tokenBytes) + + w.Write( + []byte(fmt.Sprintf( + ` + + `, + token, + )), + ) +} + +func configWebhook(w http.ResponseWriter, r *http.Request) { + tx, err := db.Begin() if err != nil { - log.Printf("postSettingsCancelDomain.updateMetaValueProblem: %s", err) + log.Printf("configWebhook.BeginRead: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - err = tx.Commit() + githubManagedConfig, err := getMetaValue(tx, "githubManagedConfig") if err != nil { - log.Printf("postSettingsCancelDomain.Commit: %s", err) + log.Printf("configWebhook.getMetaValueGitHubManagedConfig: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - metaUnconfirmedDomainProblem = v + if githubManagedConfig != "true" { + w.WriteHeader(http.StatusBadRequest) + return + } - w.Header().Add("HX-Location", "/admin/settings") -} + sig := r.Header.Get("X-Hub-Signature-256") + if !strings.HasPrefix(sig, "sha256=") { + w.WriteHeader(http.StatusBadRequest) + return + } + sig = strings.TrimPrefix(sig, "sha256=") -func getEditUser(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) + key, err := getMetaValue(tx, "githubConfigWebhookSecret") if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("configWebhook.getMetaValueGitHubWebhookSecret: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := db.Begin() + repoURL, err := getMetaValue(tx, "githubRepoURL") if err != nil { - log.Printf("getEditUser.Begin: %s", err) + log.Printf("configWebhook.getMetaValueGitHubRepoURL: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - username, err := getUsernameByID(tx, id) + branch, err := getMetaValue(tx, "githubConfigBranch") if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusNotFound) - return - } - log.Printf("getEditUser.getUsernameByID: %s", err) + log.Printf("configWebhook.getMetaValueGitHubConfigBranch: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - const markup = ` - {{define "title"}}Edit user{{end}} - {{define "body"}} -
-
-
- - - - - - -

Edit user

-
-
+ configPath, err := getMetaValue(tx, "githubConfigPath") + if err != nil { + log.Printf("configWebhook.getMetaValueGitHubConfigPath: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
-
- + token, err := getMetaValue(tx, "githubConfigToken") + if err != nil { + log.Printf("configWebhook.getMetaValueGitHubConfigToken: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
- + configSHA, err := getMetaValue(tx, "githubConfigSHA") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("configWebhook.getMetaValueGitHubConfigSHA: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } -
- -
-
- -
- {{end}} - ` + payload, err := io.ReadAll(r.Body) + if err != nil { + log.Printf("configWebhook.ReadAll: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - tmpl, err := parseTmpl("getEditUser", markup) + mac := hmac.New(sha256.New, []byte(key)) + mac.Write(payload) + payloadMac := mac.Sum(nil) + + headerMac, err := hex.DecodeString(sig) if err != nil { - log.Printf("getEditUser.parseTmpl: %s", err) + log.Printf("configWebhook.DecodeString: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tmpl.Execute( - w, - struct { - Username string - Ctx pageCtx - }{ - Username: username, - Ctx: getPageCtx(r), - }, - ) + if !hmac.Equal(headerMac, payloadMac) { + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = tx.Commit() if err != nil { - log.Printf("getEditUser.Execute: %s", err) + log.Printf("configWebhook.CommitRead: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} -func postEditUser(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) + parsedRepoURL, err := url.Parse(repoURL) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("configWebhook.Parse: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - username := r.PostFormValue("username") - if username == "" { - w.WriteHeader(http.StatusBadRequest) + repoPath := parsedRepoURL.Path[1:] + + httpClient := http.Client{ + Timeout: time.Second * 10, + } + + req, err := http.NewRequest( + http.MethodGet, + "https://api.github.com/repos/"+path.Join(repoPath, "contents", configPath)+"?ref="+branch, + nil, + ) + if err != nil { + log.Printf("configWebhook.NewRequest: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + req.Header.Add("Accept", "application/vnd.github+json") + req.Header.Add("Authorization", "Bearer "+token) - password := r.PostFormValue("password") - if password == "" { - w.WriteHeader(http.StatusBadRequest) + resp, err := httpClient.Do(req) + if err != nil { + log.Printf("configWebhook.Do: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } + defer resp.Body.Close() - if password != "retain" && len(password) < 8 { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- Password must contain at least 8 characters -
- `)) + if resp.StatusCode != 200 { + respBody, err := io.ReadAll(r.Body) + if err != nil { + log.Printf("configWebhook.ReadAllNon200: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + if string(respBody) != "" { + log.Printf("configWebhook.StatusCode: %s", string(respBody)) + } + w.WriteHeader(http.StatusInternalServerError) + return + } + + type repositoryContentResponse struct { + Type string `json:"type"` + Content string `json:"content"` + SHA string `json:"sha"` + } + + var contentResp repositoryContentResponse + + jsonDecoder := json.NewDecoder(resp.Body) + err = jsonDecoder.Decode(&contentResp) + if err != nil { + log.Printf("configWebhook.Decode: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := rwDB.Begin() + content, err := base64.StdEncoding.DecodeString(contentResp.Content) if err != nil { - log.Printf("postEditUser.Begin: %s", err) + log.Printf("configWebhook.DecodeString: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - _, err = getUsernameByID(tx, id) + tx, err = rwDB.Begin() if err != nil { - if errors.Is(err, sql.ErrNoRows) { - w.WriteHeader(http.StatusNotFound) - return - } - log.Printf("postEditUser.getUsernameByID: %s", err) + log.Printf("configWebhook.BeginWrite: %s", err) w.WriteHeader(http.StatusInternalServerError) return } + defer tx.Rollback() - if password != "retain" { - pwHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if contentResp.SHA != configSHA { + msgs, err := applyConfig(tx, content) if err != nil { - log.Printf("postEditUser.GenerateFromPassword: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + unwrappedErr := errors.Unwrap(err) + if !strings.HasPrefix(unwrappedErr.Error(), "yaml:") { + log.Printf("configWebhook.applyConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + msgs = append(msgs, strings.TrimPrefix(unwrappedErr.Error(), "yaml: ")) } - err = editUser(tx, id, username, string(pwHash)) - if err != nil { - var sqliteErr sqlite3.Error - if errors.As(err, &sqliteErr) { - if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- This username is already taken -
- `)) - return - } + configErrors := "" + + if len(msgs) > 0 { + msgsBytes, err := json.Marshal(msgs) + if err != nil { + log.Printf("configWebhook.Marshal: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - log.Printf("postEditUser.editUser: %s", err) + configErrors = string(msgsBytes) + } + + err = updateMetaValue(tx, "githubConfigErrors", string(configErrors)) + if err != nil { + log.Printf("configWebhook.updateMetaValueGitHubConfigErrors: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = deleteAllSessionsByUserID(tx, id) + err = updateMetaValue(tx, "configFile", string(content)) if err != nil { - log.Printf("postEditUser.deleteAllSessionsByUserID: %s", err) + log.Printf("configWebhook.updateMetaValueConfigFile: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - } else { - err = editUserUsername(tx, id, username) + + err = updateMetaValue(tx, "githubConfigSHA", contentResp.SHA) if err != nil { - var sqliteErr sqlite3.Error - if errors.As(err, &sqliteErr) { - if errors.Is(sqliteErr.Code, sqlite3.ErrConstraint) { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(` -
- This username is already taken -
- `)) - return - } - } - log.Printf("postEditUser.editUserUsername: %s", err) + log.Printf("configWebhook.updateMetaValueGitHubConfigSHA: %s", err) w.WriteHeader(http.StatusInternalServerError) return } } + name, err := getMetaValue(tx, "name") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("configWebhook.getMetaValueName: %s", err) + return + } + err = tx.Commit() if err != nil { - log.Printf("postEditUser.Commit: %s", err) + log.Printf("configWebhook.CommitWrite: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - authCtx := getAuthCtx(r) - - if authCtx.ID == id && password != "retain" { - w.Header().Add("HX-Location", "/login") - } else { - w.Header().Add("HX-Location", "/admin/settings") - } + metaName = name } -func deleteUser(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - return - } - - authCtx := getAuthCtx(r) - if authCtx.ID == id { - w.WriteHeader(http.StatusBadRequest) - return - } +func postConfig(w http.ResponseWriter, r *http.Request) { + config := r.PostFormValue("config") tx, err := rwDB.Begin() if err != nil { - log.Printf("deleteUser.Begin: %s", err) + log.Printf("postConfig.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } defer tx.Rollback() - err = deleteUserByID(tx, id) - if err != nil { - log.Printf("deleteUser.deleteUserByID: %s", err) + githubManagedConfigStr, err := getMetaValue(tx, "githubManagedConfig") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Printf("postConfig.getMetaValueGitHubManagedConfig: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() - if err != nil { - log.Printf("deleteUser.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) + githubManagedConfig := false + if githubManagedConfigStr != "" { + githubManagedConfig, err = strconv.ParseBool(githubManagedConfigStr) + if err != nil { + log.Printf("postConfig.ParseBoolGitHubManagedConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + } + + if githubManagedConfig { + w.WriteHeader(http.StatusBadRequest) return } -} -type UserInvitation struct { - ID int - Token string - CreatedAt time.Time -} + msgs, err := applyConfig(tx, []byte(config)) + if err != nil { + unwrappedErr := errors.Unwrap(err) -func listActiveUserInvitations(tx *sql.Tx, minTime time.Time) ([]UserInvitation, error) { - const query = ` - select id, token, created_at from user_invitation - where created_at > ? - order by id desc - ` + if unwrappedErr == nil || !strings.HasPrefix(unwrappedErr.Error(), "yaml:") { + log.Printf("postConfig.applyConfig: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } - invs := []UserInvitation{} + formattedErr := strings.TrimPrefix(unwrappedErr.Error(), "yaml: ") - rows, err := tx.Query(query, minTime) - if err != nil { - return invs, fmt.Errorf("listActiveUserInvitations.Query: %w", err) + errMsg := fmt.Sprintf( + `
%s
`, + html.EscapeString(formattedErr), + ) + w.WriteHeader(http.StatusBadRequest) + w.Write( + []byte(fmt.Sprintf( + `
+ %s +
`, + errMsg, + )), + ) + return } - defer rows.Close() - for rows.Next() { - var inv UserInvitation - err := rows.Scan(&inv.ID, &inv.Token, &inv.CreatedAt) - if err != nil { - return invs, fmt.Errorf("listActiveUserInvitations.Scan: %w", err) + if len(msgs) > 0 { + errors := "" + for _, v := range msgs { + errors += fmt.Sprintf( + `
%s
`, + html.EscapeString(v), + ) } - invs = append(invs, inv) + w.WriteHeader(http.StatusBadRequest) + w.Write( + []byte(fmt.Sprintf( + `
%s
`, + errors, + )), + ) + return } - return invs, nil -} - -func validateUserInvitationToken(tx *sql.Tx, token string, minTime time.Time) (int, error) { - const query = ` - select id from user_invitation where token = ? and created_at > ? - ` - - var id int - err := tx.QueryRow(query, token, minTime).Scan(&id) + err = updateMetaValue(tx, "githubConfigErrors", "") if err != nil { - return id, fmt.Errorf("validateUserInvitationToken.Scan: %w", err) + log.Printf("postConfig.updateMetaValueGitHubConfigErrors: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - return id, nil -} - -func createUserInvitation(tx *sql.Tx, token string, createdAt time.Time) error { - const query = ` - insert into user_invitation(token, created_at) values(?, ?) - ` + name, err := getMetaValue(tx, "name") + if err != nil && !errors.Is(err, sql.ErrNoRows) { + log.Fatalf("postConfig.getMetaValueSetupName: %s", err) + return + } - _, err := tx.Exec(query, token, createdAt) + err = tx.Commit() if err != nil { - return fmt.Errorf("createUserInvitation.Exec: %w", err) + log.Printf("postConfig.Commit: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return } - return nil -} + metaName = name -func deleteUserInvitation(tx *sql.Tx, id int) error { - const query = ` - delete from user_invitation where id = ? - ` + w.Write( + []byte( + fmt.Sprintf(` +
+
+ +
+ `, + template.JSEscapeString(config), + ), + ), + ) +} - _, err := tx.Exec(query, id) - if err != nil { - return fmt.Errorf("deleteUserInvitation.Exec: %w", err) +func postSecret(w http.ResponseWriter, r *http.Request) { + action := r.PostFormValue("action") + if action != "encrypt" && action != "decrypt" { + w.WriteHeader(http.StatusBadRequest) + return } - return nil -} - -func postInviteUser(w http.ResponseWriter, r *http.Request) { - tx, err := rwDB.Begin() - if err != nil { - log.Printf("postInviteUser.Begin: %s", err) - w.WriteHeader(http.StatusInternalServerError) + input := r.PostFormValue("input") + if input == "" { + w.WriteHeader(http.StatusBadRequest) return } - defer tx.Rollback() - tokenBytes := make([]byte, 32) - _, err = rand.Read(tokenBytes) + tx, err := rwDB.Begin() if err != nil { - log.Printf("postInviteUser.Read: %s", err) + log.Printf("postSecret.Begin: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - token := base64.URLEncoding.EncodeToString(tokenBytes) + defer tx.Rollback() - err = createUserInvitation(tx, token, time.Now().UTC()) + key, err := getMetaValue(tx, "secretKey") if err != nil { - log.Printf("postInviteUser.createUserInvitation: %s", err) + log.Printf("postSecret.getMetaValue: %s", err) w.WriteHeader(http.StatusInternalServerError) return } err = tx.Commit() if err != nil { - log.Printf("postInviteUser.Commit: %s", err) + log.Printf("postSecret.Commit: %s", err) w.WriteHeader(http.StatusInternalServerError) return } -} -func postDeleteInvite(w http.ResponseWriter, r *http.Request) { - id, err := strconv.Atoi(chi.URLParam(r, "id")) + keyBytes, err := base64.StdEncoding.DecodeString(key) if err != nil { - w.WriteHeader(http.StatusBadRequest) + log.Printf("postSecret.DecodeString: %s", err) + w.WriteHeader(http.StatusInternalServerError) return } - tx, err := rwDB.Begin() + block, err := aes.NewCipher(keyBytes) if err != nil { - log.Printf("postDeleteInvite.Begin: %s", err) + log.Printf("postSecret.NewCipher: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - defer tx.Rollback() - err = deleteUserInvitation(tx, id) + aesGCM, err := cipher.NewGCM(block) if err != nil { - log.Printf("postDeleteInvite.deleteUserInvitation: %s", err) + log.Printf("postSecret.NewGCM: %s", err) w.WriteHeader(http.StatusInternalServerError) return } - err = tx.Commit() - if err != nil { - log.Printf("postDeleteInvite.Commit: %s", err) - w.WriteHeader(http.StatusInternalServerError) - return + if action == "encrypt" { + nonce := make([]byte, 12) + if _, err := rand.Read(nonce); err != nil { + log.Printf("postSecret.ReadFull: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + ciphertext := aesGCM.Seal(nil, nonce, []byte(input), nil) + + b64Ciphertext := base64.StdEncoding.EncodeToString(ciphertext) + "." + + base64.StdEncoding.EncodeToString(nonce) + + w.Write( + []byte(fmt.Sprintf( + ``, + "secret_"+html.EscapeString(b64Ciphertext), + )), + ) + } else if action == "decrypt" { + nonceSplit := strings.Split(input, ".") + if len(nonceSplit) != 2 { + w.WriteHeader(http.StatusInternalServerError) + return + } + + ciphertext, err := base64.StdEncoding.DecodeString( + strings.TrimPrefix(nonceSplit[0], "secret_"), + ) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + nonce, err := base64.StdEncoding.DecodeString(nonceSplit[1]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + plaintext, err := aesGCM.Open(nil, nonce, ciphertext, nil) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + w.Write( + []byte(fmt.Sprintf( + ``, + html.EscapeString(string(plaintext)), + )), + ) } } diff --git a/migrations/1715019045_add_slug_columns.sql b/migrations/1715019045_add_slug_columns.sql new file mode 100644 index 0000000..8d462ec --- /dev/null +++ b/migrations/1715019045_add_slug_columns.sql @@ -0,0 +1,122 @@ +alter table + service rename to old__service; + +alter table + alert_service rename to old__alert_service; + +alter table + monitor rename to old__monitor; + +alter table + monitor_log rename to old__monitor_log; + +drop index idx_monitor_log_monitor_id_started_at; + +alter table + monitor_log_last_checked rename to old__monitor_log_last_checked; + +alter table + notification_channel rename to old__notification_channel; + +alter table + monitor_notification_channel rename to old__monitor_notification_channel; + +alter table + alert_setting_smtp_notification rename to old__alert_setting_smtp_notification; + +alter table + mail_group rename to old__mail_group; + +alter table + mail_group_member rename to old__mail_group_member; + +alter table + mail_group_monitor rename to old__mail_group_monitor; + +create table service( + id integer primary key, + slug text not null unique, + name text not null, + helper_text text not null +); + +create table alert_service( + id integer primary key, + alert_id int references alert(id) on delete cascade not null, + service_id int references service(id) on delete cascade not null +); + +create table monitor( + id integer primary key, + slug text not null unique, + name text not null, + url text not null, + method text not null, + frequency integer not null, + timeout integer not null, + attempts integer not null, + request_headers text, + body_format text, + body text +); + +create table monitor_log( + id integer primary key, + started_at datetime not null, + ended_at datetime not null, + response_code integer, + error_message text, + attempts integer not null, + result text not null, + monitor_id int references monitor(id) on delete cascade not null +); + +create index idx_monitor_log_monitor_id_started_at on monitor_log(monitor_id, started_at); + +create table monitor_log_last_checked( + id integer primary key, + checked_at datetime not null, + monitor_id int int references monitor(id) on delete cascade not null unique, + monitor_log_id int references monitor_log(id) on delete cascade not null unique +); + +create table notification_channel( + id integer primary key, + slug text not null unique, + name text not null, + type text not null check(type in ('smtp', 'slack')), + details text not null +); + +create table monitor_notification_channel( + id integer primary key, + monitor_id int references monitor(id) on delete cascade not null, + notification_channel_id int references notification_channel(id) on delete cascade not null, + unique(monitor_id, notification_channel_id) +); + +create table alert_setting_smtp_notification( + id integer primary key, + notification_channel_id int references notification_channel(id) on delete cascade not null unique +); + +create table mail_group( + id integer primary key, + slug text not null unique, + name text not null, + description text +); + +create table mail_group_member( + id integer primary key, + email_address text not null collate nocase, + mail_group_id int references mail_group(id) on delete cascade not null, + unique(mail_group_id, email_address) +); + +create table mail_group_monitor( + id integer primary key, + mail_group_id int references mail_group(id) on delete cascade not null, + monitor_id int references monitor(id) on delete cascade not null, + unique(mail_group_id, monitor_id) +); \ No newline at end of file diff --git a/schema.sql b/schema.sql index e31cd03..1bced13 100644 --- a/schema.sql +++ b/schema.sql @@ -30,6 +30,7 @@ create table session( create table service( id integer primary key, + slug text not null unique, name text not null, helper_text text not null ); @@ -81,11 +82,6 @@ create table alert_setting( value text not null ); -create table alert_setting_smtp_notification( - id integer primary key, - notification_channel_id int references notification_channel(id) on delete cascade not null unique -); - create table pending_email_alert_subscription( id integer primary key, token string not null, @@ -102,6 +98,7 @@ create table alert_service( create table monitor( id integer primary key, + slug text not null unique, name text not null, url text not null, method text not null, @@ -135,6 +132,7 @@ create table monitor_log_last_checked( create table notification_channel( id integer primary key, + slug text not null unique, name text not null, type text not null check(type in ('smtp', 'slack')), details text not null @@ -147,8 +145,14 @@ create table monitor_notification_channel( unique(monitor_id, notification_channel_id) ); +create table alert_setting_smtp_notification( + id integer primary key, + notification_channel_id int references notification_channel(id) on delete cascade not null unique +); + create table mail_group( id integer primary key, + slug text not null unique, name text not null, description text ); @@ -174,9 +178,10 @@ create table migration( ); insert into - service(name, helper_text) + service(slug, name, helper_text) values ( + 'website', 'Website', 'Edit or delete this service in the admin area' ); diff --git a/static/htmx-1.9.12.js.gz b/static/htmx-1.9.12.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..396e9d4c644bd49cafa93b0ba4bd9bf7626e7143 GIT binary patch literal 15677 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%0DEqdf%B;ph@g6gQMBRYgjth9^XVi=%~Y;tAG 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 literal 0 HcmV?d00001 diff --git a/static/htmx.js b/static/htmx.js deleted file mode 100644 index acd70dc..0000000 --- a/static/htmx.js +++ /dev/null @@ -1,3905 +0,0 @@ -// UMD insanity -// This code sets up support for (in order) AMD, ES6 modules, and globals. -(function (root, factory) { - //@ts-ignore - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - //@ts-ignore - define([], factory); - } else if (typeof module === 'object' && module.exports) { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals - root.htmx = root.htmx || factory(); - } -}(typeof self !== 'undefined' ? self : this, function () { -return (function () { - 'use strict'; - - // Public API - //** @type {import("./htmx").HtmxApi} */ - // TODO: list all methods in public API - var htmx = { - onLoad: onLoadHelper, - process: processNode, - on: addEventListenerImpl, - off: removeEventListenerImpl, - trigger : triggerEvent, - ajax : ajaxHelper, - find : find, - findAll : findAll, - closest : closest, - values : function(elt, type){ - var inputValues = getInputValues(elt, type || "post"); - return inputValues.values; - }, - remove : removeElement, - addClass : addClassToElement, - removeClass : removeClassFromElement, - toggleClass : toggleClassOnElement, - takeClass : takeClassForElement, - defineExtension : defineExtension, - removeExtension : removeExtension, - logAll : logAll, - logNone : logNone, - logger : null, - config : { - historyEnabled:true, - historyCacheSize:10, - refreshOnHistoryMiss:false, - defaultSwapStyle:'innerHTML', - defaultSwapDelay:0, - defaultSettleDelay:20, - includeIndicatorStyles:true, - indicatorClass:'htmx-indicator', - requestClass:'htmx-request', - addedClass:'htmx-added', - settlingClass:'htmx-settling', - swappingClass:'htmx-swapping', - allowEval:true, - allowScriptTags:true, - inlineScriptNonce:'', - attributesToSettle:["class", "style", "width", "height"], - withCredentials:false, - timeout:0, - wsReconnectDelay: 'full-jitter', - wsBinaryType: 'blob', - disableSelector: "[hx-disable], [data-hx-disable]", - useTemplateFragments: false, - scrollBehavior: 'smooth', - defaultFocusScroll: false, - getCacheBusterParam: false, - globalViewTransitions: false, - methodsThatUseUrlParams: ["get"], - selfRequestsOnly: false, - ignoreTitle: false, - scrollIntoViewOnBoost: true, - triggerSpecsCache: null, - }, - parseInterval:parseInterval, - _:internalEval, - createEventSource: function(url){ - return new EventSource(url, {withCredentials:true}) - }, - createWebSocket: function(url){ - var sock = new WebSocket(url, []); - sock.binaryType = htmx.config.wsBinaryType; - return sock; - }, - version: "1.9.10" - }; - - /** @type {import("./htmx").HtmxInternalApi} */ - var internalAPI = { - addTriggerHandler: addTriggerHandler, - bodyContains: bodyContains, - canAccessLocalStorage: canAccessLocalStorage, - findThisElement: findThisElement, - filterValues: filterValues, - hasAttribute: hasAttribute, - getAttributeValue: getAttributeValue, - getClosestAttributeValue: getClosestAttributeValue, - getClosestMatch: getClosestMatch, - getExpressionVars: getExpressionVars, - getHeaders: getHeaders, - getInputValues: getInputValues, - getInternalData: getInternalData, - getSwapSpecification: getSwapSpecification, - getTriggerSpecs: getTriggerSpecs, - getTarget: getTarget, - makeFragment: makeFragment, - mergeObjects: mergeObjects, - makeSettleInfo: makeSettleInfo, - oobSwap: oobSwap, - querySelectorExt: querySelectorExt, - selectAndSwap: selectAndSwap, - settleImmediately: settleImmediately, - shouldCancel: shouldCancel, - triggerEvent: triggerEvent, - triggerErrorEvent: triggerErrorEvent, - withExtensions: withExtensions, - } - - var VERBS = ['get', 'post', 'put', 'delete', 'patch']; - var VERB_SELECTOR = VERBS.map(function(verb){ - return "[hx-" + verb + "], [data-hx-" + verb + "]" - }).join(", "); - - var HEAD_TAG_REGEX = makeTagRegEx('head'), - TITLE_TAG_REGEX = makeTagRegEx('title'), - SVG_TAGS_REGEX = makeTagRegEx('svg', true); - - //==================================================================== - // Utilities - //==================================================================== - - /** - * @param {string} tag - * @param {boolean} global - * @returns {RegExp} - */ - function makeTagRegEx(tag, global = false) { - return new RegExp(`<${tag}(\\s[^>]*>|>)([\\s\\S]*?)<\\/${tag}>`, - global ? 'gim' : 'im'); - } - - function parseInterval(str) { - if (str == undefined) { - return undefined; - } - - let interval = NaN; - if (str.slice(-2) == "ms") { - interval = parseFloat(str.slice(0, -2)); - } else if (str.slice(-1) == "s") { - interval = parseFloat(str.slice(0, -1)) * 1000; - } else if (str.slice(-1) == "m") { - interval = parseFloat(str.slice(0, -1)) * 1000 * 60; - } else { - interval = parseFloat(str); - } - return isNaN(interval) ? undefined : interval; - } - - /** - * @param {HTMLElement} elt - * @param {string} name - * @returns {(string | null)} - */ - function getRawAttribute(elt, name) { - return elt.getAttribute && elt.getAttribute(name); - } - - // resolve with both hx and data-hx prefixes - function hasAttribute(elt, qualifiedName) { - return elt.hasAttribute && (elt.hasAttribute(qualifiedName) || - elt.hasAttribute("data-" + qualifiedName)); - } - - /** - * - * @param {HTMLElement} elt - * @param {string} qualifiedName - * @returns {(string | null)} - */ - function getAttributeValue(elt, qualifiedName) { - return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, "data-" + qualifiedName); - } - - /** - * @param {HTMLElement} elt - * @returns {HTMLElement | null} - */ - function parentElt(elt) { - return elt.parentElement; - } - - /** - * @returns {Document} - */ - function getDocument() { - return document; - } - - /** - * @param {HTMLElement} elt - * @param {(e:HTMLElement) => boolean} condition - * @returns {HTMLElement | null} - */ - function getClosestMatch(elt, condition) { - while (elt && !condition(elt)) { - elt = parentElt(elt); - } - - return elt ? elt : null; - } - - function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName){ - var attributeValue = getAttributeValue(ancestor, attributeName); - var disinherit = getAttributeValue(ancestor, "hx-disinherit"); - if (initialElement !== ancestor && disinherit && (disinherit === "*" || disinherit.split(" ").indexOf(attributeName) >= 0)) { - return "unset"; - } else { - return attributeValue - } - } - - /** - * @param {HTMLElement} elt - * @param {string} attributeName - * @returns {string | null} - */ - function getClosestAttributeValue(elt, attributeName) { - var closestAttr = null; - getClosestMatch(elt, function (e) { - return closestAttr = getAttributeValueWithDisinheritance(elt, e, attributeName); - }); - if (closestAttr !== "unset") { - return closestAttr; - } - } - - /** - * @param {HTMLElement} elt - * @param {string} selector - * @returns {boolean} - */ - function matches(elt, selector) { - // @ts-ignore: non-standard properties for browser compatibility - // noinspection JSUnresolvedVariable - var matchesFunction = elt.matches || elt.matchesSelector || elt.msMatchesSelector || elt.mozMatchesSelector || elt.webkitMatchesSelector || elt.oMatchesSelector; - return matchesFunction && matchesFunction.call(elt, selector); - } - - /** - * @param {string} str - * @returns {string} - */ - function getStartTag(str) { - var tagMatcher = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i - var match = tagMatcher.exec( str ); - if (match) { - return match[1].toLowerCase(); - } else { - return ""; - } - } - - /** - * - * @param {string} resp - * @param {number} depth - * @returns {Element} - */ - function parseHTML(resp, depth) { - var parser = new DOMParser(); - var responseDoc = parser.parseFromString(resp, "text/html"); - - /** @type {Element} */ - var responseNode = responseDoc.body; - while (depth > 0) { - depth--; - // @ts-ignore - responseNode = responseNode.firstChild; - } - if (responseNode == null) { - // @ts-ignore - responseNode = getDocument().createDocumentFragment(); - } - return responseNode; - } - - function aFullPageResponse(resp) { - return /", 0); - // @ts-ignore type mismatch between DocumentFragment and Element. - // TODO: Are these close enough for htmx to use interchangeably? - return documentFragment.querySelector('template').content; - } - switch (startTag) { - case "thead": - case "tbody": - case "tfoot": - case "colgroup": - case "caption": - return parseHTML("" + content + "
", 1); - case "col": - return parseHTML("" + content + "
", 2); - case "tr": - return parseHTML("" + content + "
", 2); - case "td": - case "th": - return parseHTML("" + content + "
", 3); - case "script": - case "style": - return parseHTML("
" + content + "
", 1); - default: - return parseHTML(content, 0); - } - } - - /** - * @param {Function} func - */ - function maybeCall(func){ - if(func) { - func(); - } - } - - /** - * @param {any} o - * @param {string} type - * @returns - */ - function isType(o, type) { - return Object.prototype.toString.call(o) === "[object " + type + "]"; - } - - /** - * @param {*} o - * @returns {o is Function} - */ - function isFunction(o) { - return isType(o, "Function"); - } - - /** - * @param {*} o - * @returns {o is Object} - */ - function isRawObject(o) { - return isType(o, "Object"); - } - - /** - * getInternalData retrieves "private" data stored by htmx within an element - * @param {HTMLElement} elt - * @returns {*} - */ - function getInternalData(elt) { - var dataProp = 'htmx-internal-data'; - var data = elt[dataProp]; - if (!data) { - data = elt[dataProp] = {}; - } - return data; - } - - /** - * toArray converts an ArrayLike object into a real array. - * @param {ArrayLike} arr - * @returns {any[]} - */ - function toArray(arr) { - var returnArr = []; - if (arr) { - for (var i = 0; i < arr.length; i++) { - returnArr.push(arr[i]); - } - } - return returnArr - } - - function forEach(arr, func) { - if (arr) { - for (var i = 0; i < arr.length; i++) { - func(arr[i]); - } - } - } - - function isScrolledIntoView(el) { - var rect = el.getBoundingClientRect(); - var elemTop = rect.top; - var elemBottom = rect.bottom; - return elemTop < window.innerHeight && elemBottom >= 0; - } - - function bodyContains(elt) { - // IE Fix - if (elt.getRootNode && elt.getRootNode() instanceof window.ShadowRoot) { - return getDocument().body.contains(elt.getRootNode().host); - } else { - return getDocument().body.contains(elt); - } - } - - function splitOnWhitespace(trigger) { - return trigger.trim().split(/\s+/); - } - - /** - * mergeObjects takes all of the keys from - * obj2 and duplicates them into obj1 - * @param {Object} obj1 - * @param {Object} obj2 - * @returns {Object} - */ - function mergeObjects(obj1, obj2) { - for (var key in obj2) { - if (obj2.hasOwnProperty(key)) { - obj1[key] = obj2[key]; - } - } - return obj1; - } - - function parseJSON(jString) { - try { - return JSON.parse(jString); - } catch(error) { - logError(error); - return null; - } - } - - function canAccessLocalStorage() { - var test = 'htmx:localStorageTest'; - try { - localStorage.setItem(test, test); - localStorage.removeItem(test); - return true; - } catch(e) { - return false; - } - } - - function normalizePath(path) { - try { - var url = new URL(path); - if (url) { - path = url.pathname + url.search; - } - // remove trailing slash, unless index page - if (!(/^\/$/.test(path))) { - path = path.replace(/\/+$/, ''); - } - return path; - } catch (e) { - // be kind to IE11, which doesn't support URL() - return path; - } - } - - //========================================================================================== - // public API - //========================================================================================== - - function internalEval(str){ - return maybeEval(getDocument().body, function () { - return eval(str); - }); - } - - function onLoadHelper(callback) { - var value = htmx.on("htmx:load", function(evt) { - callback(evt.detail.elt); - }); - return value; - } - - function logAll(){ - htmx.logger = function(elt, event, data) { - if(console) { - console.log(event, elt, data); - } - } - } - - function logNone() { - htmx.logger = null - } - - function find(eltOrSelector, selector) { - if (selector) { - return eltOrSelector.querySelector(selector); - } else { - return find(getDocument(), eltOrSelector); - } - } - - function findAll(eltOrSelector, selector) { - if (selector) { - return eltOrSelector.querySelectorAll(selector); - } else { - return findAll(getDocument(), eltOrSelector); - } - } - - function removeElement(elt, delay) { - elt = resolveTarget(elt); - if (delay) { - setTimeout(function(){ - removeElement(elt); - elt = null; - }, delay); - } else { - elt.parentElement.removeChild(elt); - } - } - - function addClassToElement(elt, clazz, delay) { - elt = resolveTarget(elt); - if (delay) { - setTimeout(function(){ - addClassToElement(elt, clazz); - elt = null; - }, delay); - } else { - elt.classList && elt.classList.add(clazz); - } - } - - function removeClassFromElement(elt, clazz, delay) { - elt = resolveTarget(elt); - if (delay) { - setTimeout(function(){ - removeClassFromElement(elt, clazz); - elt = null; - }, delay); - } else { - if (elt.classList) { - elt.classList.remove(clazz); - // if there are no classes left, remove the class attribute - if (elt.classList.length === 0) { - elt.removeAttribute("class"); - } - } - } - } - - function toggleClassOnElement(elt, clazz) { - elt = resolveTarget(elt); - elt.classList.toggle(clazz); - } - - function takeClassForElement(elt, clazz) { - elt = resolveTarget(elt); - forEach(elt.parentElement.children, function(child){ - removeClassFromElement(child, clazz); - }) - addClassToElement(elt, clazz); - } - - function closest(elt, selector) { - elt = resolveTarget(elt); - if (elt.closest) { - return elt.closest(selector); - } else { - // TODO remove when IE goes away - do{ - if (elt == null || matches(elt, selector)){ - return elt; - } - } - while (elt = elt && parentElt(elt)); - return null; - } - } - - function startsWith(str, prefix) { - return str.substring(0, prefix.length) === prefix - } - - function endsWith(str, suffix) { - return str.substring(str.length - suffix.length) === suffix - } - - function normalizeSelector(selector) { - var trimmedSelector = selector.trim(); - if (startsWith(trimmedSelector, "<") && endsWith(trimmedSelector, "/>")) { - return trimmedSelector.substring(1, trimmedSelector.length - 2); - } else { - return trimmedSelector; - } - } - - function querySelectorAllExt(elt, selector) { - if (selector.indexOf("closest ") === 0) { - return [closest(elt, normalizeSelector(selector.substr(8)))]; - } else if (selector.indexOf("find ") === 0) { - return [find(elt, normalizeSelector(selector.substr(5)))]; - } else if (selector === "next") { - return [elt.nextElementSibling] - } else if (selector.indexOf("next ") === 0) { - return [scanForwardQuery(elt, normalizeSelector(selector.substr(5)))]; - } else if (selector === "previous") { - return [elt.previousElementSibling] - } else if (selector.indexOf("previous ") === 0) { - return [scanBackwardsQuery(elt, normalizeSelector(selector.substr(9)))]; - } else if (selector === 'document') { - return [document]; - } else if (selector === 'window') { - return [window]; - } else if (selector === 'body') { - return [document.body]; - } else { - return getDocument().querySelectorAll(normalizeSelector(selector)); - } - } - - var scanForwardQuery = function(start, match) { - var results = getDocument().querySelectorAll(match); - for (var i = 0; i < results.length; i++) { - var elt = results[i]; - if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_PRECEDING) { - return elt; - } - } - } - - var scanBackwardsQuery = function(start, match) { - var results = getDocument().querySelectorAll(match); - for (var i = results.length - 1; i >= 0; i--) { - var elt = results[i]; - if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_FOLLOWING) { - return elt; - } - } - } - - function querySelectorExt(eltOrSelector, selector) { - if (selector) { - return querySelectorAllExt(eltOrSelector, selector)[0]; - } else { - return querySelectorAllExt(getDocument().body, eltOrSelector)[0]; - } - } - - function resolveTarget(arg2) { - if (isType(arg2, 'String')) { - return find(arg2); - } else { - return arg2; - } - } - - function processEventArgs(arg1, arg2, arg3) { - if (isFunction(arg2)) { - return { - target: getDocument().body, - event: arg1, - listener: arg2 - } - } else { - return { - target: resolveTarget(arg1), - event: arg2, - listener: arg3 - } - } - - } - - function addEventListenerImpl(arg1, arg2, arg3) { - ready(function(){ - var eventArgs = processEventArgs(arg1, arg2, arg3); - eventArgs.target.addEventListener(eventArgs.event, eventArgs.listener); - }) - var b = isFunction(arg2); - return b ? arg2 : arg3; - } - - function removeEventListenerImpl(arg1, arg2, arg3) { - ready(function(){ - var eventArgs = processEventArgs(arg1, arg2, arg3); - eventArgs.target.removeEventListener(eventArgs.event, eventArgs.listener); - }) - return isFunction(arg2) ? arg2 : arg3; - } - - //==================================================================== - // Node processing - //==================================================================== - - var DUMMY_ELT = getDocument().createElement("output"); // dummy element for bad selectors - function findAttributeTargets(elt, attrName) { - var attrTarget = getClosestAttributeValue(elt, attrName); - if (attrTarget) { - if (attrTarget === "this") { - return [findThisElement(elt, attrName)]; - } else { - var result = querySelectorAllExt(elt, attrTarget); - if (result.length === 0) { - logError('The selector "' + attrTarget + '" on ' + attrName + " returned no matches!"); - return [DUMMY_ELT] - } else { - return result; - } - } - } - } - - function findThisElement(elt, attribute){ - return getClosestMatch(elt, function (elt) { - return getAttributeValue(elt, attribute) != null; - }) - } - - function getTarget(elt) { - var targetStr = getClosestAttributeValue(elt, "hx-target"); - if (targetStr) { - if (targetStr === "this") { - return findThisElement(elt,'hx-target'); - } else { - return querySelectorExt(elt, targetStr) - } - } else { - var data = getInternalData(elt); - if (data.boosted) { - return getDocument().body; - } else { - return elt; - } - } - } - - function shouldSettleAttribute(name) { - var attributesToSettle = htmx.config.attributesToSettle; - for (var i = 0; i < attributesToSettle.length; i++) { - if (name === attributesToSettle[i]) { - return true; - } - } - return false; - } - - function cloneAttributes(mergeTo, mergeFrom) { - forEach(mergeTo.attributes, function (attr) { - if (!mergeFrom.hasAttribute(attr.name) && shouldSettleAttribute(attr.name)) { - mergeTo.removeAttribute(attr.name) - } - }); - forEach(mergeFrom.attributes, function (attr) { - if (shouldSettleAttribute(attr.name)) { - mergeTo.setAttribute(attr.name, attr.value); - } - }); - } - - function isInlineSwap(swapStyle, target) { - var extensions = getExtensions(target); - for (var i = 0; i < extensions.length; i++) { - var extension = extensions[i]; - try { - if (extension.isInlineSwap(swapStyle)) { - return true; - } - } catch(e) { - logError(e); - } - } - return swapStyle === "outerHTML"; - } - - /** - * - * @param {string} oobValue - * @param {HTMLElement} oobElement - * @param {*} settleInfo - * @returns - */ - function oobSwap(oobValue, oobElement, settleInfo) { - var selector = "#" + getRawAttribute(oobElement, "id"); - var swapStyle = "outerHTML"; - if (oobValue === "true") { - // do nothing - } else if (oobValue.indexOf(":") > 0) { - swapStyle = oobValue.substr(0, oobValue.indexOf(":")); - selector = oobValue.substr(oobValue.indexOf(":") + 1, oobValue.length); - } else { - swapStyle = oobValue; - } - - var targets = getDocument().querySelectorAll(selector); - if (targets) { - forEach( - targets, - function (target) { - var fragment; - var oobElementClone = oobElement.cloneNode(true); - fragment = getDocument().createDocumentFragment(); - fragment.appendChild(oobElementClone); - if (!isInlineSwap(swapStyle, target)) { - fragment = oobElementClone; // if this is not an inline swap, we use the content of the node, not the node itself - } - - var beforeSwapDetails = {shouldSwap: true, target: target, fragment:fragment }; - if (!triggerEvent(target, 'htmx:oobBeforeSwap', beforeSwapDetails)) return; - - target = beforeSwapDetails.target; // allow re-targeting - if (beforeSwapDetails['shouldSwap']){ - swap(swapStyle, target, target, fragment, settleInfo); - } - forEach(settleInfo.elts, function (elt) { - triggerEvent(elt, 'htmx:oobAfterSwap', beforeSwapDetails); - }); - } - ); - oobElement.parentNode.removeChild(oobElement); - } else { - oobElement.parentNode.removeChild(oobElement); - triggerErrorEvent(getDocument().body, "htmx:oobErrorNoTarget", {content: oobElement}); - } - return oobValue; - } - - function handleOutOfBandSwaps(elt, fragment, settleInfo) { - var oobSelects = getClosestAttributeValue(elt, "hx-select-oob"); - if (oobSelects) { - var oobSelectValues = oobSelects.split(","); - for (var i = 0; i < oobSelectValues.length; i++) { - var oobSelectValue = oobSelectValues[i].split(":", 2); - var id = oobSelectValue[0].trim(); - if (id.indexOf("#") === 0) { - id = id.substring(1); - } - var oobValue = oobSelectValue[1] || "true"; - var oobElement = fragment.querySelector("#" + id); - if (oobElement) { - oobSwap(oobValue, oobElement, settleInfo); - } - } - } - forEach(findAll(fragment, '[hx-swap-oob], [data-hx-swap-oob]'), function (oobElement) { - var oobValue = getAttributeValue(oobElement, "hx-swap-oob"); - if (oobValue != null) { - oobSwap(oobValue, oobElement, settleInfo); - } - }); - } - - function handlePreservedElements(fragment) { - forEach(findAll(fragment, '[hx-preserve], [data-hx-preserve]'), function (preservedElt) { - var id = getAttributeValue(preservedElt, "id"); - var oldElt = getDocument().getElementById(id); - if (oldElt != null) { - preservedElt.parentNode.replaceChild(oldElt, preservedElt); - } - }); - } - - function handleAttributes(parentNode, fragment, settleInfo) { - forEach(fragment.querySelectorAll("[id]"), function (newNode) { - var id = getRawAttribute(newNode, "id") - if (id && id.length > 0) { - var normalizedId = id.replace("'", "\\'"); - var normalizedTag = newNode.tagName.replace(':', '\\:'); - var oldNode = parentNode.querySelector(normalizedTag + "[id='" + normalizedId + "']"); - if (oldNode && oldNode !== parentNode) { - var newAttributes = newNode.cloneNode(); - cloneAttributes(newNode, oldNode); - settleInfo.tasks.push(function () { - cloneAttributes(newNode, newAttributes); - }); - } - } - }); - } - - function makeAjaxLoadTask(child) { - return function () { - removeClassFromElement(child, htmx.config.addedClass); - processNode(child); - processScripts(child); - processFocus(child) - triggerEvent(child, 'htmx:load'); - }; - } - - function processFocus(child) { - var autofocus = "[autofocus]"; - var autoFocusedElt = matches(child, autofocus) ? child : child.querySelector(autofocus) - if (autoFocusedElt != null) { - autoFocusedElt.focus(); - } - } - - function insertNodesBefore(parentNode, insertBefore, fragment, settleInfo) { - handleAttributes(parentNode, fragment, settleInfo); - while(fragment.childNodes.length > 0){ - var child = fragment.firstChild; - addClassToElement(child, htmx.config.addedClass); - parentNode.insertBefore(child, insertBefore); - if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) { - settleInfo.tasks.push(makeAjaxLoadTask(child)); - } - } - } - - // based on https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0, - // derived from Java's string hashcode implementation - function stringHash(string, hash) { - var char = 0; - while (char < string.length){ - hash = (hash << 5) - hash + string.charCodeAt(char++) | 0; // bitwise or ensures we have a 32-bit int - } - return hash; - } - - function attributeHash(elt) { - var hash = 0; - // IE fix - if (elt.attributes) { - for (var i = 0; i < elt.attributes.length; i++) { - var attribute = elt.attributes[i]; - if(attribute.value){ // only include attributes w/ actual values (empty is same as non-existent) - hash = stringHash(attribute.name, hash); - hash = stringHash(attribute.value, hash); - } - } - } - return hash; - } - - function deInitOnHandlers(elt) { - var internalData = getInternalData(elt); - if (internalData.onHandlers) { - for (var i = 0; i < internalData.onHandlers.length; i++) { - const handlerInfo = internalData.onHandlers[i]; - elt.removeEventListener(handlerInfo.event, handlerInfo.listener); - } - delete internalData.onHandlers - } - } - - function deInitNode(element) { - var internalData = getInternalData(element); - if (internalData.timeout) { - clearTimeout(internalData.timeout); - } - if (internalData.webSocket) { - internalData.webSocket.close(); - } - if (internalData.sseEventSource) { - internalData.sseEventSource.close(); - } - if (internalData.listenerInfos) { - forEach(internalData.listenerInfos, function (info) { - if (info.on) { - info.on.removeEventListener(info.trigger, info.listener); - } - }); - } - deInitOnHandlers(element); - forEach(Object.keys(internalData), function(key) { delete internalData[key] }); - } - - function cleanUpElement(element) { - triggerEvent(element, "htmx:beforeCleanupElement") - deInitNode(element); - if (element.children) { // IE - forEach(element.children, function(child) { cleanUpElement(child) }); - } - } - - function swapOuterHTML(target, fragment, settleInfo) { - if (target.tagName === "BODY") { - return swapInnerHTML(target, fragment, settleInfo); - } else { - // @type {HTMLElement} - var newElt - var eltBeforeNewContent = target.previousSibling; - insertNodesBefore(parentElt(target), target, fragment, settleInfo); - if (eltBeforeNewContent == null) { - newElt = parentElt(target).firstChild; - } else { - newElt = eltBeforeNewContent.nextSibling; - } - settleInfo.elts = settleInfo.elts.filter(function(e) { return e != target }); - while(newElt && newElt !== target) { - if (newElt.nodeType === Node.ELEMENT_NODE) { - settleInfo.elts.push(newElt); - } - newElt = newElt.nextElementSibling; - } - cleanUpElement(target); - parentElt(target).removeChild(target); - } - } - - function swapAfterBegin(target, fragment, settleInfo) { - return insertNodesBefore(target, target.firstChild, fragment, settleInfo); - } - - function swapBeforeBegin(target, fragment, settleInfo) { - return insertNodesBefore(parentElt(target), target, fragment, settleInfo); - } - - function swapBeforeEnd(target, fragment, settleInfo) { - return insertNodesBefore(target, null, fragment, settleInfo); - } - - function swapAfterEnd(target, fragment, settleInfo) { - return insertNodesBefore(parentElt(target), target.nextSibling, fragment, settleInfo); - } - function swapDelete(target, fragment, settleInfo) { - cleanUpElement(target); - return parentElt(target).removeChild(target); - } - - function swapInnerHTML(target, fragment, settleInfo) { - var firstChild = target.firstChild; - insertNodesBefore(target, firstChild, fragment, settleInfo); - if (firstChild) { - while (firstChild.nextSibling) { - cleanUpElement(firstChild.nextSibling) - target.removeChild(firstChild.nextSibling); - } - cleanUpElement(firstChild) - target.removeChild(firstChild); - } - } - - function maybeSelectFromResponse(elt, fragment, selectOverride) { - var selector = selectOverride || getClosestAttributeValue(elt, "hx-select"); - if (selector) { - var newFragment = getDocument().createDocumentFragment(); - forEach(fragment.querySelectorAll(selector), function (node) { - newFragment.appendChild(node); - }); - fragment = newFragment; - } - return fragment; - } - - function swap(swapStyle, elt, target, fragment, settleInfo) { - switch (swapStyle) { - case "none": - return; - case "outerHTML": - swapOuterHTML(target, fragment, settleInfo); - return; - case "afterbegin": - swapAfterBegin(target, fragment, settleInfo); - return; - case "beforebegin": - swapBeforeBegin(target, fragment, settleInfo); - return; - case "beforeend": - swapBeforeEnd(target, fragment, settleInfo); - return; - case "afterend": - swapAfterEnd(target, fragment, settleInfo); - return; - case "delete": - swapDelete(target, fragment, settleInfo); - return; - default: - var extensions = getExtensions(elt); - for (var i = 0; i < extensions.length; i++) { - var ext = extensions[i]; - try { - var newElements = ext.handleSwap(swapStyle, target, fragment, settleInfo); - if (newElements) { - if (typeof newElements.length !== 'undefined') { - // if handleSwap returns an array (like) of elements, we handle them - for (var j = 0; j < newElements.length; j++) { - var child = newElements[j]; - if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) { - settleInfo.tasks.push(makeAjaxLoadTask(child)); - } - } - } - return; - } - } catch (e) { - logError(e); - } - } - if (swapStyle === "innerHTML") { - swapInnerHTML(target, fragment, settleInfo); - } else { - swap(htmx.config.defaultSwapStyle, elt, target, fragment, settleInfo); - } - } - } - - function findTitle(content) { - if (content.indexOf(' -1) { - var contentWithSvgsRemoved = content.replace(SVG_TAGS_REGEX, ''); - var result = contentWithSvgsRemoved.match(TITLE_TAG_REGEX); - if (result) { - return result[2]; - } - } - } - - function selectAndSwap(swapStyle, target, elt, responseText, settleInfo, selectOverride) { - settleInfo.title = findTitle(responseText); - var fragment = makeFragment(responseText); - if (fragment) { - handleOutOfBandSwaps(elt, fragment, settleInfo); - fragment = maybeSelectFromResponse(elt, fragment, selectOverride); - handlePreservedElements(fragment); - return swap(swapStyle, elt, target, fragment, settleInfo); - } - } - - function handleTrigger(xhr, header, elt) { - var triggerBody = xhr.getResponseHeader(header); - if (triggerBody.indexOf("{") === 0) { - var triggers = parseJSON(triggerBody); - for (var eventName in triggers) { - if (triggers.hasOwnProperty(eventName)) { - var detail = triggers[eventName]; - if (!isRawObject(detail)) { - detail = {"value": detail} - } - triggerEvent(elt, eventName, detail); - } - } - } else { - var eventNames = triggerBody.split(",") - for (var i = 0; i < eventNames.length; i++) { - triggerEvent(elt, eventNames[i].trim(), []); - } - } - } - - var WHITESPACE = /\s/; - var WHITESPACE_OR_COMMA = /[\s,]/; - var SYMBOL_START = /[_$a-zA-Z]/; - var SYMBOL_CONT = /[_$a-zA-Z0-9]/; - var STRINGISH_START = ['"', "'", "/"]; - var NOT_WHITESPACE = /[^\s]/; - var COMBINED_SELECTOR_START = /[{(]/; - var COMBINED_SELECTOR_END = /[})]/; - function tokenizeString(str) { - var tokens = []; - var position = 0; - while (position < str.length) { - if(SYMBOL_START.exec(str.charAt(position))) { - var startPosition = position; - while (SYMBOL_CONT.exec(str.charAt(position + 1))) { - position++; - } - tokens.push(str.substr(startPosition, position - startPosition + 1)); - } else if (STRINGISH_START.indexOf(str.charAt(position)) !== -1) { - var startChar = str.charAt(position); - var startPosition = position; - position++; - while (position < str.length && str.charAt(position) !== startChar ) { - if (str.charAt(position) === "\\") { - position++; - } - position++; - } - tokens.push(str.substr(startPosition, position - startPosition + 1)); - } else { - var symbol = str.charAt(position); - tokens.push(symbol); - } - position++; - } - return tokens; - } - - function isPossibleRelativeReference(token, last, paramName) { - return SYMBOL_START.exec(token.charAt(0)) && - token !== "true" && - token !== "false" && - token !== "this" && - token !== paramName && - last !== "."; - } - - function maybeGenerateConditional(elt, tokens, paramName) { - if (tokens[0] === '[') { - tokens.shift(); - var bracketCount = 1; - var conditionalSource = " return (function(" + paramName + "){ return ("; - var last = null; - while (tokens.length > 0) { - var token = tokens[0]; - if (token === "]") { - bracketCount--; - if (bracketCount === 0) { - if (last === null) { - conditionalSource = conditionalSource + "true"; - } - tokens.shift(); - conditionalSource += ")})"; - try { - var conditionFunction = maybeEval(elt,function () { - return Function(conditionalSource)(); - }, - function(){return true}) - conditionFunction.source = conditionalSource; - return conditionFunction; - } catch (e) { - triggerErrorEvent(getDocument().body, "htmx:syntax:error", {error:e, source:conditionalSource}) - return null; - } - } - } else if (token === "[") { - bracketCount++; - } - if (isPossibleRelativeReference(token, last, paramName)) { - conditionalSource += "((" + paramName + "." + token + ") ? (" + paramName + "." + token + ") : (window." + token + "))"; - } else { - conditionalSource = conditionalSource + token; - } - last = tokens.shift(); - } - } - } - - function consumeUntil(tokens, match) { - var result = ""; - while (tokens.length > 0 && !match.test(tokens[0])) { - result += tokens.shift(); - } - return result; - } - - function consumeCSSSelector(tokens) { - var result; - if (tokens.length > 0 && COMBINED_SELECTOR_START.test(tokens[0])) { - tokens.shift(); - result = consumeUntil(tokens, COMBINED_SELECTOR_END).trim(); - tokens.shift(); - } else { - result = consumeUntil(tokens, WHITESPACE_OR_COMMA); - } - return result; - } - - var INPUT_SELECTOR = 'input, textarea, select'; - - /** - * @param {HTMLElement} elt - * @param {string} explicitTrigger - * @param {cache} cache for trigger specs - * @returns {import("./htmx").HtmxTriggerSpecification[]} - */ - function parseAndCacheTrigger(elt, explicitTrigger, cache) { - var triggerSpecs = []; - var tokens = tokenizeString(explicitTrigger); - do { - consumeUntil(tokens, NOT_WHITESPACE); - var initialLength = tokens.length; - var trigger = consumeUntil(tokens, /[,\[\s]/); - if (trigger !== "") { - if (trigger === "every") { - var every = {trigger: 'every'}; - consumeUntil(tokens, NOT_WHITESPACE); - every.pollInterval = parseInterval(consumeUntil(tokens, /[,\[\s]/)); - consumeUntil(tokens, NOT_WHITESPACE); - var eventFilter = maybeGenerateConditional(elt, tokens, "event"); - if (eventFilter) { - every.eventFilter = eventFilter; - } - triggerSpecs.push(every); - } else if (trigger.indexOf("sse:") === 0) { - triggerSpecs.push({trigger: 'sse', sseEvent: trigger.substr(4)}); - } else { - var triggerSpec = {trigger: trigger}; - var eventFilter = maybeGenerateConditional(elt, tokens, "event"); - if (eventFilter) { - triggerSpec.eventFilter = eventFilter; - } - while (tokens.length > 0 && tokens[0] !== ",") { - consumeUntil(tokens, NOT_WHITESPACE) - var token = tokens.shift(); - if (token === "changed") { - triggerSpec.changed = true; - } else if (token === "once") { - triggerSpec.once = true; - } else if (token === "consume") { - triggerSpec.consume = true; - } else if (token === "delay" && tokens[0] === ":") { - tokens.shift(); - triggerSpec.delay = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA)); - } else if (token === "from" && tokens[0] === ":") { - tokens.shift(); - if (COMBINED_SELECTOR_START.test(tokens[0])) { - var from_arg = consumeCSSSelector(tokens); - } else { - var from_arg = consumeUntil(tokens, WHITESPACE_OR_COMMA); - if (from_arg === "closest" || from_arg === "find" || from_arg === "next" || from_arg === "previous") { - tokens.shift(); - var selector = consumeCSSSelector(tokens); - // `next` and `previous` allow a selector-less syntax - if (selector.length > 0) { - from_arg += " " + selector; - } - } - } - triggerSpec.from = from_arg; - } else if (token === "target" && tokens[0] === ":") { - tokens.shift(); - triggerSpec.target = consumeCSSSelector(tokens); - } else if (token === "throttle" && tokens[0] === ":") { - tokens.shift(); - triggerSpec.throttle = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA)); - } else if (token === "queue" && tokens[0] === ":") { - tokens.shift(); - triggerSpec.queue = consumeUntil(tokens, WHITESPACE_OR_COMMA); - } else if (token === "root" && tokens[0] === ":") { - tokens.shift(); - triggerSpec[token] = consumeCSSSelector(tokens); - } else if (token === "threshold" && tokens[0] === ":") { - tokens.shift(); - triggerSpec[token] = consumeUntil(tokens, WHITESPACE_OR_COMMA); - } else { - triggerErrorEvent(elt, "htmx:syntax:error", {token:tokens.shift()}); - } - } - triggerSpecs.push(triggerSpec); - } - } - if (tokens.length === initialLength) { - triggerErrorEvent(elt, "htmx:syntax:error", {token:tokens.shift()}); - } - consumeUntil(tokens, NOT_WHITESPACE); - } while (tokens[0] === "," && tokens.shift()) - if (cache) { - cache[explicitTrigger] = triggerSpecs - } - return triggerSpecs - } - - /** - * @param {HTMLElement} elt - * @returns {import("./htmx").HtmxTriggerSpecification[]} - */ - function getTriggerSpecs(elt) { - var explicitTrigger = getAttributeValue(elt, 'hx-trigger'); - var triggerSpecs = []; - if (explicitTrigger) { - var cache = htmx.config.triggerSpecsCache - triggerSpecs = (cache && cache[explicitTrigger]) || parseAndCacheTrigger(elt, explicitTrigger, cache) - } - - if (triggerSpecs.length > 0) { - return triggerSpecs; - } else if (matches(elt, 'form')) { - return [{trigger: 'submit'}]; - } else if (matches(elt, 'input[type="button"], input[type="submit"]')){ - return [{trigger: 'click'}]; - } else if (matches(elt, INPUT_SELECTOR)) { - return [{trigger: 'change'}]; - } else { - return [{trigger: 'click'}]; - } - } - - function cancelPolling(elt) { - getInternalData(elt).cancelled = true; - } - - function processPolling(elt, handler, spec) { - var nodeData = getInternalData(elt); - nodeData.timeout = setTimeout(function () { - if (bodyContains(elt) && nodeData.cancelled !== true) { - if (!maybeFilterEvent(spec, elt, makeEvent('hx:poll:trigger', { - triggerSpec: spec, - target: elt - }))) { - handler(elt); - } - processPolling(elt, handler, spec); - } - }, spec.pollInterval); - } - - function isLocalLink(elt) { - return location.hostname === elt.hostname && - getRawAttribute(elt,'href') && - getRawAttribute(elt,'href').indexOf("#") !== 0; - } - - function boostElement(elt, nodeData, triggerSpecs) { - if ((elt.tagName === "A" && isLocalLink(elt) && (elt.target === "" || elt.target === "_self")) || elt.tagName === "FORM") { - nodeData.boosted = true; - var verb, path; - if (elt.tagName === "A") { - verb = "get"; - path = getRawAttribute(elt, 'href') - } else { - var rawAttribute = getRawAttribute(elt, "method"); - verb = rawAttribute ? rawAttribute.toLowerCase() : "get"; - if (verb === "get") { - } - path = getRawAttribute(elt, 'action'); - } - triggerSpecs.forEach(function(triggerSpec) { - addEventListener(elt, function(elt, evt) { - if (closest(elt, htmx.config.disableSelector)) { - cleanUpElement(elt) - return - } - issueAjaxRequest(verb, path, elt, evt) - }, nodeData, triggerSpec, true); - }); - } - } - - /** - * - * @param {Event} evt - * @param {HTMLElement} elt - * @returns - */ - function shouldCancel(evt, elt) { - if (evt.type === "submit" || evt.type === "click") { - if (elt.tagName === "FORM") { - return true; - } - if (matches(elt, 'input[type="submit"], button') && closest(elt, 'form') !== null) { - return true; - } - if (elt.tagName === "A" && elt.href && - (elt.getAttribute('href') === '#' || elt.getAttribute('href').indexOf("#") !== 0)) { - return true; - } - } - return false; - } - - function ignoreBoostedAnchorCtrlClick(elt, evt) { - return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && (evt.ctrlKey || evt.metaKey); - } - - function maybeFilterEvent(triggerSpec, elt, evt) { - var eventFilter = triggerSpec.eventFilter; - if(eventFilter){ - try { - return eventFilter.call(elt, evt) !== true; - } catch(e) { - triggerErrorEvent(getDocument().body, "htmx:eventFilter:error", {error: e, source:eventFilter.source}); - return true; - } - } - return false; - } - - function addEventListener(elt, handler, nodeData, triggerSpec, explicitCancel) { - var elementData = getInternalData(elt); - var eltsToListenOn; - if (triggerSpec.from) { - eltsToListenOn = querySelectorAllExt(elt, triggerSpec.from); - } else { - eltsToListenOn = [elt]; - } - // store the initial values of the elements, so we can tell if they change - if (triggerSpec.changed) { - eltsToListenOn.forEach(function (eltToListenOn) { - var eltToListenOnData = getInternalData(eltToListenOn); - eltToListenOnData.lastValue = eltToListenOn.value; - }) - } - forEach(eltsToListenOn, function (eltToListenOn) { - var eventListener = function (evt) { - if (!bodyContains(elt)) { - eltToListenOn.removeEventListener(triggerSpec.trigger, eventListener); - return; - } - if (ignoreBoostedAnchorCtrlClick(elt, evt)) { - return; - } - if (explicitCancel || shouldCancel(evt, elt)) { - evt.preventDefault(); - } - if (maybeFilterEvent(triggerSpec, elt, evt)) { - return; - } - var eventData = getInternalData(evt); - eventData.triggerSpec = triggerSpec; - if (eventData.handledFor == null) { - eventData.handledFor = []; - } - if (eventData.handledFor.indexOf(elt) < 0) { - eventData.handledFor.push(elt); - if (triggerSpec.consume) { - evt.stopPropagation(); - } - if (triggerSpec.target && evt.target) { - if (!matches(evt.target, triggerSpec.target)) { - return; - } - } - if (triggerSpec.once) { - if (elementData.triggeredOnce) { - return; - } else { - elementData.triggeredOnce = true; - } - } - if (triggerSpec.changed) { - var eltToListenOnData = getInternalData(eltToListenOn) - if (eltToListenOnData.lastValue === eltToListenOn.value) { - return; - } - eltToListenOnData.lastValue = eltToListenOn.value - } - if (elementData.delayed) { - clearTimeout(elementData.delayed); - } - if (elementData.throttle) { - return; - } - - if (triggerSpec.throttle > 0) { - if (!elementData.throttle) { - handler(elt, evt); - elementData.throttle = setTimeout(function () { - elementData.throttle = null; - }, triggerSpec.throttle); - } - } else if (triggerSpec.delay > 0) { - elementData.delayed = setTimeout(function() { handler(elt, evt) }, triggerSpec.delay); - } else { - triggerEvent(elt, 'htmx:trigger') - handler(elt, evt); - } - } - }; - if (nodeData.listenerInfos == null) { - nodeData.listenerInfos = []; - } - nodeData.listenerInfos.push({ - trigger: triggerSpec.trigger, - listener: eventListener, - on: eltToListenOn - }) - eltToListenOn.addEventListener(triggerSpec.trigger, eventListener); - }); - } - - var windowIsScrolling = false // used by initScrollHandler - var scrollHandler = null; - function initScrollHandler() { - if (!scrollHandler) { - scrollHandler = function() { - windowIsScrolling = true - }; - window.addEventListener("scroll", scrollHandler) - setInterval(function() { - if (windowIsScrolling) { - windowIsScrolling = false; - forEach(getDocument().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"), function (elt) { - maybeReveal(elt); - }) - } - }, 200); - } - } - - function maybeReveal(elt) { - if (!hasAttribute(elt,'data-hx-revealed') && isScrolledIntoView(elt)) { - elt.setAttribute('data-hx-revealed', 'true'); - var nodeData = getInternalData(elt); - if (nodeData.initHash) { - triggerEvent(elt, 'revealed'); - } else { - // if the node isn't initialized, wait for it before triggering the request - elt.addEventListener("htmx:afterProcessNode", function(evt) { triggerEvent(elt, 'revealed') }, {once: true}); - } - } - } - - //==================================================================== - // Web Sockets - //==================================================================== - - function processWebSocketInfo(elt, nodeData, info) { - var values = splitOnWhitespace(info); - for (var i = 0; i < values.length; i++) { - var value = values[i].split(/:(.+)/); - if (value[0] === "connect") { - ensureWebSocket(elt, value[1], 0); - } - if (value[0] === "send") { - processWebSocketSend(elt); - } - } - } - - function ensureWebSocket(elt, wssSource, retryCount) { - if (!bodyContains(elt)) { - return; // stop ensuring websocket connection when socket bearing element ceases to exist - } - - if (wssSource.indexOf("/") == 0) { // complete absolute paths only - var base_part = location.hostname + (location.port ? ':'+location.port: ''); - if (location.protocol == 'https:') { - wssSource = "wss://" + base_part + wssSource; - } else if (location.protocol == 'http:') { - wssSource = "ws://" + base_part + wssSource; - } - } - var socket = htmx.createWebSocket(wssSource); - socket.onerror = function (e) { - triggerErrorEvent(elt, "htmx:wsError", {error:e, socket:socket}); - maybeCloseWebSocketSource(elt); - }; - - socket.onclose = function (e) { - if ([1006, 1012, 1013].indexOf(e.code) >= 0) { // Abnormal Closure/Service Restart/Try Again Later - var delay = getWebSocketReconnectDelay(retryCount); - setTimeout(function() { - ensureWebSocket(elt, wssSource, retryCount+1); // creates a websocket with a new timeout - }, delay); - } - }; - socket.onopen = function (e) { - retryCount = 0; - } - - getInternalData(elt).webSocket = socket; - socket.addEventListener('message', function (event) { - if (maybeCloseWebSocketSource(elt)) { - return; - } - - var response = event.data; - withExtensions(elt, function(extension){ - response = extension.transformResponse(response, null, elt); - }); - - var settleInfo = makeSettleInfo(elt); - var fragment = makeFragment(response); - var children = toArray(fragment.children); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - oobSwap(getAttributeValue(child, "hx-swap-oob") || "true", child, settleInfo); - } - - settleImmediately(settleInfo.tasks); - }); - } - - function maybeCloseWebSocketSource(elt) { - if (!bodyContains(elt)) { - getInternalData(elt).webSocket.close(); - return true; - } - } - - function processWebSocketSend(elt) { - var webSocketSourceElt = getClosestMatch(elt, function (parent) { - return getInternalData(parent).webSocket != null; - }); - if (webSocketSourceElt) { - elt.addEventListener(getTriggerSpecs(elt)[0].trigger, function (evt) { - var webSocket = getInternalData(webSocketSourceElt).webSocket; - var headers = getHeaders(elt, webSocketSourceElt); - var results = getInputValues(elt, 'post'); - var errors = results.errors; - var rawParameters = results.values; - var expressionVars = getExpressionVars(elt); - var allParameters = mergeObjects(rawParameters, expressionVars); - var filteredParameters = filterValues(allParameters, elt); - filteredParameters['HEADERS'] = headers; - if (errors && errors.length > 0) { - triggerEvent(elt, 'htmx:validation:halted', errors); - return; - } - webSocket.send(JSON.stringify(filteredParameters)); - if(shouldCancel(evt, elt)){ - evt.preventDefault(); - } - }); - } else { - triggerErrorEvent(elt, "htmx:noWebSocketSourceError"); - } - } - - function getWebSocketReconnectDelay(retryCount) { - var delay = htmx.config.wsReconnectDelay; - if (typeof delay === 'function') { - // @ts-ignore - return delay(retryCount); - } - if (delay === 'full-jitter') { - var exp = Math.min(retryCount, 6); - var maxDelay = 1000 * Math.pow(2, exp); - return maxDelay * Math.random(); - } - logError('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"'); - } - - //==================================================================== - // Server Sent Events - //==================================================================== - - function processSSEInfo(elt, nodeData, info) { - var values = splitOnWhitespace(info); - for (var i = 0; i < values.length; i++) { - var value = values[i].split(/:(.+)/); - if (value[0] === "connect") { - processSSESource(elt, value[1]); - } - - if ((value[0] === "swap")) { - processSSESwap(elt, value[1]) - } - } - } - - function processSSESource(elt, sseSrc) { - var source = htmx.createEventSource(sseSrc); - source.onerror = function (e) { - triggerErrorEvent(elt, "htmx:sseError", {error:e, source:source}); - maybeCloseSSESource(elt); - }; - getInternalData(elt).sseEventSource = source; - } - - function processSSESwap(elt, sseEventName) { - var sseSourceElt = getClosestMatch(elt, hasEventSource); - if (sseSourceElt) { - var sseEventSource = getInternalData(sseSourceElt).sseEventSource; - var sseListener = function (event) { - if (maybeCloseSSESource(sseSourceElt)) { - return; - } - if (!bodyContains(elt)) { - sseEventSource.removeEventListener(sseEventName, sseListener); - return; - } - - /////////////////////////// - // TODO: merge this code with AJAX and WebSockets code in the future. - - var response = event.data; - withExtensions(elt, function(extension){ - response = extension.transformResponse(response, null, elt); - }); - - var swapSpec = getSwapSpecification(elt) - var target = getTarget(elt) - var settleInfo = makeSettleInfo(elt); - - selectAndSwap(swapSpec.swapStyle, target, elt, response, settleInfo) - settleImmediately(settleInfo.tasks) - triggerEvent(elt, "htmx:sseMessage", event) - }; - - getInternalData(elt).sseListener = sseListener; - sseEventSource.addEventListener(sseEventName, sseListener); - } else { - triggerErrorEvent(elt, "htmx:noSSESourceError"); - } - } - - function processSSETrigger(elt, handler, sseEventName) { - var sseSourceElt = getClosestMatch(elt, hasEventSource); - if (sseSourceElt) { - var sseEventSource = getInternalData(sseSourceElt).sseEventSource; - var sseListener = function () { - if (!maybeCloseSSESource(sseSourceElt)) { - if (bodyContains(elt)) { - handler(elt); - } else { - sseEventSource.removeEventListener(sseEventName, sseListener); - } - } - }; - getInternalData(elt).sseListener = sseListener; - sseEventSource.addEventListener(sseEventName, sseListener); - } else { - triggerErrorEvent(elt, "htmx:noSSESourceError"); - } - } - - function maybeCloseSSESource(elt) { - if (!bodyContains(elt)) { - getInternalData(elt).sseEventSource.close(); - return true; - } - } - - function hasEventSource(node) { - return getInternalData(node).sseEventSource != null; - } - - //==================================================================== - - function loadImmediately(elt, handler, nodeData, delay) { - var load = function(){ - if (!nodeData.loaded) { - nodeData.loaded = true; - handler(elt); - } - } - if (delay > 0) { - setTimeout(load, delay); - } else { - load(); - } - } - - function processVerbs(elt, nodeData, triggerSpecs) { - var explicitAction = false; - forEach(VERBS, function (verb) { - if (hasAttribute(elt,'hx-' + verb)) { - var path = getAttributeValue(elt, 'hx-' + verb); - explicitAction = true; - nodeData.path = path; - nodeData.verb = verb; - triggerSpecs.forEach(function(triggerSpec) { - addTriggerHandler(elt, triggerSpec, nodeData, function (elt, evt) { - if (closest(elt, htmx.config.disableSelector)) { - cleanUpElement(elt) - return - } - issueAjaxRequest(verb, path, elt, evt) - }) - }); - } - }); - return explicitAction; - } - - function addTriggerHandler(elt, triggerSpec, nodeData, handler) { - if (triggerSpec.sseEvent) { - processSSETrigger(elt, handler, triggerSpec.sseEvent); - } else if (triggerSpec.trigger === "revealed") { - initScrollHandler(); - addEventListener(elt, handler, nodeData, triggerSpec); - maybeReveal(elt); - } else if (triggerSpec.trigger === "intersect") { - var observerOptions = {}; - if (triggerSpec.root) { - observerOptions.root = querySelectorExt(elt, triggerSpec.root) - } - if (triggerSpec.threshold) { - observerOptions.threshold = parseFloat(triggerSpec.threshold); - } - var observer = new IntersectionObserver(function (entries) { - for (var i = 0; i < entries.length; i++) { - var entry = entries[i]; - if (entry.isIntersecting) { - triggerEvent(elt, "intersect"); - break; - } - } - }, observerOptions); - observer.observe(elt); - addEventListener(elt, handler, nodeData, triggerSpec); - } else if (triggerSpec.trigger === "load") { - if (!maybeFilterEvent(triggerSpec, elt, makeEvent("load", {elt: elt}))) { - loadImmediately(elt, handler, nodeData, triggerSpec.delay); - } - } else if (triggerSpec.pollInterval > 0) { - nodeData.polling = true; - processPolling(elt, handler, triggerSpec); - } else { - addEventListener(elt, handler, nodeData, triggerSpec); - } - } - - function evalScript(script) { - if (htmx.config.allowScriptTags && (script.type === "text/javascript" || script.type === "module" || script.type === "") ) { - var newScript = getDocument().createElement("script"); - forEach(script.attributes, function (attr) { - newScript.setAttribute(attr.name, attr.value); - }); - newScript.textContent = script.textContent; - newScript.async = false; - if (htmx.config.inlineScriptNonce) { - newScript.nonce = htmx.config.inlineScriptNonce; - } - var parent = script.parentElement; - - try { - parent.insertBefore(newScript, script); - } catch (e) { - logError(e); - } finally { - // remove old script element, but only if it is still in DOM - if (script.parentElement) { - script.parentElement.removeChild(script); - } - } - } - } - - function processScripts(elt) { - if (matches(elt, "script")) { - evalScript(elt); - } - forEach(findAll(elt, "script"), function (script) { - evalScript(script); - }); - } - - function shouldProcessHxOn(elt) { - var attributes = elt.attributes - for (var j = 0; j < attributes.length; j++) { - var attrName = attributes[j].name - if (startsWith(attrName, "hx-on:") || startsWith(attrName, "data-hx-on:") || - startsWith(attrName, "hx-on-") || startsWith(attrName, "data-hx-on-")) { - return true - } - } - return false - } - - function findHxOnWildcardElements(elt) { - var node = null - var elements = [] - - if (shouldProcessHxOn(elt)) { - elements.push(elt) - } - - if (document.evaluate) { - var iter = document.evaluate('.//*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or' + - ' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]', elt) - while (node = iter.iterateNext()) elements.push(node) - } else { - var allElements = elt.getElementsByTagName("*") - for (var i = 0; i < allElements.length; i++) { - if (shouldProcessHxOn(allElements[i])) { - elements.push(allElements[i]) - } - } - } - - return elements - } - - function findElementsToProcess(elt) { - if (elt.querySelectorAll) { - var boostedSelector = ", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]"; - var results = elt.querySelectorAll(VERB_SELECTOR + boostedSelector + ", form, [type='submit'], [hx-sse], [data-hx-sse], [hx-ws]," + - " [data-hx-ws], [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger], [hx-on], [data-hx-on]"); - return results; - } else { - return []; - } - } - - // Handle submit buttons/inputs that have the form attribute set - // see https://developer.mozilla.org/docs/Web/HTML/Element/button - function maybeSetLastButtonClicked(evt) { - var elt = closest(evt.target, "button, input[type='submit']"); - var internalData = getRelatedFormData(evt) - if (internalData) { - internalData.lastButtonClicked = elt; - } - }; - function maybeUnsetLastButtonClicked(evt){ - var internalData = getRelatedFormData(evt) - if (internalData) { - internalData.lastButtonClicked = null; - } - } - function getRelatedFormData(evt) { - var elt = closest(evt.target, "button, input[type='submit']"); - if (!elt) { - return; - } - var form = resolveTarget('#' + getRawAttribute(elt, 'form')) || closest(elt, 'form'); - if (!form) { - return; - } - return getInternalData(form); - } - function initButtonTracking(elt) { - // need to handle both click and focus in: - // focusin - in case someone tabs in to a button and hits the space bar - // click - on OSX buttons do not focus on click see https://bugs.webkit.org/show_bug.cgi?id=13724 - elt.addEventListener('click', maybeSetLastButtonClicked) - elt.addEventListener('focusin', maybeSetLastButtonClicked) - elt.addEventListener('focusout', maybeUnsetLastButtonClicked) - } - - function countCurlies(line) { - var tokens = tokenizeString(line); - var netCurlies = 0; - for (var i = 0; i < tokens.length; i++) { - const token = tokens[i]; - if (token === "{") { - netCurlies++; - } else if (token === "}") { - netCurlies--; - } - } - return netCurlies; - } - - function addHxOnEventHandler(elt, eventName, code) { - var nodeData = getInternalData(elt); - if (!Array.isArray(nodeData.onHandlers)) { - nodeData.onHandlers = []; - } - var func; - var listener = function (e) { - return maybeEval(elt, function() { - if (!func) { - func = new Function("event", code); - } - func.call(elt, e); - }); - }; - elt.addEventListener(eventName, listener); - nodeData.onHandlers.push({event:eventName, listener:listener}); - } - - function processHxOn(elt) { - var hxOnValue = getAttributeValue(elt, 'hx-on'); - if (hxOnValue) { - var handlers = {} - var lines = hxOnValue.split("\n"); - var currentEvent = null; - var curlyCount = 0; - while (lines.length > 0) { - var line = lines.shift(); - var match = line.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/); - if (curlyCount === 0 && match) { - line.split(":") - currentEvent = match[1].slice(0, -1); // strip last colon - handlers[currentEvent] = match[2]; - } else { - handlers[currentEvent] += line; - } - curlyCount += countCurlies(line); - } - - for (var eventName in handlers) { - addHxOnEventHandler(elt, eventName, handlers[eventName]); - } - } - } - - function processHxOnWildcard(elt) { - // wipe any previous on handlers so that this function takes precedence - deInitOnHandlers(elt) - - for (var i = 0; i < elt.attributes.length; i++) { - var name = elt.attributes[i].name - var value = elt.attributes[i].value - if (startsWith(name, "hx-on") || startsWith(name, "data-hx-on")) { - var afterOnPosition = name.indexOf("-on") + 3; - var nextChar = name.slice(afterOnPosition, afterOnPosition + 1); - if (nextChar === "-" || nextChar === ":") { - var eventName = name.slice(afterOnPosition + 1); - // if the eventName starts with a colon or dash, prepend "htmx" for shorthand support - if (startsWith(eventName, ":")) { - eventName = "htmx" + eventName - } else if (startsWith(eventName, "-")) { - eventName = "htmx:" + eventName.slice(1); - } else if (startsWith(eventName, "htmx-")) { - eventName = "htmx:" + eventName.slice(5); - } - - addHxOnEventHandler(elt, eventName, value) - } - } - } - } - - function initNode(elt) { - if (closest(elt, htmx.config.disableSelector)) { - cleanUpElement(elt) - return; - } - var nodeData = getInternalData(elt); - if (nodeData.initHash !== attributeHash(elt)) { - // clean up any previously processed info - deInitNode(elt); - - nodeData.initHash = attributeHash(elt); - - processHxOn(elt); - - triggerEvent(elt, "htmx:beforeProcessNode") - - if (elt.value) { - nodeData.lastValue = elt.value; - } - - var triggerSpecs = getTriggerSpecs(elt); - var hasExplicitHttpAction = processVerbs(elt, nodeData, triggerSpecs); - - if (!hasExplicitHttpAction) { - if (getClosestAttributeValue(elt, "hx-boost") === "true") { - boostElement(elt, nodeData, triggerSpecs); - } else if (hasAttribute(elt, 'hx-trigger')) { - triggerSpecs.forEach(function (triggerSpec) { - // For "naked" triggers, don't do anything at all - addTriggerHandler(elt, triggerSpec, nodeData, function () { - }) - }) - } - } - - // Handle submit buttons/inputs that have the form attribute set - // see https://developer.mozilla.org/docs/Web/HTML/Element/button - if (elt.tagName === "FORM" || (getRawAttribute(elt, "type") === "submit" && hasAttribute(elt, "form"))) { - initButtonTracking(elt) - } - - var sseInfo = getAttributeValue(elt, 'hx-sse'); - if (sseInfo) { - processSSEInfo(elt, nodeData, sseInfo); - } - - var wsInfo = getAttributeValue(elt, 'hx-ws'); - if (wsInfo) { - processWebSocketInfo(elt, nodeData, wsInfo); - } - triggerEvent(elt, "htmx:afterProcessNode"); - } - } - - function processNode(elt) { - elt = resolveTarget(elt); - if (closest(elt, htmx.config.disableSelector)) { - cleanUpElement(elt) - return; - } - initNode(elt); - forEach(findElementsToProcess(elt), function(child) { initNode(child) }); - // Because it happens second, the new way of adding onHandlers superseeds the old one - // i.e. if there are any hx-on:eventName attributes, the hx-on attribute will be ignored - forEach(findHxOnWildcardElements(elt), processHxOnWildcard); - } - - //==================================================================== - // Event/Log Support - //==================================================================== - - function kebabEventName(str) { - return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase(); - } - - function makeEvent(eventName, detail) { - var evt; - if (window.CustomEvent && typeof window.CustomEvent === 'function') { - evt = new CustomEvent(eventName, {bubbles: true, cancelable: true, detail: detail}); - } else { - evt = getDocument().createEvent('CustomEvent'); - evt.initCustomEvent(eventName, true, true, detail); - } - return evt; - } - - function triggerErrorEvent(elt, eventName, detail) { - triggerEvent(elt, eventName, mergeObjects({error:eventName}, detail)); - } - - function ignoreEventForLogging(eventName) { - return eventName === "htmx:afterProcessNode" - } - - /** - * `withExtensions` locates all active extensions for a provided element, then - * executes the provided function using each of the active extensions. It should - * be called internally at every extendable execution point in htmx. - * - * @param {HTMLElement} elt - * @param {(extension:import("./htmx").HtmxExtension) => void} toDo - * @returns void - */ - function withExtensions(elt, toDo) { - forEach(getExtensions(elt), function(extension){ - try { - toDo(extension); - } catch (e) { - logError(e); - } - }); - } - - function logError(msg) { - if(console.error) { - console.error(msg); - } else if (console.log) { - console.log("ERROR: ", msg); - } - } - - function triggerEvent(elt, eventName, detail) { - elt = resolveTarget(elt); - if (detail == null) { - detail = {}; - } - detail["elt"] = elt; - var event = makeEvent(eventName, detail); - if (htmx.logger && !ignoreEventForLogging(eventName)) { - htmx.logger(elt, eventName, detail); - } - if (detail.error) { - logError(detail.error); - triggerEvent(elt, "htmx:error", {errorInfo:detail}) - } - var eventResult = elt.dispatchEvent(event); - var kebabName = kebabEventName(eventName); - if (eventResult && kebabName !== eventName) { - var kebabedEvent = makeEvent(kebabName, event.detail); - eventResult = eventResult && elt.dispatchEvent(kebabedEvent) - } - withExtensions(elt, function (extension) { - eventResult = eventResult && (extension.onEvent(eventName, event) !== false && !event.defaultPrevented) - }); - return eventResult; - } - - //==================================================================== - // History Support - //==================================================================== - var currentPathForHistory = location.pathname+location.search; - - function getHistoryElement() { - var historyElt = getDocument().querySelector('[hx-history-elt],[data-hx-history-elt]'); - return historyElt || getDocument().body; - } - - function saveToHistoryCache(url, content, title, scroll) { - if (!canAccessLocalStorage()) { - return; - } - - if (htmx.config.historyCacheSize <= 0) { - // make sure that an eventually already existing cache is purged - localStorage.removeItem("htmx-history-cache"); - return; - } - - url = normalizePath(url); - - var historyCache = parseJSON(localStorage.getItem("htmx-history-cache")) || []; - for (var i = 0; i < historyCache.length; i++) { - if (historyCache[i].url === url) { - historyCache.splice(i, 1); - break; - } - } - var newHistoryItem = {url:url, content: content, title:title, scroll:scroll}; - triggerEvent(getDocument().body, "htmx:historyItemCreated", {item:newHistoryItem, cache: historyCache}) - historyCache.push(newHistoryItem) - while (historyCache.length > htmx.config.historyCacheSize) { - historyCache.shift(); - } - while(historyCache.length > 0){ - try { - localStorage.setItem("htmx-history-cache", JSON.stringify(historyCache)); - break; - } catch (e) { - triggerErrorEvent(getDocument().body, "htmx:historyCacheError", {cause:e, cache: historyCache}) - historyCache.shift(); // shrink the cache and retry - } - } - } - - function getCachedHistory(url) { - if (!canAccessLocalStorage()) { - return null; - } - - url = normalizePath(url); - - var historyCache = parseJSON(localStorage.getItem("htmx-history-cache")) || []; - for (var i = 0; i < historyCache.length; i++) { - if (historyCache[i].url === url) { - return historyCache[i]; - } - } - return null; - } - - function cleanInnerHtmlForHistory(elt) { - var className = htmx.config.requestClass; - var clone = elt.cloneNode(true); - forEach(findAll(clone, "." + className), function(child){ - removeClassFromElement(child, className); - }); - return clone.innerHTML; - } - - function saveCurrentPageToHistory() { - var elt = getHistoryElement(); - var path = currentPathForHistory || location.pathname+location.search; - - // Allow history snapshot feature to be disabled where hx-history="false" - // is present *anywhere* in the current document we're about to save, - // so we can prevent privileged data entering the cache. - // The page will still be reachable as a history entry, but htmx will fetch it - // live from the server onpopstate rather than look in the localStorage cache - var disableHistoryCache - try { - disableHistoryCache = getDocument().querySelector('[hx-history="false" i],[data-hx-history="false" i]') - } catch (e) { - // IE11: insensitive modifier not supported so fallback to case sensitive selector - disableHistoryCache = getDocument().querySelector('[hx-history="false"],[data-hx-history="false"]') - } - if (!disableHistoryCache) { - triggerEvent(getDocument().body, "htmx:beforeHistorySave", {path: path, historyElt: elt}); - saveToHistoryCache(path, cleanInnerHtmlForHistory(elt), getDocument().title, window.scrollY); - } - - if (htmx.config.historyEnabled) history.replaceState({htmx: true}, getDocument().title, window.location.href); - } - - function pushUrlIntoHistory(path) { - // remove the cache buster parameter, if any - if (htmx.config.getCacheBusterParam) { - path = path.replace(/org\.htmx\.cache-buster=[^&]*&?/, '') - if (endsWith(path, '&') || endsWith(path, "?")) { - path = path.slice(0, -1); - } - } - if(htmx.config.historyEnabled) { - history.pushState({htmx:true}, "", path); - } - currentPathForHistory = path; - } - - function replaceUrlInHistory(path) { - if(htmx.config.historyEnabled) history.replaceState({htmx:true}, "", path); - currentPathForHistory = path; - } - - function settleImmediately(tasks) { - forEach(tasks, function (task) { - task.call(); - }); - } - - function loadHistoryFromServer(path) { - var request = new XMLHttpRequest(); - var details = {path: path, xhr:request}; - triggerEvent(getDocument().body, "htmx:historyCacheMiss", details); - request.open('GET', path, true); - request.setRequestHeader("HX-Request", "true"); - request.setRequestHeader("HX-History-Restore-Request", "true"); - request.setRequestHeader("HX-Current-URL", getDocument().location.href); - request.onload = function () { - if (this.status >= 200 && this.status < 400) { - triggerEvent(getDocument().body, "htmx:historyCacheMissLoad", details); - var fragment = makeFragment(this.response); - // @ts-ignore - fragment = fragment.querySelector('[hx-history-elt],[data-hx-history-elt]') || fragment; - var historyElement = getHistoryElement(); - var settleInfo = makeSettleInfo(historyElement); - var title = findTitle(this.response); - if (title) { - var titleElt = find("title"); - if (titleElt) { - titleElt.innerHTML = title; - } else { - window.document.title = title; - } - } - // @ts-ignore - swapInnerHTML(historyElement, fragment, settleInfo) - settleImmediately(settleInfo.tasks); - currentPathForHistory = path; - triggerEvent(getDocument().body, "htmx:historyRestore", {path: path, cacheMiss:true, serverResponse:this.response}); - } else { - triggerErrorEvent(getDocument().body, "htmx:historyCacheMissLoadError", details); - } - }; - request.send(); - } - - function restoreHistory(path) { - saveCurrentPageToHistory(); - path = path || location.pathname+location.search; - var cached = getCachedHistory(path); - if (cached) { - var fragment = makeFragment(cached.content); - var historyElement = getHistoryElement(); - var settleInfo = makeSettleInfo(historyElement); - swapInnerHTML(historyElement, fragment, settleInfo) - settleImmediately(settleInfo.tasks); - document.title = cached.title; - setTimeout(function () { - window.scrollTo(0, cached.scroll); - }, 0); // next 'tick', so browser has time to render layout - currentPathForHistory = path; - triggerEvent(getDocument().body, "htmx:historyRestore", {path:path, item:cached}); - } else { - if (htmx.config.refreshOnHistoryMiss) { - - // @ts-ignore: optional parameter in reload() function throws error - window.location.reload(true); - } else { - loadHistoryFromServer(path); - } - } - } - - function addRequestIndicatorClasses(elt) { - var indicators = findAttributeTargets(elt, 'hx-indicator'); - if (indicators == null) { - indicators = [elt]; - } - forEach(indicators, function (ic) { - var internalData = getInternalData(ic); - internalData.requestCount = (internalData.requestCount || 0) + 1; - ic.classList["add"].call(ic.classList, htmx.config.requestClass); - }); - return indicators; - } - - function disableElements(elt) { - var disabledElts = findAttributeTargets(elt, 'hx-disabled-elt'); - if (disabledElts == null) { - disabledElts = []; - } - forEach(disabledElts, function (disabledElement) { - var internalData = getInternalData(disabledElement); - internalData.requestCount = (internalData.requestCount || 0) + 1; - disabledElement.setAttribute("disabled", ""); - }); - return disabledElts; - } - - function removeRequestIndicators(indicators, disabled) { - forEach(indicators, function (ic) { - var internalData = getInternalData(ic); - internalData.requestCount = (internalData.requestCount || 0) - 1; - if (internalData.requestCount === 0) { - ic.classList["remove"].call(ic.classList, htmx.config.requestClass); - } - }); - forEach(disabled, function (disabledElement) { - var internalData = getInternalData(disabledElement); - internalData.requestCount = (internalData.requestCount || 0) - 1; - if (internalData.requestCount === 0) { - disabledElement.removeAttribute('disabled'); - } - }); - } - - //==================================================================== - // Input Value Processing - //==================================================================== - - function haveSeenNode(processed, elt) { - for (var i = 0; i < processed.length; i++) { - var node = processed[i]; - if (node.isSameNode(elt)) { - return true; - } - } - return false; - } - - function shouldInclude(elt) { - if(elt.name === "" || elt.name == null || elt.disabled || closest(elt, "fieldset[disabled]")) { - return false; - } - // ignore "submitter" types (see jQuery src/serialize.js) - if (elt.type === "button" || elt.type === "submit" || elt.tagName === "image" || elt.tagName === "reset" || elt.tagName === "file" ) { - return false; - } - if (elt.type === "checkbox" || elt.type === "radio" ) { - return elt.checked; - } - return true; - } - - function addValueToValues(name, value, values) { - // This is a little ugly because both the current value of the named value in the form - // and the new value could be arrays, so we have to handle all four cases :/ - if (name != null && value != null) { - var current = values[name]; - if (current === undefined) { - values[name] = value; - } else if (Array.isArray(current)) { - if (Array.isArray(value)) { - values[name] = current.concat(value); - } else { - current.push(value); - } - } else { - if (Array.isArray(value)) { - values[name] = [current].concat(value); - } else { - values[name] = [current, value]; - } - } - } - } - - function processInputValue(processed, values, errors, elt, validate) { - if (elt == null || haveSeenNode(processed, elt)) { - return; - } else { - processed.push(elt); - } - if (shouldInclude(elt)) { - var name = getRawAttribute(elt,"name"); - var value = elt.value; - if (elt.multiple && elt.tagName === "SELECT") { - value = toArray(elt.querySelectorAll("option:checked")).map(function (e) { return e.value }); - } - // include file inputs - if (elt.files) { - value = toArray(elt.files); - } - addValueToValues(name, value, values); - if (validate) { - validateElement(elt, errors); - } - } - if (matches(elt, 'form')) { - var inputs = elt.elements; - forEach(inputs, function(input) { - processInputValue(processed, values, errors, input, validate); - }); - } - } - - function validateElement(element, errors) { - if (element.willValidate) { - triggerEvent(element, "htmx:validation:validate") - if (!element.checkValidity()) { - errors.push({elt: element, message:element.validationMessage, validity:element.validity}); - triggerEvent(element, "htmx:validation:failed", {message:element.validationMessage, validity:element.validity}) - } - } - } - - /** - * @param {HTMLElement} elt - * @param {string} verb - */ - function getInputValues(elt, verb) { - var processed = []; - var values = {}; - var formValues = {}; - var errors = []; - var internalData = getInternalData(elt); - if (internalData.lastButtonClicked && !bodyContains(internalData.lastButtonClicked)) { - internalData.lastButtonClicked = null - } - - // only validate when form is directly submitted and novalidate or formnovalidate are not set - // or if the element has an explicit hx-validate="true" on it - var validate = (matches(elt, 'form') && elt.noValidate !== true) || getAttributeValue(elt, "hx-validate") === "true"; - if (internalData.lastButtonClicked) { - validate = validate && internalData.lastButtonClicked.formNoValidate !== true; - } - - // for a non-GET include the closest form - if (verb !== 'get') { - processInputValue(processed, formValues, errors, closest(elt, 'form'), validate); - } - - // include the element itself - processInputValue(processed, values, errors, elt, validate); - - // if a button or submit was clicked last, include its value - if (internalData.lastButtonClicked || elt.tagName === "BUTTON" || - (elt.tagName === "INPUT" && getRawAttribute(elt, "type") === "submit")) { - var button = internalData.lastButtonClicked || elt - var name = getRawAttribute(button, "name") - addValueToValues(name, button.value, formValues) - } - - // include any explicit includes - var includes = findAttributeTargets(elt, "hx-include"); - forEach(includes, function(node) { - processInputValue(processed, values, errors, node, validate); - // if a non-form is included, include any input values within it - if (!matches(node, 'form')) { - forEach(node.querySelectorAll(INPUT_SELECTOR), function (descendant) { - processInputValue(processed, values, errors, descendant, validate); - }) - } - }); - - // form values take precedence, overriding the regular values - values = mergeObjects(values, formValues); - - return {errors:errors, values:values}; - } - - function appendParam(returnStr, name, realValue) { - if (returnStr !== "") { - returnStr += "&"; - } - if (String(realValue) === "[object Object]") { - realValue = JSON.stringify(realValue); - } - var s = encodeURIComponent(realValue); - returnStr += encodeURIComponent(name) + "=" + s; - return returnStr; - } - - function urlEncode(values) { - var returnStr = ""; - for (var name in values) { - if (values.hasOwnProperty(name)) { - var value = values[name]; - if (Array.isArray(value)) { - forEach(value, function(v) { - returnStr = appendParam(returnStr, name, v); - }); - } else { - returnStr = appendParam(returnStr, name, value); - } - } - } - return returnStr; - } - - function makeFormData(values) { - var formData = new FormData(); - for (var name in values) { - if (values.hasOwnProperty(name)) { - var value = values[name]; - if (Array.isArray(value)) { - forEach(value, function(v) { - formData.append(name, v); - }); - } else { - formData.append(name, value); - } - } - } - return formData; - } - - //==================================================================== - // Ajax - //==================================================================== - - /** - * @param {HTMLElement} elt - * @param {HTMLElement} target - * @param {string} prompt - * @returns {Object} // TODO: Define/Improve HtmxHeaderSpecification - */ - function getHeaders(elt, target, prompt) { - var headers = { - "HX-Request" : "true", - "HX-Trigger" : getRawAttribute(elt, "id"), - "HX-Trigger-Name" : getRawAttribute(elt, "name"), - "HX-Target" : getAttributeValue(target, "id"), - "HX-Current-URL" : getDocument().location.href, - } - getValuesForElement(elt, "hx-headers", false, headers) - if (prompt !== undefined) { - headers["HX-Prompt"] = prompt; - } - if (getInternalData(elt).boosted) { - headers["HX-Boosted"] = "true"; - } - return headers; - } - - /** - * filterValues takes an object containing form input values - * and returns a new object that only contains keys that are - * specified by the closest "hx-params" attribute - * @param {Object} inputValues - * @param {HTMLElement} elt - * @returns {Object} - */ - function filterValues(inputValues, elt) { - var paramsValue = getClosestAttributeValue(elt, "hx-params"); - if (paramsValue) { - if (paramsValue === "none") { - return {}; - } else if (paramsValue === "*") { - return inputValues; - } else if(paramsValue.indexOf("not ") === 0) { - forEach(paramsValue.substr(4).split(","), function (name) { - name = name.trim(); - delete inputValues[name]; - }); - return inputValues; - } else { - var newValues = {} - forEach(paramsValue.split(","), function (name) { - name = name.trim(); - newValues[name] = inputValues[name]; - }); - return newValues; - } - } else { - return inputValues; - } - } - - function isAnchorLink(elt) { - return getRawAttribute(elt, 'href') && getRawAttribute(elt, 'href').indexOf("#") >=0 - } - - /** - * - * @param {HTMLElement} elt - * @param {string} swapInfoOverride - * @returns {import("./htmx").HtmxSwapSpecification} - */ - function getSwapSpecification(elt, swapInfoOverride) { - var swapInfo = swapInfoOverride ? swapInfoOverride : getClosestAttributeValue(elt, "hx-swap"); - var swapSpec = { - "swapStyle" : getInternalData(elt).boosted ? 'innerHTML' : htmx.config.defaultSwapStyle, - "swapDelay" : htmx.config.defaultSwapDelay, - "settleDelay" : htmx.config.defaultSettleDelay - } - if (htmx.config.scrollIntoViewOnBoost && getInternalData(elt).boosted && !isAnchorLink(elt)) { - swapSpec["show"] = "top" - } - if (swapInfo) { - var split = splitOnWhitespace(swapInfo); - if (split.length > 0) { - for (var i = 0; i < split.length; i++) { - var value = split[i]; - if (value.indexOf("swap:") === 0) { - swapSpec["swapDelay"] = parseInterval(value.substr(5)); - } else if (value.indexOf("settle:") === 0) { - swapSpec["settleDelay"] = parseInterval(value.substr(7)); - } else if (value.indexOf("transition:") === 0) { - swapSpec["transition"] = value.substr(11) === "true"; - } else if (value.indexOf("ignoreTitle:") === 0) { - swapSpec["ignoreTitle"] = value.substr(12) === "true"; - } else if (value.indexOf("scroll:") === 0) { - var scrollSpec = value.substr(7); - var splitSpec = scrollSpec.split(":"); - var scrollVal = splitSpec.pop(); - var selectorVal = splitSpec.length > 0 ? splitSpec.join(":") : null; - swapSpec["scroll"] = scrollVal; - swapSpec["scrollTarget"] = selectorVal; - } else if (value.indexOf("show:") === 0) { - var showSpec = value.substr(5); - var splitSpec = showSpec.split(":"); - var showVal = splitSpec.pop(); - var selectorVal = splitSpec.length > 0 ? splitSpec.join(":") : null; - swapSpec["show"] = showVal; - swapSpec["showTarget"] = selectorVal; - } else if (value.indexOf("focus-scroll:") === 0) { - var focusScrollVal = value.substr("focus-scroll:".length); - swapSpec["focusScroll"] = focusScrollVal == "true"; - } else if (i == 0) { - swapSpec["swapStyle"] = value; - } else { - logError('Unknown modifier in hx-swap: ' + value); - } - } - } - } - return swapSpec; - } - - function usesFormData(elt) { - return getClosestAttributeValue(elt, "hx-encoding") === "multipart/form-data" || - (matches(elt, "form") && getRawAttribute(elt, 'enctype') === "multipart/form-data"); - } - - function encodeParamsForBody(xhr, elt, filteredParameters) { - var encodedParameters = null; - withExtensions(elt, function (extension) { - if (encodedParameters == null) { - encodedParameters = extension.encodeParameters(xhr, filteredParameters, elt); - } - }); - if (encodedParameters != null) { - return encodedParameters; - } else { - if (usesFormData(elt)) { - return makeFormData(filteredParameters); - } else { - return urlEncode(filteredParameters); - } - } - } - - /** - * - * @param {Element} target - * @returns {import("./htmx").HtmxSettleInfo} - */ - function makeSettleInfo(target) { - return {tasks: [], elts: [target]}; - } - - function updateScrollState(content, swapSpec) { - var first = content[0]; - var last = content[content.length - 1]; - if (swapSpec.scroll) { - var target = null; - if (swapSpec.scrollTarget) { - target = querySelectorExt(first, swapSpec.scrollTarget); - } - if (swapSpec.scroll === "top" && (first || target)) { - target = target || first; - target.scrollTop = 0; - } - if (swapSpec.scroll === "bottom" && (last || target)) { - target = target || last; - target.scrollTop = target.scrollHeight; - } - } - if (swapSpec.show) { - var target = null; - if (swapSpec.showTarget) { - var targetStr = swapSpec.showTarget; - if (swapSpec.showTarget === "window") { - targetStr = "body"; - } - target = querySelectorExt(first, targetStr); - } - if (swapSpec.show === "top" && (first || target)) { - target = target || first; - target.scrollIntoView({block:'start', behavior: htmx.config.scrollBehavior}); - } - if (swapSpec.show === "bottom" && (last || target)) { - target = target || last; - target.scrollIntoView({block:'end', behavior: htmx.config.scrollBehavior}); - } - } - } - - /** - * @param {HTMLElement} elt - * @param {string} attr - * @param {boolean=} evalAsDefault - * @param {Object=} values - * @returns {Object} - */ - function getValuesForElement(elt, attr, evalAsDefault, values) { - if (values == null) { - values = {}; - } - if (elt == null) { - return values; - } - var attributeValue = getAttributeValue(elt, attr); - if (attributeValue) { - var str = attributeValue.trim(); - var evaluateValue = evalAsDefault; - if (str === "unset") { - return null; - } - if (str.indexOf("javascript:") === 0) { - str = str.substr(11); - evaluateValue = true; - } else if (str.indexOf("js:") === 0) { - str = str.substr(3); - evaluateValue = true; - } - if (str.indexOf('{') !== 0) { - str = "{" + str + "}"; - } - var varsValues; - if (evaluateValue) { - varsValues = maybeEval(elt,function () {return Function("return (" + str + ")")();}, {}); - } else { - varsValues = parseJSON(str); - } - for (var key in varsValues) { - if (varsValues.hasOwnProperty(key)) { - if (values[key] == null) { - values[key] = varsValues[key]; - } - } - } - } - return getValuesForElement(parentElt(elt), attr, evalAsDefault, values); - } - - function maybeEval(elt, toEval, defaultVal) { - if (htmx.config.allowEval) { - return toEval(); - } else { - triggerErrorEvent(elt, 'htmx:evalDisallowedError'); - return defaultVal; - } - } - - /** - * @param {HTMLElement} elt - * @param {*} expressionVars - * @returns - */ - function getHXVarsForElement(elt, expressionVars) { - return getValuesForElement(elt, "hx-vars", true, expressionVars); - } - - /** - * @param {HTMLElement} elt - * @param {*} expressionVars - * @returns - */ - function getHXValsForElement(elt, expressionVars) { - return getValuesForElement(elt, "hx-vals", false, expressionVars); - } - - /** - * @param {HTMLElement} elt - * @returns {Object} - */ - function getExpressionVars(elt) { - return mergeObjects(getHXVarsForElement(elt), getHXValsForElement(elt)); - } - - function safelySetHeaderValue(xhr, header, headerValue) { - if (headerValue !== null) { - try { - xhr.setRequestHeader(header, headerValue); - } catch (e) { - // On an exception, try to set the header URI encoded instead - xhr.setRequestHeader(header, encodeURIComponent(headerValue)); - xhr.setRequestHeader(header + "-URI-AutoEncoded", "true"); - } - } - } - - function getPathFromResponse(xhr) { - // NB: IE11 does not support this stuff - if (xhr.responseURL && typeof(URL) !== "undefined") { - try { - var url = new URL(xhr.responseURL); - return url.pathname + url.search; - } catch (e) { - triggerErrorEvent(getDocument().body, "htmx:badResponseUrl", {url: xhr.responseURL}); - } - } - } - - function hasHeader(xhr, regexp) { - return regexp.test(xhr.getAllResponseHeaders()) - } - - function ajaxHelper(verb, path, context) { - verb = verb.toLowerCase(); - if (context) { - if (context instanceof Element || isType(context, 'String')) { - return issueAjaxRequest(verb, path, null, null, { - targetOverride: resolveTarget(context), - returnPromise: true - }); - } else { - return issueAjaxRequest(verb, path, resolveTarget(context.source), context.event, - { - handler : context.handler, - headers : context.headers, - values : context.values, - targetOverride: resolveTarget(context.target), - swapOverride: context.swap, - select: context.select, - returnPromise: true - }); - } - } else { - return issueAjaxRequest(verb, path, null, null, { - returnPromise: true - }); - } - } - - function hierarchyForElt(elt) { - var arr = []; - while (elt) { - arr.push(elt); - elt = elt.parentElement; - } - return arr; - } - - function verifyPath(elt, path, requestConfig) { - var sameHost - var url - if (typeof URL === "function") { - url = new URL(path, document.location.href); - var origin = document.location.origin; - sameHost = origin === url.origin; - } else { - // IE11 doesn't support URL - url = path - sameHost = startsWith(path, document.location.origin) - } - - if (htmx.config.selfRequestsOnly) { - if (!sameHost) { - return false; - } - } - return triggerEvent(elt, "htmx:validateUrl", mergeObjects({url: url, sameHost: sameHost}, requestConfig)); - } - - function issueAjaxRequest(verb, path, elt, event, etc, confirmed) { - var resolve = null; - var reject = null; - etc = etc != null ? etc : {}; - if(etc.returnPromise && typeof Promise !== "undefined"){ - var promise = new Promise(function (_resolve, _reject) { - resolve = _resolve; - reject = _reject; - }); - } - if(elt == null) { - elt = getDocument().body; - } - var responseHandler = etc.handler || handleAjaxResponse; - var select = etc.select || null; - - if (!bodyContains(elt)) { - // do not issue requests for elements removed from the DOM - maybeCall(resolve); - return promise; - } - var target = etc.targetOverride || getTarget(elt); - if (target == null || target == DUMMY_ELT) { - triggerErrorEvent(elt, 'htmx:targetError', {target: getAttributeValue(elt, "hx-target")}); - maybeCall(reject); - return promise; - } - - var eltData = getInternalData(elt); - var submitter = eltData.lastButtonClicked; - - if (submitter) { - var buttonPath = getRawAttribute(submitter, "formaction"); - if (buttonPath != null) { - path = buttonPath; - } - - var buttonVerb = getRawAttribute(submitter, "formmethod") - if (buttonVerb != null) { - // ignore buttons with formmethod="dialog" - if (buttonVerb.toLowerCase() !== "dialog") { - verb = buttonVerb; - } - } - } - - var confirmQuestion = getClosestAttributeValue(elt, "hx-confirm"); - // allow event-based confirmation w/ a callback - if (confirmed === undefined) { - var issueRequest = function(skipConfirmation) { - return issueAjaxRequest(verb, path, elt, event, etc, !!skipConfirmation); - } - var confirmDetails = {target: target, elt: elt, path: path, verb: verb, triggeringEvent: event, etc: etc, issueRequest: issueRequest, question: confirmQuestion}; - if (triggerEvent(elt, 'htmx:confirm', confirmDetails) === false) { - maybeCall(resolve); - return promise; - } - } - - var syncElt = elt; - var syncStrategy = getClosestAttributeValue(elt, "hx-sync"); - var queueStrategy = null; - var abortable = false; - if (syncStrategy) { - var syncStrings = syncStrategy.split(":"); - var selector = syncStrings[0].trim(); - if (selector === "this") { - syncElt = findThisElement(elt, 'hx-sync'); - } else { - syncElt = querySelectorExt(elt, selector); - } - // default to the drop strategy - syncStrategy = (syncStrings[1] || 'drop').trim(); - eltData = getInternalData(syncElt); - if (syncStrategy === "drop" && eltData.xhr && eltData.abortable !== true) { - maybeCall(resolve); - return promise; - } else if (syncStrategy === "abort") { - if (eltData.xhr) { - maybeCall(resolve); - return promise; - } else { - abortable = true; - } - } else if (syncStrategy === "replace") { - triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue - } else if (syncStrategy.indexOf("queue") === 0) { - var queueStrArray = syncStrategy.split(" "); - queueStrategy = (queueStrArray[1] || "last").trim(); - } - } - - if (eltData.xhr) { - if (eltData.abortable) { - triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue - } else { - if(queueStrategy == null){ - if (event) { - var eventData = getInternalData(event); - if (eventData && eventData.triggerSpec && eventData.triggerSpec.queue) { - queueStrategy = eventData.triggerSpec.queue; - } - } - if (queueStrategy == null) { - queueStrategy = "last"; - } - } - if (eltData.queuedRequests == null) { - eltData.queuedRequests = []; - } - if (queueStrategy === "first" && eltData.queuedRequests.length === 0) { - eltData.queuedRequests.push(function () { - issueAjaxRequest(verb, path, elt, event, etc) - }); - } else if (queueStrategy === "all") { - eltData.queuedRequests.push(function () { - issueAjaxRequest(verb, path, elt, event, etc) - }); - } else if (queueStrategy === "last") { - eltData.queuedRequests = []; // dump existing queue - eltData.queuedRequests.push(function () { - issueAjaxRequest(verb, path, elt, event, etc) - }); - } - maybeCall(resolve); - return promise; - } - } - - var xhr = new XMLHttpRequest(); - eltData.xhr = xhr; - eltData.abortable = abortable; - var endRequestLock = function(){ - eltData.xhr = null; - eltData.abortable = false; - if (eltData.queuedRequests != null && - eltData.queuedRequests.length > 0) { - var queuedRequest = eltData.queuedRequests.shift(); - queuedRequest(); - } - } - var promptQuestion = getClosestAttributeValue(elt, "hx-prompt"); - if (promptQuestion) { - var promptResponse = prompt(promptQuestion); - // prompt returns null if cancelled and empty string if accepted with no entry - if (promptResponse === null || - !triggerEvent(elt, 'htmx:prompt', {prompt: promptResponse, target:target})) { - maybeCall(resolve); - endRequestLock(); - return promise; - } - } - - if (confirmQuestion && !confirmed) { - if(!confirm(confirmQuestion)) { - maybeCall(resolve); - endRequestLock() - return promise; - } - } - - - var headers = getHeaders(elt, target, promptResponse); - - if (verb !== 'get' && !usesFormData(elt)) { - headers['Content-Type'] = 'application/x-www-form-urlencoded'; - } - - if (etc.headers) { - headers = mergeObjects(headers, etc.headers); - } - var results = getInputValues(elt, verb); - var errors = results.errors; - var rawParameters = results.values; - if (etc.values) { - rawParameters = mergeObjects(rawParameters, etc.values); - } - var expressionVars = getExpressionVars(elt); - var allParameters = mergeObjects(rawParameters, expressionVars); - var filteredParameters = filterValues(allParameters, elt); - - if (htmx.config.getCacheBusterParam && verb === 'get') { - filteredParameters['org.htmx.cache-buster'] = getRawAttribute(target, "id") || "true"; - } - - // behavior of anchors w/ empty href is to use the current URL - if (path == null || path === "") { - path = getDocument().location.href; - } - - - var requestAttrValues = getValuesForElement(elt, 'hx-request'); - - var eltIsBoosted = getInternalData(elt).boosted; - - var useUrlParams = htmx.config.methodsThatUseUrlParams.indexOf(verb) >= 0 - - var requestConfig = { - boosted: eltIsBoosted, - useUrlParams: useUrlParams, - parameters: filteredParameters, - unfilteredParameters: allParameters, - headers:headers, - target:target, - verb:verb, - errors:errors, - withCredentials: etc.credentials || requestAttrValues.credentials || htmx.config.withCredentials, - timeout: etc.timeout || requestAttrValues.timeout || htmx.config.timeout, - path:path, - triggeringEvent:event - }; - - if(!triggerEvent(elt, 'htmx:configRequest', requestConfig)){ - maybeCall(resolve); - endRequestLock(); - return promise; - } - - // copy out in case the object was overwritten - path = requestConfig.path; - verb = requestConfig.verb; - headers = requestConfig.headers; - filteredParameters = requestConfig.parameters; - errors = requestConfig.errors; - useUrlParams = requestConfig.useUrlParams; - - if(errors && errors.length > 0){ - triggerEvent(elt, 'htmx:validation:halted', requestConfig) - maybeCall(resolve); - endRequestLock(); - return promise; - } - - var splitPath = path.split("#"); - var pathNoAnchor = splitPath[0]; - var anchor = splitPath[1]; - - var finalPath = path - if (useUrlParams) { - finalPath = pathNoAnchor; - var values = Object.keys(filteredParameters).length !== 0; - if (values) { - if (finalPath.indexOf("?") < 0) { - finalPath += "?"; - } else { - finalPath += "&"; - } - finalPath += urlEncode(filteredParameters); - if (anchor) { - finalPath += "#" + anchor; - } - } - } - - if (!verifyPath(elt, finalPath, requestConfig)) { - triggerErrorEvent(elt, 'htmx:invalidPath', requestConfig) - maybeCall(reject); - return promise; - }; - - xhr.open(verb.toUpperCase(), finalPath, true); - xhr.overrideMimeType("text/html"); - xhr.withCredentials = requestConfig.withCredentials; - xhr.timeout = requestConfig.timeout; - - // request headers - if (requestAttrValues.noHeaders) { - // ignore all headers - } else { - for (var header in headers) { - if (headers.hasOwnProperty(header)) { - var headerValue = headers[header]; - safelySetHeaderValue(xhr, header, headerValue); - } - } - } - - var responseInfo = { - xhr: xhr, target: target, requestConfig: requestConfig, etc: etc, boosted: eltIsBoosted, select: select, - pathInfo: { - requestPath: path, - finalRequestPath: finalPath, - anchor: anchor - } - }; - - xhr.onload = function () { - try { - var hierarchy = hierarchyForElt(elt); - responseInfo.pathInfo.responsePath = getPathFromResponse(xhr); - responseHandler(elt, responseInfo); - removeRequestIndicators(indicators, disableElts); - triggerEvent(elt, 'htmx:afterRequest', responseInfo); - triggerEvent(elt, 'htmx:afterOnLoad', responseInfo); - // if the body no longer contains the element, trigger the event on the closest parent - // remaining in the DOM - if (!bodyContains(elt)) { - var secondaryTriggerElt = null; - while (hierarchy.length > 0 && secondaryTriggerElt == null) { - var parentEltInHierarchy = hierarchy.shift(); - if (bodyContains(parentEltInHierarchy)) { - secondaryTriggerElt = parentEltInHierarchy; - } - } - if (secondaryTriggerElt) { - triggerEvent(secondaryTriggerElt, 'htmx:afterRequest', responseInfo); - triggerEvent(secondaryTriggerElt, 'htmx:afterOnLoad', responseInfo); - } - } - maybeCall(resolve); - endRequestLock(); - } catch (e) { - triggerErrorEvent(elt, 'htmx:onLoadError', mergeObjects({error:e}, responseInfo)); - throw e; - } - } - xhr.onerror = function () { - removeRequestIndicators(indicators, disableElts); - triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); - triggerErrorEvent(elt, 'htmx:sendError', responseInfo); - maybeCall(reject); - endRequestLock(); - } - xhr.onabort = function() { - removeRequestIndicators(indicators, disableElts); - triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); - triggerErrorEvent(elt, 'htmx:sendAbort', responseInfo); - maybeCall(reject); - endRequestLock(); - } - xhr.ontimeout = function() { - removeRequestIndicators(indicators, disableElts); - triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); - triggerErrorEvent(elt, 'htmx:timeout', responseInfo); - maybeCall(reject); - endRequestLock(); - } - if(!triggerEvent(elt, 'htmx:beforeRequest', responseInfo)){ - maybeCall(resolve); - endRequestLock() - return promise - } - var indicators = addRequestIndicatorClasses(elt); - var disableElts = disableElements(elt); - - forEach(['loadstart', 'loadend', 'progress', 'abort'], function(eventName) { - forEach([xhr, xhr.upload], function (target) { - target.addEventListener(eventName, function(event){ - triggerEvent(elt, "htmx:xhr:" + eventName, { - lengthComputable:event.lengthComputable, - loaded:event.loaded, - total:event.total - }); - }) - }); - }); - triggerEvent(elt, 'htmx:beforeSend', responseInfo); - var params = useUrlParams ? null : encodeParamsForBody(xhr, elt, filteredParameters) - xhr.send(params); - return promise; - } - - function determineHistoryUpdates(elt, responseInfo) { - - var xhr = responseInfo.xhr; - - //=========================================== - // First consult response headers - //=========================================== - var pathFromHeaders = null; - var typeFromHeaders = null; - if (hasHeader(xhr,/HX-Push:/i)) { - pathFromHeaders = xhr.getResponseHeader("HX-Push"); - typeFromHeaders = "push"; - } else if (hasHeader(xhr,/HX-Push-Url:/i)) { - pathFromHeaders = xhr.getResponseHeader("HX-Push-Url"); - typeFromHeaders = "push"; - } else if (hasHeader(xhr,/HX-Replace-Url:/i)) { - pathFromHeaders = xhr.getResponseHeader("HX-Replace-Url"); - typeFromHeaders = "replace"; - } - - // if there was a response header, that has priority - if (pathFromHeaders) { - if (pathFromHeaders === "false") { - return {} - } else { - return { - type: typeFromHeaders, - path : pathFromHeaders - } - } - } - - //=========================================== - // Next resolve via DOM values - //=========================================== - var requestPath = responseInfo.pathInfo.finalRequestPath; - var responsePath = responseInfo.pathInfo.responsePath; - - var pushUrl = getClosestAttributeValue(elt, "hx-push-url"); - var replaceUrl = getClosestAttributeValue(elt, "hx-replace-url"); - var elementIsBoosted = getInternalData(elt).boosted; - - var saveType = null; - var path = null; - - if (pushUrl) { - saveType = "push"; - path = pushUrl; - } else if (replaceUrl) { - saveType = "replace"; - path = replaceUrl; - } else if (elementIsBoosted) { - saveType = "push"; - path = responsePath || requestPath; // if there is no response path, go with the original request path - } - - if (path) { - // false indicates no push, return empty object - if (path === "false") { - return {}; - } - - // true indicates we want to follow wherever the server ended up sending us - if (path === "true") { - path = responsePath || requestPath; // if there is no response path, go with the original request path - } - - // restore any anchor associated with the request - if (responseInfo.pathInfo.anchor && - path.indexOf("#") === -1) { - path = path + "#" + responseInfo.pathInfo.anchor; - } - - return { - type:saveType, - path: path - } - } else { - return {}; - } - } - - function handleAjaxResponse(elt, responseInfo) { - var xhr = responseInfo.xhr; - var target = responseInfo.target; - var etc = responseInfo.etc; - var requestConfig = responseInfo.requestConfig; - var select = responseInfo.select; - - if (!triggerEvent(elt, 'htmx:beforeOnLoad', responseInfo)) return; - - if (hasHeader(xhr, /HX-Trigger:/i)) { - handleTrigger(xhr, "HX-Trigger", elt); - } - - if (hasHeader(xhr, /HX-Location:/i)) { - saveCurrentPageToHistory(); - var redirectPath = xhr.getResponseHeader("HX-Location"); - var swapSpec; - if (redirectPath.indexOf("{") === 0) { - swapSpec = parseJSON(redirectPath); - // what's the best way to throw an error if the user didn't include this - redirectPath = swapSpec['path']; - delete swapSpec['path']; - } - ajaxHelper('GET', redirectPath, swapSpec).then(function(){ - pushUrlIntoHistory(redirectPath); - }); - return; - } - - var shouldRefresh = hasHeader(xhr, /HX-Refresh:/i) && "true" === xhr.getResponseHeader("HX-Refresh"); - - if (hasHeader(xhr, /HX-Redirect:/i)) { - location.href = xhr.getResponseHeader("HX-Redirect"); - shouldRefresh && location.reload(); - return; - } - - if (shouldRefresh) { - location.reload(); - return; - } - - if (hasHeader(xhr,/HX-Retarget:/i)) { - if (xhr.getResponseHeader("HX-Retarget") === "this") { - responseInfo.target = elt; - } else { - responseInfo.target = querySelectorExt(elt, xhr.getResponseHeader("HX-Retarget")); - } - } - - var historyUpdate = determineHistoryUpdates(elt, responseInfo); - - // by default htmx only swaps on 200 return codes and does not swap - // on 204 'No Content' - // this can be ovverriden by responding to the htmx:beforeSwap event and - // overriding the detail.shouldSwap property - var shouldSwap = xhr.status >= 200 && xhr.status < 400 && xhr.status !== 204; - var serverResponse = xhr.response; - var isError = xhr.status >= 400; - var ignoreTitle = htmx.config.ignoreTitle - var beforeSwapDetails = mergeObjects({shouldSwap: shouldSwap, serverResponse:serverResponse, isError:isError, ignoreTitle:ignoreTitle }, responseInfo); - if (!triggerEvent(target, 'htmx:beforeSwap', beforeSwapDetails)) return; - - target = beforeSwapDetails.target; // allow re-targeting - serverResponse = beforeSwapDetails.serverResponse; // allow updating content - isError = beforeSwapDetails.isError; // allow updating error - ignoreTitle = beforeSwapDetails.ignoreTitle; // allow updating ignoring title - - responseInfo.target = target; // Make updated target available to response events - responseInfo.failed = isError; // Make failed property available to response events - responseInfo.successful = !isError; // Make successful property available to response events - - if (beforeSwapDetails.shouldSwap) { - if (xhr.status === 286) { - cancelPolling(elt); - } - - withExtensions(elt, function (extension) { - serverResponse = extension.transformResponse(serverResponse, xhr, elt); - }); - - // Save current page if there will be a history update - if (historyUpdate.type) { - saveCurrentPageToHistory(); - } - - var swapOverride = etc.swapOverride; - if (hasHeader(xhr,/HX-Reswap:/i)) { - swapOverride = xhr.getResponseHeader("HX-Reswap"); - } - var swapSpec = getSwapSpecification(elt, swapOverride); - - if (swapSpec.hasOwnProperty('ignoreTitle')) { - ignoreTitle = swapSpec.ignoreTitle; - } - - target.classList.add(htmx.config.swappingClass); - - // optional transition API promise callbacks - var settleResolve = null; - var settleReject = null; - - var doSwap = function () { - try { - var activeElt = document.activeElement; - var selectionInfo = {}; - try { - selectionInfo = { - elt: activeElt, - // @ts-ignore - start: activeElt ? activeElt.selectionStart : null, - // @ts-ignore - end: activeElt ? activeElt.selectionEnd : null - }; - } catch (e) { - // safari issue - see https://github.com/microsoft/playwright/issues/5894 - } - - var selectOverride; - if (select) { - selectOverride = select; - } - - if (hasHeader(xhr, /HX-Reselect:/i)) { - selectOverride = xhr.getResponseHeader("HX-Reselect"); - } - - // if we need to save history, do so, before swapping so that relative resources have the correct base URL - if (historyUpdate.type) { - triggerEvent(getDocument().body, 'htmx:beforeHistoryUpdate', mergeObjects({ history: historyUpdate }, responseInfo)); - if (historyUpdate.type === "push") { - pushUrlIntoHistory(historyUpdate.path); - triggerEvent(getDocument().body, 'htmx:pushedIntoHistory', {path: historyUpdate.path}); - } else { - replaceUrlInHistory(historyUpdate.path); - triggerEvent(getDocument().body, 'htmx:replacedInHistory', {path: historyUpdate.path}); - } - } - - var settleInfo = makeSettleInfo(target); - selectAndSwap(swapSpec.swapStyle, target, elt, serverResponse, settleInfo, selectOverride); - - if (selectionInfo.elt && - !bodyContains(selectionInfo.elt) && - getRawAttribute(selectionInfo.elt, "id")) { - var newActiveElt = document.getElementById(getRawAttribute(selectionInfo.elt, "id")); - var focusOptions = { preventScroll: swapSpec.focusScroll !== undefined ? !swapSpec.focusScroll : !htmx.config.defaultFocusScroll }; - if (newActiveElt) { - // @ts-ignore - if (selectionInfo.start && newActiveElt.setSelectionRange) { - // @ts-ignore - try { - newActiveElt.setSelectionRange(selectionInfo.start, selectionInfo.end); - } catch (e) { - // the setSelectionRange method is present on fields that don't support it, so just let this fail - } - } - newActiveElt.focus(focusOptions); - } - } - - target.classList.remove(htmx.config.swappingClass); - forEach(settleInfo.elts, function (elt) { - if (elt.classList) { - elt.classList.add(htmx.config.settlingClass); - } - triggerEvent(elt, 'htmx:afterSwap', responseInfo); - }); - - if (hasHeader(xhr, /HX-Trigger-After-Swap:/i)) { - var finalElt = elt; - if (!bodyContains(elt)) { - finalElt = getDocument().body; - } - handleTrigger(xhr, "HX-Trigger-After-Swap", finalElt); - } - - var doSettle = function () { - forEach(settleInfo.tasks, function (task) { - task.call(); - }); - forEach(settleInfo.elts, function (elt) { - if (elt.classList) { - elt.classList.remove(htmx.config.settlingClass); - } - triggerEvent(elt, 'htmx:afterSettle', responseInfo); - }); - - if (responseInfo.pathInfo.anchor) { - var anchorTarget = getDocument().getElementById(responseInfo.pathInfo.anchor); - if(anchorTarget) { - anchorTarget.scrollIntoView({block:'start', behavior: "auto"}); - } - } - - if(settleInfo.title && !ignoreTitle) { - var titleElt = find("title"); - if(titleElt) { - titleElt.innerHTML = settleInfo.title; - } else { - window.document.title = settleInfo.title; - } - } - - updateScrollState(settleInfo.elts, swapSpec); - - if (hasHeader(xhr, /HX-Trigger-After-Settle:/i)) { - var finalElt = elt; - if (!bodyContains(elt)) { - finalElt = getDocument().body; - } - handleTrigger(xhr, "HX-Trigger-After-Settle", finalElt); - } - maybeCall(settleResolve); - } - - if (swapSpec.settleDelay > 0) { - setTimeout(doSettle, swapSpec.settleDelay) - } else { - doSettle(); - } - } catch (e) { - triggerErrorEvent(elt, 'htmx:swapError', responseInfo); - maybeCall(settleReject); - throw e; - } - }; - - var shouldTransition = htmx.config.globalViewTransitions - if(swapSpec.hasOwnProperty('transition')){ - shouldTransition = swapSpec.transition; - } - - if(shouldTransition && - triggerEvent(elt, 'htmx:beforeTransition', responseInfo) && - typeof Promise !== "undefined" && document.startViewTransition){ - var settlePromise = new Promise(function (_resolve, _reject) { - settleResolve = _resolve; - settleReject = _reject; - }); - // wrap the original doSwap() in a call to startViewTransition() - var innerDoSwap = doSwap; - doSwap = function() { - document.startViewTransition(function () { - innerDoSwap(); - return settlePromise; - }); - } - } - - - if (swapSpec.swapDelay > 0) { - setTimeout(doSwap, swapSpec.swapDelay) - } else { - doSwap(); - } - } - if (isError) { - triggerErrorEvent(elt, 'htmx:responseError', mergeObjects({error: "Response Status Error Code " + xhr.status + " from " + responseInfo.pathInfo.requestPath}, responseInfo)); - } - } - - //==================================================================== - // Extensions API - //==================================================================== - - /** @type {Object} */ - var extensions = {}; - - /** - * extensionBase defines the default functions for all extensions. - * @returns {import("./htmx").HtmxExtension} - */ - function extensionBase() { - return { - init: function(api) {return null;}, - onEvent : function(name, evt) {return true;}, - transformResponse : function(text, xhr, elt) {return text;}, - isInlineSwap : function(swapStyle) {return false;}, - handleSwap : function(swapStyle, target, fragment, settleInfo) {return false;}, - encodeParameters : function(xhr, parameters, elt) {return null;} - } - } - - /** - * defineExtension initializes the extension and adds it to the htmx registry - * - * @param {string} name - * @param {import("./htmx").HtmxExtension} extension - */ - function defineExtension(name, extension) { - if(extension.init) { - extension.init(internalAPI) - } - extensions[name] = mergeObjects(extensionBase(), extension); - } - - /** - * removeExtension removes an extension from the htmx registry - * - * @param {string} name - */ - function removeExtension(name) { - delete extensions[name]; - } - - /** - * getExtensions searches up the DOM tree to return all extensions that can be applied to a given element - * - * @param {HTMLElement} elt - * @param {import("./htmx").HtmxExtension[]=} extensionsToReturn - * @param {import("./htmx").HtmxExtension[]=} extensionsToIgnore - */ - function getExtensions(elt, extensionsToReturn, extensionsToIgnore) { - - if (elt == undefined) { - return extensionsToReturn; - } - if (extensionsToReturn == undefined) { - extensionsToReturn = []; - } - if (extensionsToIgnore == undefined) { - extensionsToIgnore = []; - } - var extensionsForElement = getAttributeValue(elt, "hx-ext"); - if (extensionsForElement) { - forEach(extensionsForElement.split(","), function(extensionName){ - extensionName = extensionName.replace(/ /g, ''); - if (extensionName.slice(0, 7) == "ignore:") { - extensionsToIgnore.push(extensionName.slice(7)); - return; - } - if (extensionsToIgnore.indexOf(extensionName) < 0) { - var extension = extensions[extensionName]; - if (extension && extensionsToReturn.indexOf(extension) < 0) { - extensionsToReturn.push(extension); - } - } - }); - } - return getExtensions(parentElt(elt), extensionsToReturn, extensionsToIgnore); - } - - //==================================================================== - // Initialization - //==================================================================== - var isReady = false - getDocument().addEventListener('DOMContentLoaded', function() { - isReady = true - }) - - /** - * Execute a function now if DOMContentLoaded has fired, otherwise listen for it. - * - * This function uses isReady because there is no realiable way to ask the browswer whether - * the DOMContentLoaded event has already been fired; there's a gap between DOMContentLoaded - * firing and readystate=complete. - */ - function ready(fn) { - // Checking readyState here is a failsafe in case the htmx script tag entered the DOM by - // some means other than the initial page load. - if (isReady || getDocument().readyState === 'complete') { - fn(); - } else { - getDocument().addEventListener('DOMContentLoaded', fn); - } - } - - function insertIndicatorStyles() { - if (htmx.config.includeIndicatorStyles !== false) { - getDocument().head.insertAdjacentHTML("beforeend", - ""); - } - } - - function getMetaConfig() { - var element = getDocument().querySelector('meta[name="htmx-config"]'); - if (element) { - // @ts-ignore - return parseJSON(element.content); - } else { - return null; - } - } - - function mergeMetaConfig() { - var metaConfig = getMetaConfig(); - if (metaConfig) { - htmx.config = mergeObjects(htmx.config , metaConfig) - } - } - - // initialize the document - ready(function () { - mergeMetaConfig(); - insertIndicatorStyles(); - var body = getDocument().body; - processNode(body); - var restoredElts = getDocument().querySelectorAll( - "[hx-trigger='restored'],[data-hx-trigger='restored']" - ); - body.addEventListener("htmx:abort", function (evt) { - var target = evt.target; - var internalData = getInternalData(target); - if (internalData && internalData.xhr) { - internalData.xhr.abort(); - } - }); - /** @type {(ev: PopStateEvent) => any} */ - const originalPopstate = window.onpopstate ? window.onpopstate.bind(window) : null; - /** @type {(ev: PopStateEvent) => any} */ - window.onpopstate = function (event) { - if (event.state && event.state.htmx) { - restoreHistory(); - forEach(restoredElts, function(elt){ - triggerEvent(elt, 'htmx:restored', { - 'document': getDocument(), - 'triggerEvent': triggerEvent - }); - }); - } else { - if (originalPopstate) { - originalPopstate(event); - } - } - }; - setTimeout(function () { - triggerEvent(body, 'htmx:load', {}); // give ready handlers a chance to load up before firing this event - body = null; // kill reference for gc - }, 0); - }) - - return htmx; - } -)() -})); diff --git a/static/images/github-pat-tutorial/1.png b/static/images/github-pat-tutorial/1.png new file mode 100644 index 0000000000000000000000000000000000000000..82625c33e8f8a84345cd74b339dd2c0aec0d4bee GIT binary patch literal 42801 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 Gg8v($!;A_5 literal 0 HcmV?d00001 diff --git a/static/images/github-pat-tutorial/2.png b/static/images/github-pat-tutorial/2.png new file mode 100644 index 0000000000000000000000000000000000000000..d46ff0399da1fd2460c7c167a3c3ac09a24ca5bf GIT binary patch literal 6456 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 literal 0 HcmV?d00001 diff --git a/static/images/github-webhook-tutorial/1.png b/static/images/github-webhook-tutorial/1.png new file mode 100644 index 0000000000000000000000000000000000000000..b114c6bab89ddd4547f230601c56b07007e2a360 GIT binary patch literal 66034 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 dialog { + overflow: hidden; position: absolute; border-radius: 0.4rem; border: 1px solid #E6E6E6; @@ -2293,7 +2294,7 @@ label { box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); } -.notifications-list > div { +.notifications-list > * { display: flex; align-items: center; justify-content: space-between; @@ -2301,36 +2302,53 @@ label { padding: 1.6rem; min-height: 7.4rem; box-sizing: border-box; + text-decoration: none; +} + +.notifications-list > :first-child { + border-top-left-radius: 0.6rem; + border-top-right-radius: 0.6rem; +} + +.notifications-list > :last-child { + border-bottom-right-radius: 0.6rem; + border-bottom-left-radius: 0.6rem; +} + +.notifications-list > a:hover { + background-color: #FBFBFB; + transition: background-color 0.06s ease-in; } -.notifications-list > div:last-of-type { +.notifications-list > *:last-of-type { border-bottom: none; } -.notifications-list > div > div { +.notifications-list > * > div { display: flex; + text-decoration: none; } -.notifications-list > div > div > svg { +.notifications-list > * > div > svg { width: 2.2rem; height: 2.2rem; margin-right: 1.6rem; color: #595959; } -.notifications-list > div > div > div { +.notifications-list > * > div > div { display: flex; flex-direction: column; justify-content: center; row-gap: 0.5rem; } -.notifications-list > div > div > div > span { +.notifications-list > * > div > div > span { color: #D0D0D0; font-size: 1.4rem; } -.notifications-list > div > div > div > span:first-of-type { +.notifications-list > * > div > div > span:first-of-type { color: #606060; font-size: 1.4rem; font-weight: 500; @@ -2504,6 +2522,7 @@ label { } .slack-container p { + margin-top: 0; font-size: 1.4rem; color: #606060; } @@ -2528,6 +2547,11 @@ label { .slack-tutorial, .slack-tutorial-app { display: none; margin-top: 0.8rem; + margin-bottom: 3.6rem; +} + +.slack-tutorial :last-child { + margin: 0; } .slack-tutorial--visible, .slack-tutorial-app--visible { @@ -2945,22 +2969,51 @@ label { color: #464646; margin: 0; } + +.settings-users-header > div { + display: flex; + align-items: center; +} -.settings-users-header a { +.settings-users-header > a { border-radius: 0.5rem; border: 1px solid #E6E6E6; background: #FBFBFB; box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); display: flex; + padding: 0; } - -.settings-users-header a svg { + +.settings-users-header > a svg, .settings-users-header button svg { width: 1.2rem; height: 1.2rem; padding: 0.4rem; color: #595959; } +.settings-users-header dialog { + z-index: 36; +} + +.settings-users-header__git { + display: flex; + align-items: center; + margin-right: 1.2rem; +} + +.settings-users-header__git svg { + width: 1.2rem; + height: 1.2rem; + margin-right: 0.6rem; + color: #1AD47B; +} + +.settings-users-header__git a { + color: #D0D0D0; + font-size: 1.2rem; + text-decoration: none; +} + .users-container { border: 1px solid #e6e6e6; border-radius: 0.6rem; @@ -3068,6 +3121,292 @@ label { color: #FFF; border: none; } + +.modal.secrets-modal { + width: 36rem; +} + +.modal.secrets-modal { + border-radius: 1.2rem; + border: 1px solid #E6E6E6; + background: #FFF; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.10); + padding: 2.8rem; +} + +.modal.secrets-modal::backdrop { + background: rgba(0, 0, 0, 0.29); + backdrop-filter: blur(1.5px); +} + +.modal.secrets-modal > div { + display: flex; + justify-content: space-between; +} + +.modal.secrets-modal > div button { + display: flex; + align-items: center; + padding: 0; + background-color: transparent; + border: none; +} + +.modal.secrets-modal > div svg { + width: 1.8rem; + height: 1.8rem; + color: #969696; +} + +.modal.secrets-modal span { + color: #2D2D2D; + font-size: 1.8rem; + font-weight: 600; +} + +.modal.secrets-modal > form { + margin-top: 2.8rem; +} + +.modal.secrets-modal > form button { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 1rem 1.4rem; + border-radius: 0.4rem; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); + font-weight: 600; + gap: 1rem; +} + +.modal.secrets-modal > form > div:last-of-type > button:first-of-type { + background: #464646; + color: #FFF; + border: none; +} + +.modal.secrets-modal > form button:nth-of-type(2) { + border: 1px solid #E6E6E6; + color: #464646; + background-color: white; +} + +.secrets-modal form > div:first-of-type { + display: flex; + flex-direction: column; + margin-bottom: 4.6rem; +} + +.secrets-modal form > div:first-of-type div { + margin-top: 1.0rem; + display: flex; + gap: 1.0rem; +} + +.secrets-modal form > div:first-of-type button { + display: flex; + border-radius: 0.5rem; + border: 1px solid #F3F3F3; + background-color: white; + color: #444444; + padding: 1.0rem; + align-self: flex-start; + transition: transform 200ms, background-color 100ms; + width: auto; +} + + +.secrets-modal form > div:first-of-type button:hover { + background-color: #FAFAFA; +} + +.secrets-modal form > div:first-of-type button svg:nth-of-type(2) { + display: none; +} + +.secrets-modal form > div:first-of-type button.copy-success svg:first-of-type { + display: none; +} + +.secrets-modal form > div:first-of-type button.copy-success svg:nth-of-type(2) { + display: block; +} + +.secrets-modal form > div:first-of-type svg { + width: 1.8rem; + height: 1.8rem; +} + +.secrets-modal form > div:nth-of-type(2) { + display: flex; + gap: 1rem; + height: 100%; +} + +.secrets-modal form input { + margin: 0; +} + +.save-overlay { + display: none; + gap: 4.0rem; + align-items: center; + font-size: 1.4rem; + position: absolute; + z-index: 5; + background-color: #252526; + right: 14px; + top: 14px; + border-radius: 0.2rem; + padding: 0.8rem; + color: #cccccc; + font-weight: 500; + border-left: 2px solid #314fee; + box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.36) +} + +.save-overlay--error { + border-color: #ee3131; + position: static; + display: flex; + max-width: 32rem; +} + +.save-overlay-errors { + display: flex; + flex-direction: column; + position: absolute; + right: 14px; + top: 66px; + z-index: 5; + gap: 0.8rem; +} + +.save-overlay button { + border-radius: 0.5rem; + display: flex; + padding: 0; + border: none; + background-color: transparent; +} + +.save-overlay button:hover { + background-color: #363737; +} + +.save-overlay button svg { + width: 1.6rem; + height: 1.6rem; + padding: 0.3rem; + color: #cccccc; +} + +.github-webhook-secret-container { + display: flex; + gap: 1.0rem; + margin: 1.0rem 0 3.6rem 0; +} + +.github-webhook-secret-container > input { + margin: 0; +} + + +.github-webhook-secret-container > button, .github-webhook-secret-container > .checkbox { + display: flex; + align-items: center; + justify-content: center; + padding: 1.0rem; + border-radius: 0.5rem; + border: 1px solid #E6E6E6; + background-color: white; + color: #444444; + padding: 1.0rem; + transition: transform 200ms, background-color 100ms; +} + + +.github-webhook-secret-container > button:hover, .github-webhook-secret-container > .checkbox:hover { + background-color: #FAFAFA; +} + +.github-webhook-secret-container button svg { + width: 1.4rem; + height: 1.4rem; +} + +.generate-new-webhook-secret.modal { + width: 36rem; + border-radius: 1.2rem; + border: 1px solid #E6E6E6; + background: #FFF; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.10); + padding: 2.8rem; +} + +.generate-new-webhook-secret.modal::backdrop { + background: rgba(0, 0, 0, 0.29); + backdrop-filter: blur(1.5px); +} + +.generate-new-webhook-secret.modal span:first-of-type { + display: block; + color: #2D2D2D; + font-size: 1.8rem; + font-weight: 600; + margin-bottom: 1.0rem; +} + +.generate-new-webhook-secret.modal span:nth-of-type(2) { + display: block; + color: #747474; + font-size: 1.4rem; + font-weight: 400; +} + +.generate-new-webhook-secret.modal > form { + margin-top: 6.6rem; +} + +.generate-new-webhook-secret.modal > form > div { + display: flex; + gap: 1rem; +} + +.generate-new-webhook-secret.modal > form button { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 1rem 3.4rem; + border-radius: 0.4rem; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); + font-weight: 600; + gap: 1rem; +} + +.generate-new-webhook-secret.modal > form button:first-of-type { + border: 1px solid #E6E6E6; + color: #464646; + background-color: white; +} + +.generate-new-webhook-secret.modal > form button:nth-of-type(2) { + background: #464646; + color: #FFF; + border: none; +} + +.github-config { + margin: 0; + padding: 0; + border: none; +} + +.github-config:disabled { + display: none; +} /* settings */ /* unsubscribe */ diff --git a/static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf b/static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf deleted file mode 100644 index 91105610d11595b1232b6618c80bedaf568e09f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73624 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 S%eu0(bY3Wn{-shV(f@DnLCFvR diff --git a/static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf.gz b/static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf.gz new file mode 100644 index 0000000000000000000000000000000000000000..bab24bbf2452013ccb370b725b75af4372528dfc GIT binary patch literal 43929 zcmW)mb5x~Y7su~y!sMyRZsO!7yC&PVU6XB1wr%5P+qN-TH`{N&_n+_D&*47%Jm<64 z0b%&pudGy-CV(%7wnpZLwl;K*jwS$b2dt--svDbURvW#;#d?d&!Di}=naHe}38`gW z(o6(cEef40e4kxr2Mj_rt@~ap7PAoet!72=>$iRl2tR1tUJOb^p@MoVKZOtl2}KEW zJPjOXDq}mpBGRX zYp`oX4a(&dU~YLxXBU6yF-q>8ShAbQS9W|M^Pd)%*SFFgrkiv+f!BJtA9R{k;@zK&9*(uIJNfVVd3S^ z*@B0&;qwH^tMsmH(&mR^FxO*8QA}^Z}QUXX2V!fivhTw-4l0Ss)aUCe@$uY`xz1!p&bevI6%NK{Tx4j4&Lcc#=CL#Umi+BvVXK_zE3spR?gRr#dEe zt&NHS&#=O?9P}5f7(|dhYp=)(mgdw67_t$#G9%I$Dh;9qqd8NpjXKvlEVqEUX|{Bn z5!<3BK*=E76=|@EGkja*nIXMtQ=MuJS4?zg*qJHJvgOL@O8W8!m=yL*>$=#KKfnyAER0NAA?yi&{SqQf(TlF17LUqzX@Qh z5+OsC5b>Rc0QbTy^|3_s&<1nhPW5;)0JwUnti7Q%urmI%f8a9UH1%<0LeBm`FYc!P z;nf0Q_6q-D9Pi%$1EmG)@eijN!$coR2ac^*x&~PXsi}|ppNuPdI}TE}9axhvCn zAJ_JmOM%C4ue{sFP$D0A2D9Y zxJJDPyeH`NlWTF8A=8bM`!>Mt_X^ImZ83@JPzcVL9@H;Xo;aG?{Z)D&kY_dDH{m+K zH-E6f!7|O*i#havfS!JtkmMdrFQ^_!zZiPlb744_*~>w5|IRL9F2x_&J^j5$0Iz{zz_!Z|D@e}JYm;%{sTGRl z;^ikR5{fVU*5OAav**?ki@1S|^v>Jj$#<%Q8BjkXrr9mfae zLeB@953Ef!CO~2r8kkdW z3ME%pJHP={890-Kl3S}CNQTYXG!AEj%YiltXM@e5`&9Uv?{*&HfD_Y3*K$DqnKcAW z{~0fEe$(n|AEIPvW#4cggs6pfr7Y6E}qmp*h4oy3ImOht*+#Odni^{ z(U39nH3RgpL`{0(J~X~G0krR-fNR9YM`NIf*B&**u)y+;DpX8l%|JCQ5xsu6E+&6) zFGd%!uT~JPwZv=iT0f}P=s@D3JUAE;NmO8ERPRyw^+5O zs&6dalO#~2b?-BDjw8CT46|gipV?$SwB04LUb?=q?~k}Zk>_0)h=|*vEjWf*LOwLT z`RI2U-`Gi4g->Ds(OrVfOV%wW`zq!eYxC&w>ERP0B-XJnAv}?TVfY7ScS$tgXKU3T zLca34x}UX|a3La|pW^`eo$s>$S+Y=AcXvJ*pBX;n-6cLBTE6nx??Hfk-nUQByq-Vj zf%lF6v*2wtB-Y)rEk`yvVyDpgCmph#W0%){e5sSuu zK7sQSXtZ5{0!Kt>8Yu=y<*+P(ipj4N5do}lS{gycG}Vcu1B6X+Ie@6z`Pu+6RyUx5 zRir;4#)=ctcXZ;K#35u>?dqW9;90i*Us;~LF4F+J(DUueV2ET~{z8kxlM;PGz?_LSW{=KOfw)?4hg9?E8 z&shUN*MG(eP?23SxF4jp@z+QD^9Tb4W(y$niLu-~n z0vHy>J%j_;PYk+2_&Vp>bpnW%th9&#W|%mbaDdgILE%payX-)KoJm_SDq#L868m#V zTg^fMxhXa}^c+yqpbd~;XSrGG{|T6Y`I|^;$bX2<9SZ*?RH6E^?K(#Ta;j{==z#f! z$Z{xvlhrN`kRN}|H55Q3YoSFA7>>kQf(6*;4}Qjlv(YX9kP~G+4hJ|{7|a0V=vcQa z0b-C@bjSh2PB?6Efa~-@X$arfBD*>OQJ4Ap4?sbPEjnPfuL%}#oifM^t8x5&H2Fgvw^6`;M1>j;?E(kJ(d7SyzUu+L|m^q0Fo6SEnhF#rtEKe!{|8KXn0P{l*P_jvY0cgFyf#9F|@CV2d z5TXD^cl`nRmYtM<0(ipDFuVDX@*B2A(tq*_=tBcIif4Tn0{kuaR0sU+^ArY@(0VHW zC({3k_NQ=@1LiS0iT{(IfcegMC0`WNrzAi=_eUxqW`d8Vn{r|Z%J=%^6OyfGpODOa zi2?{tZal&RgSFbPw1L5R9aqT^5mv(wkXS1fU8s6Srdi+g`V-$Zd}kaw>AS@ad`P-W zXkYn#V>cc(KY{re0>R(7e*uZra7yvX+-nkuh~{NQh=|cglFzBTe)x>>^Cu;*k_h1$ zEDS#(8FRs!g`wB~;{5|KzxYXktcB00UEoSHjK1)}e#$2#_xH0u<-rsp;`+q_DDw3D z$w<#P1z&lcC^!c9_pYzsW^7(1d=IFZy=l9}WV%oQv&tV--6h)GB!GFBcWK{P@3%@o zBs?HL5@-*OVNXQT4#=Ngy9Wzc zO(+Zm^mT&v-~omBUjZj`g#~~dByEY$suq&DpBPdLgT(qwtq0_stBrnT*lUth2l7vL z%##CdUo!x5PphAV*iq2&CFawl`pRG>D2WfjZ-0aasJD~UhCr~sRFL=0ozOY?gc6J- z8IXUoP6o}U?K@`XGv)l%{DvU}5%qBQiIYv5$ z+_D}6j~S0cW^MP+t_7ajMsfBD_QjpPeP~yB|9&fSj?7vzy)8zZXx?<4^-OMA%RotlcAnO%3*!Czty`*_?58gB)W|aX0V}LN3`J)ooZ?cwN-* z4Uc&)buL{GYIzyW%vUS@c^A)3FI&j10TljQqefpg1nBG*cHqB`7 ztYN~(C43r~6GD7{y%X5h8xQ5)Z^fWXQtOQwY5ys2-}Yn9e8 zYe!3_xVpzucc31H?nASH0#Q)IhTD=-#O2Z zT+1A4Zw@AhS{I!+R`1M~90sVvs%gC&9~*WQH&mSnkKXwoeveRPYP5FT&e&IZx(JtN zD7SQ6uVqzb1$0o{^0puJv)F1mG+)$qzPw}|xx6&peK_h}bZZCf_XGs+5omDLyB$Re zW@A0SuYy;`6C|}~K z*;LyCy$9ZHsdu^hJN3d+c>W6%Wpl-qS^hH-ENlI^8LTVa8qX8YMRAegsdw#xJH&Rr z{MbE6n6d1zqfW8uwX?)(p1x@9zFQO|9j>^csHj+-`P?sVNTKaBJC`on7^vB3+u|@5 zE!!x=`?2Se`8xj7G}Hd!=N3=H;XHDN`)z%^Y};dfo6O6kilyb!Vx?yF%JW3!lysN( z^U#{iMx*T-ThrUgZMbaL>1{}(=GxfWP~*pKM5gJw`yjouR@ZKwsdKj5Rq8`li=)bY zMWw0N2N+a$!Qo+7+~weT7{o=m`jna3#c6uVft+!(*MfhT<$2!ez~^!9aH#FMxpBzj zx;b~a<@%0H&;H>rNu zt(!<`H1P`Oy*vV0Lc1zKA}rjgos#A20!X}jO;H^2*`qO|p^zfkZWJ?l!_lU*3EpVz zPC=!er*K4J=_zdcQNNc3VF@8F_=S@Ug~?iZMj5_a#$>I|uM#^rPs4;J_jzOowm3@; z;lQKm_SWk7jGNflxK8CHaBQ|U@el2SOiOU8cYNwC{@kB8rC#MrorfO)HtUnJilg9U z$2##b2@`GVKZwHej!gJ4KGuydfd*HB=U|OlT?2AWj9MDW*i(hS`#9xNzpdp4JM8Tg zeqV`kjv~VI{(`0K`(Z@1f z%9C^4lsFQBUtU%?|FKm0Du37dC%*j8B9R_0i?k%Sn1=v_ev{RN3O!hl*jm2!?<3fLRk)tMT+M*?=3ZuvZ1wCCx#MD zrP$pn%C{5#U-jPcz-Z{N#e9v1Jj+}5cfFFo#i0~kmiws_q|t5%OX*XuMyG6^*C(Q# zm#MhKEE9CvlV;zd{Y>Bd|@;;FaHk~L%kM)F#2Dz?i@a#wo?jB-WYhON#} zr=L|uaY$uIQ@$+%hoB5GWxJi(@W{o6rkT#e;V{xM=Zu2lfEnStPV@6g@BYs7tKHI7 zQbcCHeU})84_39qjllNup-rH?)!XvhZR&vop+!+!1Zs!&ECu@;-;?-9 zd79=2B#evydwTksp|NJ3MuohW|BpZqcS*{j6Vgm~V_5i@GNFZ%xG+Jgvfn0i%BM)Z z<1H(*bA%;H5_6M04DzGSG8E2DtJ0X8YlBpK`N?wervr4fNE$jC$RxYC@;Cous3Q9p zM8*;gtQ{*1dA0J|^cTLrf&zwzHkr6C=nPoS;gDb=s@E_+~ z%8N?ddqN9WcjP(roo}mKy1#g|ofgaTlAMcXTB%>Cr5rX-cNQk%#jy`jbMFdwu!beN zm+|3RDO*|g)aueFwpCZxceQ$5PQ0qC{IH9zeTz^mq99k9Eo^KEMvU)Lo(n5A0){nQ zA(k)}nmM+sR3&Ja;>X$j6^Y*-W-oh@Xerxe3LmLq{l%+tJ{z|!KlkgFZ(5pys^3_7 z>DH)aW6s);iY8F8C{l_Gn(PH!Qs+=pccUE_H$keHDpj2NyK5jF|x@3cHGg& za^dW| zdKYB1DqbqV8EekxQ+MG+*5RC7PjZ3Gc{AO47~7TvGL?Iqc2!_R67;{%ar!YEAgWxy z=-R1)yHLvYgX&S6q;fo3LHP3i2$a$}#7zI7bzy%)C%oq5*Jdk{oB@AG(ZBUu`_+$b z$e{M_@4nk23G&!A@k2-Ltw1qY_VF&~97fag9kI$=BDNZ~#oO6`J3fAPRLF`L^7t0*G^=wnH_iN~T$B_1T=ihdO8a12!c3+3mQ*u$gU zQ2xppO%+^dT%QtYv{qx-Y>6FK%@Ld%pzoRhjRROwy;?~#oz4z;!;|%+ne>$@_D^&y z5RyBRu#}+_u4)eCPCPa zW-t~@-ITcfad-D#ElZz!8EY$=`AFf7tE?$KMZ279V(CRMzG&@#XQ{ zX^kEh3=11UER|TPvCgj$!yLe`cQYYRX4D=Vb;iVpji=W;!Jf(yIy2r7$e1Qq!HURx z4JUn>p_;i^mq&H|1Nk9$ipMxXqIh#7;1*<9aJ8w=DzMA6Og(+wC>XoSXsvh(oM2%& zZrA%e+*RYFSF5}ibOeJ|PFm#bSW)s_OgjJ-4)k0Z<%d+Qci2Po;JcI4K`jCLtx62N z;XI=3K`oYY?Y!MuLSn&|SyRb_IT%3!uE{5d9Yo9C(2*J((ve zV`O}(T2>wAM1MP%(lk5F+4Fo3n|mY0=~9sGNv*O2JH9c0jJ}WRa;QB~H#qYbXVa9W zb#Y=rG6B`UUwQe0N3Wg9^~z5?zO+Re3^xd*iPD+x6L&k)SSOH!;HU!ZLDWdxH2Jai zYhQ)Ju25f(G@zc~bZAt^UXy2HA(S0b3b& zq?G2({?eKdSG%g3jM5_4{~3IO!-(D#wnN25#^A(vx_AB5e4gg2v526ks2~cK+X{k2US|7w1!fNrV@v#DW52o@_ zJcCCtO98g!XA$Jp%MR}Doy)r;kgjIR^>6hmdShbN@wJ)`*Jy6^7|@oIKfa+6O)hAM z0nH>wcZPUdl!D7|*Jz{hX}_ydCOO?H1L>+ShTZ+gF}rnD7-vZYr@3u$ywke1<77+B zeWpp)3jGS9VwU`sV(8&iM5b*vVcT}avfJT+h8=Oc|K5BUN*H0fDxK~Pdy&x6-^XoC z-P^Q$S9I-s)tb?}gKAwX9!ZVHw}PRW(LzeBQIx{8xb5k54ecBS>oO-KN2oudB`UYf zkGeO2JI0T`%(oZfxpmuj70&xV-agb*Q#*X=*EC{;3*DBJ;u&+#A^)_>hBSLu<}-iV4NuAHMI8p5N+syeB-qQ@f~&L95+bfV{uf@#2D! zM?;VZx!HZXhc*PQ)H`LjyAU?nP~{7F#r@nX%YXa5GQ#c2Ley3h6_3`Y!B>!ODJxU^ z&Fe28J9nCBK8alRbkC~1^FhfeBCGENBbZmw*k%2G&ykg*4F&ZQh( z25(-KIJZ{T`B)blf<@>9?2~z=#F5*+#n~jV>km;NM1SYgeG(et?My768oaSv8tIR{ z7!?_vtjDx>BqiC6L)>UIi1N6<;s9fCz`%;vqfD`%L9t_mr$Eu#pIk|`O5=rJ7`+^f(N6(96GbtQ)zFj?cya=;~-pY%QwA)B!UwprP+IoPr_JNx$#_O9RcoBWr6 zomoP>N`=Br8Ct9<388?-Y)~sXGIuS%4CzV1l^N>P(byLq+28Xk*aM2gP^3Sp>dn)N z%fyFf!S$ADHj5F*&YHbW6ZX2>agH(0?ipE7M_4Bay`EonxRrR8gq;sGS}HJ?8x_G} zM(X0h8ruiA%BmtVvQuU4QPUC_v8n_M?5s_zpq5H$3GTYe6Oozl^&|=UtgT$)aa%3W z9p%ssHRiAPu5|rBX&m>@uWG;dIgn&0w497r2WYBC9l}%|>aRUBu+sf{clUUxYTcGV zvmX22CqDG!EK}=@{vO!QGrOdc_syjadqot|1V%wjkv|^3sKz45bU9A){x!Yq9zvK6 zJU+f={^*;i0(jX3UgSgRsvRJOyrrfN9Ugdo*marX#%1tvtQVbT2t{6R`Vxp#+P`1c zC{}kZ;A7jJB2$>4>Jkua2UL1GlwN&pO8oJ@8SN%Zth?SnY0_r4sO>Akh$Czn8rA;i zozjFSZB`|_umpoId6B>pA9W4BC~zlnqdqvF)7k5(YSwkiB_egUMCf) zqX<|q9CcS-eo!`PPe-P&X5H-K?hP^ciEY_(Ua}yco}Uu*SIw%sK3$&$r@L67bFq_d zRE`)!%~G2LZ*FGvn#ggI`80{;@2I-fX?DMWGk*!B(Ja>%_! zs~3?#Dq&2}aS)Fx@jl&w-1}r7JFf>sS3IUZVeOez+*ykfv+@17XkC5^i&o4N^>C3p7B)_YW55!Te{izc5@k7d^5Jbn}EgyUZEkbV&oJ>ZH>uQ<86wREY{u9 zq;{3p0@6k50axf{hRUNaC)xSj2qS{AXZ#6%Qn-jvIYvKl2)bJjH=Mud==4Pxd=yUXLly;PE{*#gz;MhJC;5u*Q4RBCE++6su`Rr1gr;M+ z>aqANfJDN7P=$C!8iJ@WshbXFdJ#kwBUHGh7oF$xf6m=HXO;k6-Xjg}DT zgt3o5%nkxpOnLKG*`rn}SC}is2A~e0Qjl5LqCE^^V4!MR#kSAHYG7Bo0PBfM0lPC2 zQd-Na(dKDetSRxHx)y|HmgoNF!!lOMqYYU*F|91GHdbmWX4rJKSqX@y1tuSZm)Z4_*IlRQq29)f*B;vvrM`{R zopq^X5!dr)3gUkh{>}&>N4n6MF{E8nDo`(LF#CGMbRzK_j{aMBq8mA}DbdA%)n-?g zn|Fp5?LWy9rFF$r6Oa;6{1Kre6 zJ2p2E&Ph073)uUhTg5}NQ0SNv&2!_{&ce;joy4V0z9Rf9uOQeW}EWb9%)Sntbk zV)i*y0zU}*xp{Vrl%-jf159e3I?Je=El1PRoS9lN;jcsa<#lP#0Md~|%81Tl8vLb@ z$=DXtyX5h?`hg<_Yv2E<=CW*sfWJfw&3K|!J&8}u-I6Ok&h;dw2R!|g^D^=7d9a0# zf~4qxjZ}Gy)qRHV*?p(d9BvW8J>BL7Do|Z>i@oGD%@-zzdon|5KiXx!6f5Z1Z>JQY zc^M5)aFk}vNsUdt$c%@IK9!&v$DJg)f)CqnV7oI9tk_<|&PxR+r7O>v=8)cV$^?|K z!Jv)K#fA-6&1UW^M3n}YTZ+;SMZ9d$-wNC(bQ)-k->j&N4GeM=+uy!MrsB<5zx3Nb z)m$W-99SFjW%gCC=y4zo>{9g~nwXd#24J}SA`Y3I$kke`b*k6k;(z`*<49#yhsGxg zyG_hl7fS%=g6$&rz4_as<7N>BQ2hJTfp_k`eYg`<)DVM!qOHIA= z=Oe(mYG-#eme>eMP{DqAk_}}IQ&pOcRO28ROJc;4yG3it|3ncYMXIXNd_#aRez;;J z9Ter4%VO*3K4BzfuP9c@WjvrFu=Jv}cC~B6kP@MUX0}#1mZ3X^5Q*X=)^@3tKTz8eyKd47_64qo0NIRcM zLS#S~56^%wMZ~~wQFne>A^G1vMAcMP`;=v6>`CP%y0Hsb`29*xRix7vkwv!a0hRUr zhaXl2PcJO^H)Wp<#9zcTGa9GiwOrvugY`}M0~CcK1Jp%m74Y}Lco#&wy7@gdY@`WN zq9Wq#xpU3^gFMf*oa*3uq)*&69L#XBV741M*nfTa?Zfmz@m}>*9lA~eTlO{t6{9eO z_HUc3x@D_=T?MFc4T2iRQUY)|Ndf8ZCJ|&;9qP!p^l6rWFDUQfcJw)4#%gA}Zag7V z9`=d?T&(kox#C_Yv(Dx2*9=>vwCt_A*sQGzQ;D`B#Y3wWp_qcv!tJs9Si>wA^L<>T zXvRrcRW#4=zfqI-wosuS z_4L+$L236u`$&71)}lX&F9mHu&mzwYM|=Zpp@cf!Q_3 zz4&zeL{e=)|5trZ44{(F3$k3Q0)aqJsj1o>h6^VW2p^P7)klLnvP_~Vw7822T`?o1 zf1Icy9Y}(0dTQm4+fcW&O9Br@VmwcayoYnEWOBPesn+=qMvyFyzoywv1o5RwDV6E+ z(#w*~U2$&w2pM^EVr|b9da^l@cb z?d_V!yw%PEooP>a?3AAq!>_iQQYN>tBOp7T_jeQJ2_Bi3c$%>g0#V3u1vurPQ zsiD4sWkG|Bc`T?qSuXe$r)n0gN=+k|i2_GaXc1R2O7Q!4Bbj9|diVg1pyI6-r60`f z4K1xh>B-S6r+2{la#msP#-dUCNF&SGSRj%3^sF#!y&>#voFy|I{~R>6dukEN?4AI# zX1!uAKEdPC$lE`K-~OOwKB7@#1S{e03X25n_w4PMt*_SvJ(G z=UNq&DdGEI=Q%l+)_K{&hcyRvFrxXKhxNO?I?cnfQilm{;H1jhnTfP{sR$reT zoZGjO%{p%K@Xd6rm>B5Tde1ze?Fno9GA_ZnoOTB^;(~#g@zm@F9u)>ld9>*SW z7nr#b|Lqs|gc(VaH^2A@kqV-1jVEM-hH7M(;b!I+rUS{IMG?cSFYWbdQFkG-H2Kby zg`DLmRI;N`9CwuPqe0U#f2*zzoqNQ3(_32}QSANF4Q(0V%gsLUK z%b`kmUkGo-k&h-EcnLw~k!KOCraT4#B3>9QA@0uSVp?%Bx^c^(mpI8uv&a`My#m6p z2>3=`M*$|Ce^cZK(GyyvK>+G%E zw>;4@s*x%qti4x{BP-Feg(^&WLN(8KFH3!Y9pA;2xppTFdv>-AZtK5;=5X8AuCBY0 zuI=Ka-kvxDmJr^Rs2xO+tg+BW8liaR>MVo&iRXHH`KrpU^({po#A+9}qT;_)G7iR_$y~&kF-vKL`|16U` z<8;vHs6_S`0MkHXj6&cqPcDu=fw zNgNcSoc!>@Ow7y*Q#{yWbKj6rMR-d$Z{Ql zT2XM`^5}773aa`|{!Y#?2FfCkC~6vNp$Hz~@BH^1gm63HUf6u$p@2*tKk{NDio}qq zmdE3ltwu9!A_}N&8Rs|sF~bpKu8WQ<8HPQA#$*;m>BcXkt23P^Iu{y9nn`l-r=uSa zynQONo=YUBtlmHXs)&ZM+SIGnu?n= zMuha+CB_E~#UCb;4(QQpizrO&p02DVOILFlHIMzf#+(|7DwdswJ5W#je)LnW8T1oL z$#n{J6N$Qie6E+D;@mBd1*k(?4&oqU|GMoB=O*#143>z8n1HMk87d)|PbG>$i)Jl) z%DhHO`Pm`=9GoJhZr9gypVu8r(Gtc4%uNoYy~>cC#1=OKm@RI{0>00^CcpJ;^B%_j z`{UJsXDkn6G(cTG+Qq=M5J$wT*Z8x2cNE;kZ(=l_9Hdeoc&EJo zHYM>A*?OW#XM!v}uE2O)XSo!P{s;X*fR1Q2Ii;fo^~^$Mr?hgE13!5J`#ayBko3iF z8}N)yp}cXNgYT;=d{?zrn#~hs7j*bR59E5B17D1ysJ-}~Voqb3%Dc=egTdO2jY;Dp z73cd0kD~#Z)Xs|(lOnYU?E|pP?Sspzb8ji$T#?lIb`E-|=ACo=0}ZA&HcRz0o$D&g#P##AY1wt$h$QYklgz(t#_CM_h4v3j zbfg$qqgE;iUTU9QSC2+#l`>@+%_bZ2EYc1#*-H%h($d#L&W^wGc{)#3y$SrRK}sKU z-~TzE&6?DzI1XLHQmJTt2O+QRI1zgV)5kFL>{#tO>35XIR`JZDWmgxUM?wF>W?fS5 zVfH4)Z}VG1Dx?fy)N@u&=rnD}EXpc%aNL~A#CSzR#exvQqr;w82Wd$q&P{f4*SM>? zE@MP2)YXH7a)>K$lCHV}f&EJ*awWpOyQLR8pThX`xdu}T&Un9p=)`Z;pBlRjV|uH{ zXT{J-&Mz@c^UoExZO#b~-?&20a@a(Eh;D;0d5!%ShwQj`AQvJNB*BbOaEb1UHHnunDl5f<74{rl3^BCHm2j-mbvQ@TXVQD zD2srNmVSORWxJF=+0HPyNESw%oB}n*Q~VHQ#Yruehsfr*g?ws$V^%m>tLFm^mZ1BT z@>vN7r^`ptxdd4j7Z*~I{fny5cbhpE)Bpa9IVLZEyNEtWdiysp=rG2_6r#f*TEIfM zExN30U{Lf!mp~$Fsq2=DB6IK72NYPf;9K`ZYD!dcVM@Jw{wCc0R{>pmjAXyOF3YE#8TT`NHLpoS-9@!t=TvGTILf|WjROuc}kSl zvyQ9E+FS{j^Tf!p=ZOm4uc&rwRMIIqr*NDw`6~_6&{+jz`7%G19L441@SXSW53WR% zldlGGUnYngicUrXgoR@r3oGe2_|WPbZsq-XChp{s34fwKQ&`L-!TD?f+_bnmk07%1 zeq~$O>dtLu*?aPZ!?Ckz%)2E`gjP~xdlYoAWnWl7d}$}el`48!bv+OJ@?~s=NV{*S zqSiC3-<`KyPWFmyK-fyG-aZ*QRpoa7Dk>%~8He$aQ3JI<`7L60+^wV@4^ydqF?Z4t zyC%TJDfOUDYibG;9(Ky^_c$(OQnquq_=^f4$6{M-dQrvPQjlyjs%gAnE-7^`{2=4W zyskrxgmS=H5uS(ZKvM=yP30R0hIAh6uA^p<4*yC9^?L1q`K=PQ6_%vq4kK%7aL-+V znq7#Hmlf&CKxL7P;HGE8m)0w>x9E;N%lKbZCO4JUx+NDA>~!AkM%RIUu07$VFgrRS z>EoPH?C>)M?;Jge$TC*cWL~dEqTprdiCCDbP{iS=M&b>8$U>u-Ld-#$2Sa^|FP;8Z zSQzr#H)_<%nbm7sly)Dri6n(Od^HTlHfQ$k9+@`JCmNGIxBanh4kzb%bKxJXZMPc( zDig=zL~~=rf~Uq`n6J@eqz6P1#SJjDP~M75Sh^U3RFW~kx%R?CFo^QuXi26MrTkg* zn-*z`cW-ykS#D`f|1dLZhU_N)HXXV^36k~HhSEZIJQwtHEC^*zWz`hj=*w2rl4M!J zL$jH;24^3%io}J6w~P~2pXdiHH?hsS<87zTF_UCzkI!A>#U!Ye`EQYw7Kr%cVuw$g z&0Hs<7{Tu@v&#Ei9mn48zyw{NP3glHo$9ho^bJR0U>vYeq}tOcHxx+?Q^ddh;TWLN~>7Z6gJ$sdAG|1yxf!9IQcMsZQ*t3yAR}3>Al6#C-!a9vkE`N|B2}bPDL`Va>$hZc^Vg5Zdo-|8Qze7(}GOH!alx8Be6v6u9w60Q7q?3ucb=Wxe10}V+? zZO_V-2geL_AZeut6D*Y94YDGMHm4K?PaH><5B~u@0NAQ?W|* zUqKNrUgN)v*HpE{7mdbbFi-)t1{zuVCrK4%GPx7;36Md@6SMBfQgfh$l5?ahT2E!_u5gw)T56V*HYcf_i4l!Pb z*uFWKm}Y7+yVy*27(eMWIaR0lX``L8hXFSn>Kw|KJ*QLC9c;YP&bu0ZzI?v7+N2;T z4R6a{=fvll~Zf(S-$;4cFM-*E`T9Cg6&Zt&EMD-T4}O5$T8zaYkuy#XjV){%SG7Ipj3AxLe*= zKQ%P;OV`GCxo%N8Ie3*SG0ke3hreFTK$G01NTL0}05>vuM2*A`sq!Yh+V7M!{OtC8 zq+ThRoSf9D)Xk@T*hP(YGiI+A73|j5-OPScR7`-^_!uzMYw0`qn_62XZFU5{xV+^# zG~4`XaydYc)@ZirWPHYNHGLiP%X1-KvbI5nM3WNqWWIa>+_2I9<#8Ke({x#c#jPZy`^-f zFg+`$^RBwn0|@XM6FU zlHk}(L0HB;^!5Nu{WX@?OTMcc&q88>d9C<$B1sxmdX;Eqp`i^EWv(yRi(cm6HTLKC z@-z3O==RKERrvV!8tuG+f0lvrHl9J3A|=-iJ?Q6s#m#G4dsz<3?Dv(;efG^~hAL(p zg+dwxSaNe$3hQ5KUuDYQzTgn#6|33cVwq8^P8U}sOv_IsP!ER6^CH~Ht3#4^@^#ZY zRUBk`4Usycb{Q^A7;=xi*+~$epyp{F9tG-?_|GdD+&mA;Kol8m8O>m_2c?$!CS3O5b8V6U9aWj)#OO*4^| z_rwzKRV6nW*Ja1^UM^d)PB&(2cnLc0dt)BI&q=o>9|APAt|rG4p0(0{70%0>BNa6A zs8?F=W~(%pmLgm7_?xHP8LzoKJvh9}-QL!=-Q9K2F9)r(3>d)nvXO12|DmLYmW{dx zdd4F)nl4x29fekFL@B=RgeEzU(@Y>CPxP^M8pa(&`Bl2;8;|Hk4p(nTYPn_OEQOy5RMkyP5d(+3T!B^B9lX_K&&_?uPNwKXM{a7|fx zFG=1}6nPCMAGwz4>xzdpAzvb?Mq3-!2-aCLE)Aq?3;dMaRvJ;_t(tqa6{m_xB%PP5 zifp=gpxKVgV?fxhs1J1_8=F9BoJ0S6P7U=#ipoiEMWEM?Am6HrHb!r((s_J=#+57K zh?oo`bVhQynTD7i~kU(_DH{)C$&DQ2SdWh$F**z2bbxnj}TfVJhktqLOvc2FGI-Ekm=_okgj%m^is*|*9C0tzyhBrO_r2BM(OF(nu?^g}i zb95!f+n*b_=~nwY={0)Nqb3)(r6&q*M~5p?U(q%F{M}w_&4k1uRX_|qad9YK z4BH9bvLX%0B}o`5$2eXXL%HSd=Q*bNRWW2GVi0Xu?hf=l>AhH6ksVyj=Rnb<(pDd# ziXP>IsKn)~5$_wcDzn)+BNjxiCg=zkHi!mTc2@X5);eihPB!Kl4=B@{a ze6{YDN)w0nx5k!s1t|MEttT=~T53dEbPhexgD!f069=coVB2)?ZmOcR7hp!y^uEd! zZj<0ECI?r%$#R8{WrR_cA`@ekW;3HEw`%DII-2fm5L{tu=gdx6#`Tp_bG&PIc?pMb zJ`L-siFL9%H5*uacxKA0mT~a)7tb}{e@A`fJo>*9euqACtRi_qe`zTeY5aHSEi0;I zwfW*5XIZhJV*IanpW}4N-eWq`N1KX;^!N%-bNRbIJ9%7>)s|m_*@}@B`E0+4uZf~r zUzO(Sz5T(6Gv!RV<3zWtDJ9#Pm9OqU+-G!DIyR8S`&n1lh`VW%yIu?~da0C$o_->g zx;WtLYvtpf|G)6;|LB=NyY9Ldf86nL4)LtzSE>Fk&-(ba*A6>VQ_e*%_N)~?Nb_XH zyK~47T$wGwUo%nU#6O}yl}_*Ipg?4GbYiV@vKV{b+qULvrx1^iC;Ae7Yqw{zv-RsvrGR2<-c=ep>HqsEQES)q<)tL!<%*!v)v+No zhu9;^I?@Y`rl_Zq5$D$$_ELVaw!D~xI*a%bziQPoy)cp9@w5?WCCWIB@)c;xTO#s1 zG*wptd2;9^Oxu%mEfMIwy?WNxblEU%!*@c}1`3iS9NSb4P<5o=^iCCB*1N*Cah#(agnU+dw*@T8TmOuLccAb7f7B`|V-E@_faSY+LdI&ook2dm?UV za@>j!kt>%)qGBjEX!M#eO_6}!w&N(es<@7pNcZKE*%Y3Y9m{f%=BxDfdj5a?!T|E- zonloYeNf|I!x2BNG9V=kqnn>ocxaCH%*-!MqVrGfcvoFsF(mpFI~?$&h7}+zK1Fu4RFd_d-uM70s}mc$7$@?U2!J@xpjP(Nr}*ldGm+Ay3mXVk?dmhzv&&b zrc*BR^-Sf;q(n^+w{$@7PL;|!NtG7J^1&i(jCqL$ja+)i4=QJ!#^?AefNG;P{w6Zw zwuWq8Ng`zi2g|;TvCK7Dd zu~FU2rYeJ>D=Ns86HStA(*g*wiu>11j^uJ9lk58Vu!XfsU(gCrdQ)i)8P2Kfbc%o+ z^QMak`yGQH8?P0^nnp3p z`#S5Lo%JdDdWD(yW7-IS+z-l-vJct-2lz^)-b1L z+K0oowp>1==E7$C>*w!Us8Bq=`R-pqSgJ(*k+2|vFILE-Zp}0*qRE&m6I~&qVwy1z z5;5c}my87GI}>Vf5LwG~Q2%0uEMTtE79d|qJJUpY@Ta@H+vlezmgjfVe4s2}6-Z0Q zmtRNTrAMR9DnR}DqAcpdQ`}S9o#Ayu$k=kRSVHFuw+2e~_zRiT^;?`RU712|sJ^yM zO7PWM$;9sCsMPW}`hu8iTB1eEx5XtI#ZC z-hU|;UR%B2GH zvqvA^UD)hQ7j~DqkJFmJ-M{J`PT7_8nlV$o3EJn$)=Q=RNK4CQvBML791qI)uU=Xu zD@xbp|66*Vzx|Ytto;YVSuMcav%d^VR>`tTxnO^DJJZ~j{iDy8TGRI)S}@H8(?4|R zGknA^n3)mfVvjfHkGI~9Am;uwv3h?-ye?^4Y>rYf$_xDam@%kh>%EG;^9KIb;ASc` z1l8mnd`8F0zW(Cp`=k_q@p7)5%azT2RR3nl_wQ=0W#9CIGd{il2{N?6`{*9tU@X7H zSHWAQd2t*}@U`$}IhgfVjp(Gs6sD5H^?U0EN-G&lxV3TbCFu1D6&DxqST|sHrmoyB4v5Q zj6Jd`&3GZajjhRvlA}Ij$74+IIp4Qmj(gs_VL>m+q$;J~;g8m{?l^S7| z(PBZotDws82AU=|&@>G@WY9qE`R6s=3t40vPduSo7EBZ>Rdij}3k7@!wL~)=s*T5g zg_J}_Bv`o|U6V|w&SUaE#p0hn#uVdk2DTN1C(jJv3|mLS`|e+qmWTHQo;%pun0MAf z`E0zt9v92XO!*i{??xrsc<^K}(_ocED=pY-_YUdkyjc=LuPS3+G;NDmGk=9~jDAX< zi_>fW#EW)lpoAD0f%D?s_}&_l;91AN%-GfzW0!sB*|&W!ENp%6xCRb-|DQnbMJs+u zj68vG0Ony=Fk!56Qj7!vVtd`b0AS%t6uQ+u?7GXIxBQHsmlYi}M^(W&d(ka3S*q7H zgUIpKt2>vLmoF_XEfZN|9Agpe>`RLtnKg8HH17^G(?051uu}!1WoDdX1b+foKzM55 z52-lTpcxvC`4d3&fwo4MHD2AZvc}7ZarC}2#13h&;~lSK!1TwAA?S6UN!Zq2hc#$# z&UEZNgU(bgum{3$5QYahVAwiarN^u_78r9hl64JieQK&t44#vYB=VvmgZk`1S7Kdm zJWc0HhP=iCZGQ~!M12u^83kfsWxrd#!B+K`+3Jmhj-x-O+smZKtf8a#mOq}b^PknU zPe0BEv8u+Q8prCD%oLU!$4JBZZsg`gC2puH-&3`hmh9^HnEthvqE?+Hvtw61t2Oci z6rk^hX>6Ql2UZC>FcB|vLk8P9?a~5F2fpMa2Pkg8kUQe$11k#qCrjC?FWJRpz8=h2 zf$3#~&B28WA<2HMTR+vhf$7X}j{3)brK>%*k;zQuwP0i~ z%9NnL9?h%>WcYpzsvpf|u@H~u;1$!;Rw(q#c#W?1F+@$1nC1`-p5h(W8hyn6*V-e` z*Ixyi7O18dG+A{)4cdX`&TO(~;Je4PKqG3PRek&pKD7hYe)|vOra8`M6;q#hD?())43BRWP$Ia% zFsQ}xAN?>ZF-v>IBC4cnU{Yfx`XidfNQE%6SeLhbYgbluQ*~ z+27oem~ROPa>d{P`HF1|gV*pbuydk}+sG?(upElS$A#hve1ze6Erxfn3G}xp{iQc7kTiKIO!IJ&%&_^rZV$%B9yl6y+!vaydJOVu(p<0r7vl&h1PizelXsRKNu!;v0{IS z>0!gr0i!z{?kOGD?I?Tc=ZZ`>B83-IRX;!}CZi z(ndQ@@ZErF*o5^-|5liyA2XhR-gy6i*aj{4eKT)5-*9Q6t%qLprkVE{S!MnfSR#^t zz`Or`Pd{^JbL;+o->Bql$LZg1vs1T$AR5QOCheTNgI12@@*B4;6c9tN+aM=}6B0U( zm9`<^l`x~wJ}3>C%mgZAEE@6y#{1uIJpY01?I(Wsea24X{F@%&XWmKAvVLZBvwuIF z=ELxR|6zV2bAnxle(8j33|FsmYYVG?4l=L1J=T$k?GL^@+5X_>+Aa6+9^J`a!{Kmh zKiuh{M3^^(0wuwJx+;L=)={(zL{>n9=BXhg#E54gR!6t?*Kq znwp|fL(s-}yS~M7x`(ffA7^x!R|UZH?e5Feb>aS_>)8v|Q7Oc|;q(U+eeZSdDVWK^juI_`@zaH?v;b>u0 zFns;$)vMgH8w>`!;wwy)73ZA0`JB_|i8l$VTOBgNaOLZ_xf_Lr!4a)#-J>?GmD9nQ zUmdOdCi>#pSFT>AmaYCe{Quf7YrkxbRvyCM50FcIT;UqGDVSaTxQmb;DfUDz=7~J3 zXq|sn0VUNAMCq4Q$g^C@Fv@W)sL-Y?7iG0!xCXNvOZCFYiotABc10E0g&-(< zwVL;+oDYtG>Z23asDk-x*8Dg$TvN-n9Ydw9zN+dPXkF-bftKf^ z5L!eCO!$UOnOa4_e*)T=ELSC^C7V=Ix|(C!R0T!K)D1-i^MEo6fAFcsG>J+YXn&)H z4;i|uQC+oNiyvAuUAR9%#WG?W4=&?bbfUSEqDV(Hojj6vL1)7P7sCld$Iw)+F>0o* zrpJX}Cd;@m%3uClo-;Gg@u!7;+P>`roWd6QADM}PiK^*{r{;z^cxpMjdjzjk{uImG zRcg!7klQ@1>LNTyS$RJDl-}*t>Ws@RYR*Pw*I}fc9?53gsU8abjq{w@BW+9$-Oxz*tx; zhU;O8L>?%FmCxgge|-AO<3W*-=!ReQL3IqmQlQ{k#Vg36JeyZw{R5)~v5g;0w#iKD zL`S~eLueyA!=1gos|Ul7>vQ2`zM@mU;ISXLm;NWOzKXNUwQIXU5?%pKF4fU8hxrY< znfLM;18?}~5ZrlzR2bOHd732$8rUQ&n1tbS4{y8@i_oOj;PK4%ayN=|-A$>3_noH? zuO?txawOZnV6Fu_+O}!;%i`yE!FVAsc%YL*SMji`;(yrkO=uE z%0$819YrP?x_(rXLacCo6#BjnMk@SJVJ^Wh7?F`_ABS-O0|vf9W)Xf|T(sbD;^-LM zQzeAIp-h>YlW%$^Gtmq_lW>0@11Z<8O`eK+%QFcNKNWnQ*vp3d`@6eWuMVzV0~tSh zI{PE;iJScUy#9IwiFG?h9DJW5v}s+N{M<;HC9bCLqkhvQbsi_{A`V)}{c=5#PD|Sf zjCiojc{O^1YlKjwyh595i)0$A>lcEjpAPhzo6AOV2v4Ulw^X!q_uey`U-ToE%?3HQ zyk%92o@86$e1TP|59X~-t)i=um_6b@z?!mRyH(9`3JZ0goN2BNW{B_SDwq%>-OnUD zUnxM$w*98wYIdjR8vE>H8?$Jsr$wGe15)I z?^Y_^`e^KA{)BiLkK^TbdER7mx#38dThB|5PoS{KBG`2gghhfrM)WsMZo+?Ol-;P2 zCDsY!ghk9VM9S3(TUuhI-T+$}Ojjl+dK8$1F{|pU-!QDGaWr`GMYts;hs?yD{lpWt z7thS8d|TViY7+CK0H%~eb&T^M=K9j%S-zd}Lv>TuC(!Fc@ds087}cXatXK`Ux3|L< zrkA%`2+7@=^l4H1RNyvxGsRe~jMDJiAPW(H8k3}NgrcS!wGzZ!xU_fm>VAtSut%r_ zhnEKVI)O9nUYh989*?(G(LW#Z1LILsekxpA6aY5}k<2dyGY3U&d4=OO!#K`WV^DjV zC*Ls`?1S!8Uz{O>>gvhW8u6MZXJNE$Bg#F#!}bTDCWT?XUd!c>+YA1}vCiUhyw2>z zzH4L74xF2Nxc`~)F_>9)pDBJm|Az-z{Z&08?(jz$`_aK>rSg3*6hS#TBnK$3P&)K1 zC|D|S$Wqvb_gYV1-4>_^Kl;*3kG|vF)IFb)BVd=rp!mkUew3UU4u)G_dHKl8zx;9& zeviC7_3YE_!!D+*gDu#k-HTIO61oLDpBc{wnZJj7FKV-qVT3yg;wIK{V2%<+Xd$q# zX!F?@n=iuO(+m2`dS`*ZeilA|6C~)?J&rnL_uPxG&S3ORz0BWF9hX~GaSsMZ5AQ@D zi`AOAwgU$^!*{*+9&vzQyZxCabM|#!@g=aZ;ErZFx&mlf7%OeY{TJIM7%DTQFy}ht zbFJC_+O^A1J@pjr9J@R}ujID2*48G^=Py&diWCtE6F0FOKSp32&;;9Yk0yU^Sue;g z%wZag&eO#79O-R;@CUzm+W3M|HC;{hBGWKtPl2vvNxHtU{;5+VJ?Sqqf14R(wlEX0 zt-+C3k$Rk`sW%%v^gt!6JR1-Vc8wDu2@a148FF*|HrDs{*FeMgjbhE8DOkj*B-z|7VeA81{!3pkm39$2vjbc-W zTC}K|7PU3hlA~3mBa>9krk1G|;mhBjo3pba(^M5zU0-*pAKJce=L3&AnwK>z**7b) zVX0Jes2k?-yU?d&EH97GnaKYwgbgOG^)Rg-o)>6>S>#+m4B0NIea&rQV040@I9~`s zoCP4&!oqy$-@ChPoEsqfRR7K)oD{4_BFx{ zcN+DVQ~a^!C}HFaA5fg{`YuQLKy>k9c=2M>SzNTMJ5?LrYA=w&kp6-`9O}P7hd;ly z2jdrBzQgX=i^!s~h|Jzo@;2lQvz(6`ja!)VxY+KkVjP(w2O@~{90q+z;k&i(4(DBU zsGrl^&8;(A#9pRL_L++pFaG+<%8T26RMcssq3eaHa4)G=Ne*jY{kgfhk&GM1LNVKN zLc=n`Ap;qT$`-%K?kJY|Ycs)&z2q!CXN!g2%$YMY_VV((_^Um0=BfJW({+1k>4$Bx z@JKzZJInUcF<7>j9aKjS<$HP~WYpA$!%3_$OR0B=b^uzkgW&v~onk%5vc5tod?RQwIT_&aQEd$JHkA0Y0Up5FPx@ULv z;Jndd$;-H*;E52=y+C4~lOkf$c$=FXlg||uk7M+gxV(DK^UkfZ`%avoi;G{f>vemk zj<5A=_h~n@``Gr|PW(3~q~STcJ~R4qDo@OVXI&G0y4f2ARs~=~JXOi?#nVza+#a51 z>|@GWl;UBnon_C#SL?Q$Xj5nrcMCmGc_UfkwY zj$t^ea}3iHQdefzjBrQtTIb8MH}Iqz;;f@M`&ZI9yEacaXhXlvE#HIbIQv&xidM6i zj3v7^6=yGIeg`ZMWKG9v(={yrK^-5HMR>v_s=c=!cp+RYvNrtR!?J-vR9n1#PE#Hf z=X=odzGCw&+KZA(j3CQw@z%O2+&@+KI_(pl#sizOc18eMSNHaI;Ac1_6anGB%=Y&a zLH~?Il%46Oe>7i5Wwx?VTTe()vzuzL_#cU_y6A3* zr<`unR5d7f!^1x<@rPCQ;ed0Jisfrz$oWt3FC{14+uptwVuCjQr|S@)W>T4-@B{)Z zvESe4re2EYHNoB(`3!G^jx+6@JY-e!1HxhVxH$n5<-&+Tb>c@x)04Lw8rI^3wxfRa z4VW{qLiJIQGFSoMOt^)aG&oS~GM33}B5iyn&86aAHBLFO!dG^4BOgP1qeA6QvZ;wm{uWlb?znr8x%ATQ;{F_^ZxiRz2;-74Cl2g zW3G`g#9M4K-Q!qFi7MiOGw@u%JIP$qO#?DA#P}SmwUWlbIJYKa}~& z%+IELb89%_wUl@n=76NXmWxGdSh5zUA+IcU2y~NJvl{z9F1auMJfcs{?)6= zrSu2ncL3kr7=e4d_UAVe?m){-jo%y4gFKFql0nEs3@h{yX`n_nky))BBdkBD1z&j9 zqVIpdX1-S$8mHI&U)kQ?*-pY674|V!uft0v3}xR{Uo1XbC_Gzyud$>qrE_HfXK6ye z+(I1>-5R1?6}pp1*yjl(gbG~KHYWv#uVRPuC$DaTZIu-hR4*oe?j4e1YO3X}Gj_M4 znue-eu%W9Ox+d)rPK+CbMAgXMvizv38BCFt`yM_{-Vtl6sYsr6YM{rkCpy!W3r7_O z!iDPpNl$c$QfM<6_AAb0 zTxG8FIGUe1!g<9;8g;*+ar&Gj=G|XIX_^95tYD&1LWKy$GTX6O9brSJ(9#rIOH4)_ zRyAxL8hStBZ6^U2dxVN4nn1uOpAVfC6i&8n%=0Fm?~Ymx0*c@6RF9%q4-k$3u=+Q> zPOWZ|(3^1HYwR^QRr=5F;)@>T>(r#Fvhiw{N`dj(=qQQ0~rM^_Eb*rNsvdjUD$Ud(j zXe8~XBhMpM3)VPcDJM>PT@fp63Rt=bn}p6WUi1dz)(q(yOdNs1PKM!0X85|Nuh9_X zh^)%WgOb7&SJPa0lO9xvq)N)QU4t>lP=^K^s;U7BLY7FfrfQZhQ?d)H4@_yAEGY=d zKdzginKeYq2)i6U0q&PZmqA$eL@>0;tMDS8gh#s=(L=|7k8|{5igLUm-NH)D-T%W~ znEGsmfv%;g{G4x>aJ*1cS18$5Vf+|FO~F>aL>*UmBE-Ci9Nnc(PQi$zrHt+Z%$ll^ zUZyN7(&YN7e)#76Q)HQ!K?yo^K+jahJQ_T&u|K(9xk7HarbE|^S2VsI{HpL4j~kzz zx~g5GDf;Mg-{=ueU&7QQzd?ec%oB zcRtik@8$mn_mbnuhn$&$_Tqb8cmJn< zb`_b$2g4yu8|$2xG)?q?^@A|jh4lk4oyI=buM02jbd+I>36R4p2b`nv9jAHDFVfUdmr%G1KK#r)c?-~k;RjR3=s>zP5kenh@Q1Fz+D4MP*Jis!! zav690NmbK$>IJ5=>P+zzrdmwV;ny&2Ydhs2AO^9y1&8)gw8Dv3LFV&`=9U$oXx3#l zEEl6vrPKMb+3|;^#oX6&-P!zn>1fh>sMMTZ9`&n2dY@V#6Yk191Xl86+;iP;^CDKb zL4ENiR>h*)wT}=yeaeA&Vq8OWB1aKKg-9Z&2w}nb4KQ33!#4xZb^I{&9oNg+78X1) zc>An_btaB!+m7vco@2u%LolyS`_6k@|Fo)5+qGF$LQ$q^VDYGaQt;Qje-kCJ?ZWbc zZ#zlWtHA;D#XNJY+Jg>XvaQ-o?Gy0jk#xf?Lsx!KpPA8rP)m(i5VESQQblUd4qB~g zAE?Q7%cCMP-N*V=0lw1jY3b#S)yx%qAPs&?#@L|o7#5<}Js_c6KXH1|DzDdzi+Qct zU9Mgh8q;Fdv00&1U^WdpVpU&gg0CoQeZ6cgo<32RLpk4BZQJ3zFB0xMj;O_=dPl4n za78fVjK|Fzd73hq8+G+sIt&u^zAmSZHOa-^586C8Wjb;HoFV{y;*>+1nJUW7kr z_ritUB-zHrVJJLGgCw~zA>Z5EMc(59W|IYA>2Y7#1%80B@0H_!>--61#<%qL;NPk0 z`Q}@2zjsr>vs)p*r|cUY&agZ_2Ry$!n-cesGy!zo(jCo+JA$9&)jPIvgfI2$BV2lX zKEkfRG7{{4u+aP3?QrRR`;Bnvg&*c9x8KovU*ycE$1@vX_uk8~3nwMPe7IwHA)KnN zoDKyXa?p*t%`z-}dfq9X#F&_AX3OR5$)YoV_Ctp8A>%_&KYb4@tjs-~&7Mqua3PyL zdNlVpu$Ny5vZOLsA+XD9|6qLHfWMbM1TWc_PTupqS^W8TS=c2znj;vmjpY7PEK1_p z5u6D~a%2QWdE3evBP{yG_0#j}Y)vh+0;M?LUBd`aZl0`}OJ{mUpf{Jg3l-|& z+r*aE;rId@i-T;8nbF(4Ah~%pSi($;rSxqNC)5)auTu3Y$B$RMDlEQzT&s1A1Tde~ zIN$7GngKW)r*No`ksxOq{=<-f+5@wF$i4;_E6@dwdt6wMyRm&hx5Ua4Mk z-I7-BjK#k6qYU>;Z-@3qn5#Vf%@0_19x8%r_@ysXC zTcK+%EGTMVov;Ii!6+wK+o~%>)ntt>Sc(pE0anRO@hv23Q~HQfL3LA+b<43oI`Up$ zLVWpeFemR)?fzAT>JHV_hvuxXVtBqLR|3nf$FgLpjL05kEKr~g5+&qc!UyVsgitN8 ziDMIVL@Fs-AUlfgFvXFGS9FIXocIJ2!FDofjvd#LJswRw4&(eDj&0he{HFH!O>M_r zP8`#qs4<=*!i~~MD8H2nVt_3PtG5)Luhr`^0LnpHL}f|Mm$f$n7QUr z#|uf$w>0XTV4-Y_Fv9NcpUoe&!z#4hv#Qw+BSFpu2b$A8&M>?R_oT<`t8gmp_r{vFNKxb&bt&rr zO!z6+G488js2wY2dd(aA!$&lmDa151teHX_4Na1NX?WhiJHvleb)d#u=NapS0ZeN? zV~R%9dXj|e>pOdaYFOGA4Gay01nKb%-|o+-eoXfmO+hNh6lY2jlSvg&EMbrnRW&8P&`#0gr(_-Oom`P zxmOUn29a)F=Uol&w$Iydajd~WX)U+V7K68EOYIUVw@U}3?OLOqhNFen=&KK(MSJrX z!+gD-$CnxI*CXXA|8W{mZ*r{fF*4J5sYYI}^?PaS?ta5o{(TU@*XM0(agn!W^$prW zi4ON)puS~Vt30+DM?Agn6hRoShFF1)0-VfNxKEi^{cVu;Xkd2IK zc_l7~VL4XvMUabGIctlZzM$iQ%+HLf;U+m60;97bGDUBDSKDL2s_om}&p~>(hqv6v z?GKBmJ$*iWwgrB^JAa<9^Bmv(ZvGtKciZQujcrOq+7Ox(VlwpFX}+omAc_*qg!7j7 zCnBSrCQ*-anqxl8ffj9iNz-gqLf-L_SRiC17_RQ`rILZgAR2aFVUh-$eUa}HOv`|P zZS8?xjZ)xZc`!KC_pt^t&oL0Vh!S`JF^9&8u{MM!yK}Sr<7-}rUA}yjr<)i3Vv8#8l1w%wZM4*!3R`)MMt1XmF<+&`9i_Y`Ll9VrO$WMTBx+Qb~&Qf^dL2^4t-h#LzNZE1;a)HbAxsA^)Q&pUxK%= zp6@Wj%X{ZB%k>hz>>(jw6nP{6`1Gf#H1efX#&Q-z>)=eTJ6e)2F?tIlI)6tMP1nUn~5QriQT%|D+IyGi*S2B=*p3 zYq4`aUxFRNcsV+qhfS+;XKA(>4Z_yovyAUxt7)G>TyJEw=z-0V8FN5%W0y47kaHnv zbJhn06`wrOsC&rr8`*;)(gZwfL~MoKL)GrFXEj~c-g1$8j~H*^Sw3FEnOFQ;vl?uP zaLx!luJD{o|BKWfURtvEyJuASP2%ZCXMg)H{(|i$S82R1I$q`=!Z*RmK zEKtxj4zEMMMXQlN0u^%dqRyx$z|jo^O7~u`&B!I88&`;?XmW_nrEn2H@diyE7E}9nOrR~JaC5sOo3%ieXG3l??9VEG52#-Cq2rGt|`&a8u=fMe9 z)=WPhfpo;E__X1&!;d&0*`Obx8@tcpRWlk-u>=r?ASQ-cQ6vXOdVwLy1?0r zkfUi#Pt23$vGlsP+FpjMMi@Ip;9bsfDxu{yp}X{7dGW_T@zgWUD|an^0!DJ;_(v8! zH`JqJcIexhPIAqvtEu-lZQrsgokyID(c@dcK%a4rMYYFIJEU-IA=blet`zA;-XM~# zg{D{0gL>eHP2aXEQyj`F&v2S}wrQU?dKE7Er+?tFpZclKd}iY1{;v0V&&BV2=NsR* z<_NF3fj;ujoVw+{eMa23DJ~YlEb8bI)`TVt4*Vl7yt2Nx#%5oA< z`6~;2mahwpPM%AMyrTlBWjrxAdG-W|ESGR({_8c(U^Q*0H82*#@N=6bJR zq7lmO6D|pBj>g>jaLCI+hwJNQ`-QSSc;S;FtGG`%H|b#kubw;1I3*Z|x;?xKP%*xG z?I3RK4igerw66-TsNal-Lr%XkRTGB!at>#9YYJ>75zpw2sH%CCgS(=df&_ZNb4msw z+Zy~$u)f7WAzD8eY_V{-*BTDb7$G||2=~x6#*$owLld_B~ONgYrF|rfb8?TjrcH zl1?3&vumv*Ht}EsziPp@PTW4$j?ep?NDN=Tcdl$lb8~aGVr!IdTp~5N&&Vx%oW~k4 z8xGIN{rH5J%z_Pq(Ed{lBsr`k(4uTVUTd!<&Bn7KGj&%Y>|W>ISe-qyb%f}w(phPH zN05W0F*lo&{J@U`_hBRdkV(i)KKRS9mk%t)WbLedws7`%A?!D)PBp1`G;2I<%E(C) zbAFPy`-GSeIYIuOhur{?kw^Zy1#%3=T1DK=l+GQ^sAe?nJ!}4Ity^H(r=6!ucMWpc z{!HAC=;NXDcYo(p zviaZs?fkolu3z#m>CdybKKahaq+rsQ%N&alqhbQr?hr;^Jkvi!B*)`+V$9MV9-bTi z{A)MzO$<<6Qm867f9BGqpK+qS$hi@2gQ`E=-j`uDe*bE6{l=ix8cdBL%>P5Z@GY5b zq5F?>i+M<{m*68#(6fl>@=*@iIdbUY1eJLV{&R<$m2n{NzKmhL3##H90U?3mt4gRU z0mBb0P}EpA88g|ta2-5QAJ+xbA7b4CGgSwx=<@oNfL-e(`w@{19|_4kLm^Q_6j*>y zz6qZ?8g8w>FDuDljPh+{DT?qDY-8f5Y)8XWvT6H`^6`$0YMd)cU?R2;=ZH$D7a zcRIfWJ)uoL3r}agiT@6#Q#%uKb1b}?1TXUyFNqJh`Xye{&eAP{fhf;oKv^U(2zv=F#?&8bw5$(C=*)Nv=aXXZ7q`kSDQ z-@}<|RQVY>DnxQc(TF0~S?$!V?@@ZyYH4Xd7Y30)G!8}{Y#yhRV{D0`nke6-8HhRPYvyISPy4h z(^bfvEKBF^li<$$^U2&_&dg@cX5NI=t11|ED+r66LQhs@7(rP_0qs6pm1{^!s+=NC zL7>x4s3Qybc_F^L|I95HbG|{qjP_k>T0v-;nu^u7U?cf)q3k}ZyHVbTnb6Kh4h(H0 z>w|UVxXcej<2}q!ysWD*LvQ6-m@8D9!AXY6N>ou1Qd(9uSz;%HX0-tJ<8ODpN-2(X zm+CAVmnvSDNQ#N2-imDM3VD+fgti?9%JS%1OGMNjqE>>HlW1)dq1eIW>VOQ#5|MFv z&h>!pGi}=fy<=Uwd-s9i@c4yyRGr0+{ih^6Y8b!C>MUeOL+5jP{`U&MSXc~2=}~6- zd>F@ViE2kY-}2~;?Wr?jgpkipx1RAIZC~IePk&ko8-~IDYktZ`xR9RmG@jB~oU*Gb zq{8z78ku<>rUS4m_SDncM;(W z-uOncC-R^>VOftFl_0X5a^U5-UuGYRfODQ-^S3-J2}=gkO(f0I_wgk(buVd_B|zNRLKeShK;qbXWKkyoTGjPoJE z4CGN6yx#T{_zQ>g9F>sK-5|IkyTMM94B#(~$%L)ec9^ph_ywCQ91Ip^_js7J)>}hS zZn3kyy`JpdmvfTD$q5+@x-8~_FK|!Jy{Ru-sv=55|%Q4ndgV7M}qKo!s=U3QsRs}(J#$h!0)gqcwZ zRUK7DXRoVJqDq>ssgfdTxK@Q1SVx|asa7-`MVCO`f#b<=0>nzB3aphGp}1C8OpO+` zhvm^;lp@8!)#vlp39t78eT`YRoCWQb$;ZNo^_*LXEQQc@?zQbtO?QnZK&JtuE%zQ5M zGtdK)CfZjHp~ylLuPk$)GWyR~`dzMG@r3al)=A(K#_VGbSHvr;Ff<~HuP~Rq9p@+q zzvQAeK}1)I;gm!Oi%p`T+z?b0In4Y^IH@_#M5t8=4T4aOcN+?)6ZNAY*xy5lW-KA}K+q8Ps)<2Dh3S|m1u6+P-Y@Yr-r9%2ogh-&8>N}!H%TrEV{`p>J?cRgBr7o)Yx? ziF1R=-R^S`_z#VD-GwtRIL}NDaW9^quB*d4 zPwJZZ>bM_07{j;Edh7?+crw~?YX%1}!J&?U;j*Dx&0zMN`ALRV;|G@S>b z@v0H-hkNjz#(D*Vr&*fBYbSWQY>Y9;>wvjs%NqhG>a<#4!Q$=&Y;t5t2@lY)xEf4j zT~W-x9_I*Sk$763+Z$J>N8J>d%Qw)=g%eQrm9l)Q2VK0AGTE|}x* z?K5LrFUz^oW_i8_M+e7j;9hEfcah&9r8wZeRiul6Iin->qCW8`RUr#LaOgP zl6gGyB={ZcmJ}qqA#}4(T)8cKqPEY39 z@+sOBPY9gKuo`lB%4;JmO(g!fB;bPf_73^2BF=k{oU5aLB~lLK(KF|KviF{L(g_oY#bdI?YcXQaVzm(dn}{!8Z9T9-|LL zB{aoA0mCXh)fmV*kdhz|=%@V+_sER%iRxVJ-@EpGXE!!Z6W6Gmu77{-z7l)t`?s%5 z#~r4!?^_&dM}Sm-g@}O=7!|!faku?l!@!r%pFhvu`q8)2%a^~}+49f(`0|5C?@7G& z=E7S~om)T5HO4Cn4{@sV2u3#|%7*rX+}|*`vctCia6`hO{$D8T2M1ehFO?Ie%%7xe zWep7n2hVd{>vxf;4q?Yr{lEFuLQ6ib#FZeZ#L96gsx`{46jXc>2@MbGdE1kt3TC(X zB}WOX&9Z-~Gzxr<AO&4MUA1o*5(X2+>Zwe#2U;4oc>%(kO*w8jY?*O z_1?LNq9V%E3cI~Ev{KMngoQfj^~U?j2WPy3&?B4#I2-3aX=DS7>#~sxsq1L()QGP8 zxvWd6x%vaz1E3Ew!**>&Bg8jN%TRIzbjX+*#L^WK6a!6Vn_j$b`?`gMO&tZ!O>!E| zmT^n?*QtNhqti7dw_v=r(tPkXM{N@CJQqAo`Xz-67lI@i?(es*UE98NY45^?-Q7zU zE*$WL?`;GX4fogA58(syK0e}!xv6jR+*atD-@Fha30-)>xcrv4Jo5PCk8htpe=rz$ zJ08CLiZRU5Ue`0d3B{`kYAyJ-uW#(vW7sSQzLx$v5oAprgDvkPi zDw$C+M@_w+{Qnf+9l^-|AI5jL{G0IIp`-qPiti4cTsdT?^Zpu+0xBc-yfA9GHy-8q zH5A6sEAcJlSkRMCFlh`gAfLu)Jd`sIuWdg9GyN9FVGpkbiL zSO={H?U>+Fzw9(-oS!Y1oSDW|rl=PcHH0lLstRj8P_`S+j8iJvGfrdjEb&Pqb4_Cr zd5ciq!dT!TiWt528kf~n>o@pfjk8Nvr4=ET*Z9_8U1F%J=Y*2pJgsU*KQ&qR_faGLkd1*-t!-A1)I8_JHHFR|luUT%r zYGQ3ZJzLfP)|6EzflJ_+dXHKB^sVPMmi+)m+vm<_wfk$Ba$i=25h!t`wEb{@A`jGN-8zV?1;LlpVH$!M4EBZiNV>JrL`M zBlzqIjP~ffFys6wjsy8=py6=&*6vFNvnfa+SkBD>#&oGcAhP&@bXBx zY?d}lrLC=NA=@*ckL`xWUR&?5R$1@p$y@z`?|NnLt(9VBH1_8SW?PC(2*fTRahlw{ zC}}mKElPs@j<%~Z&e#{-;;FSdiJi9Fc4JapSU&9*k0b7>+ji#MoRn`b{*e7g_Mh9n zT<+F#PJ7OY^GEaKU)eA}EmvY(k&D~0{IBhQ@1$~Ip4hw%ycUU{OXBIAix|7)9&9Ab zz&r$!r00>3oLYC?@a(yz{~p%Bx|l59cQ)&K$4|C@P@JUJv5RGMrs^N>#LisX$+eD$ zrMg+ldrM>fxm#;%M~qJ+jW^BpM;wPyDsME3`liDfO_FaOAk8kK9S;VB;Q)Wa^nJjs zXm$-L{xDeI3R~+)IftVhs}Cn!OFqweg>wtAHKcOhL=^!ZIIqw`U4j$7!A+`?NQ)d9 z)SbV3Qv2u=_R-*IE0##s4;=@S{xr!Mbx)=nXj+*+|W6oq*|K0zYc z<@V=Bw_5GqTF3W*DDWFhpiF+G3fqburtP8P7+V_bNY3ZcN2a0FG`;J+_R}y={l_1h zf9_TO^Gg?;#~RkrS~3*Wgz0r_a2(Mq>S!B=0@t4MzfDZ0YIB;+e){i%+~cW?&HnG2 zZDqrh?=s{i(@{IJa+j=L)Q(ak8f1;;{LG@do@<89s7?yX1+%E=Wrb$dnwiy&if%sX z`Ch!3KbC(md@y|f+XurZ9y&L=wtzIDMfYajlz9$qy`+KO^9uK$V<=eUF;gro(2(r6 z(d)1FySe__DoW-)2hgq%FkxKK6PFVqxwHK&x=`S|<-SlM<7T773+S;J8bi>zcoBw5 z=5amHAJ-YvM+*-UzJRIRg!kQoKzwnr716dkDi-@(R)(5Y* zBSKS<(%(v))|++9P*r9HOj1tR_BgYe6u`u$Z7S(b5;vpMtE3&lp+P}yR^>QpW9Aw3 zmV^^UYH_y;^GYu6qCf_#q?xoArGC<1MQF?3at=W%c(MVQArU7ufOBBlEL ziNOF|0K;aby^KV?%TcbG!wjNq6FM0vzssx3c)kW$FNm11+(6teI6~acM$0+6wn}r@ z(6$E4z2((D@78S|G~ns$s6wOa9rssysD4KX%A|1?vE>97m)5xn)YssCtYA)P($2;G zMsp?CTx!Rw4H_ec+iJ4bN2@Fg`@yruOg2}7)*~Nr8<}x6y4H@Cy2~ptetK&(OJU4> zpCU`neKJ}?CC_d$^y}*~XXBPtjt{T9HbQj3Fi^1X@;W6+MHqLYAThW^bd~5bayZJM z*{HUoDp^`yDWh>kDMlf1#3-;xE$HopxKzb*Ckc!qjhF^@F*pKI-J&XEgh0cCN`#DH z<2f%hT2UNrUR7j;Bh*7DO|nv;F>H&f1i3(E#k>RGL^TJxBv=Bd3`xp)O*R8o%42vy zQ8Z@4S}*~XHMGqnMIo3OLF9s}DO4@OL?tUS+9Pn5mtauRKjv`@ut8uR|E#X5x@UyY z{UnZ+FLCq|ymoA&YcZ8F#qxCLbF3J(tPr}Sgw6==2`!{xzM<|Ws5-inqrks}2AQbu!50OS8VGQX0!P6}j$ z^OvQp;aL%8$TBJ-IUuP&Cn`pul6`ZG&%@)7_BNr+4f3~ z=K^b-U7H{J1X2!F~7-*9S=XT)3kW)y&xfKn2r(_%0k!3>$AprY&x~$%%U~C#?gvLiKjwQ5MP!d1~ z&myr3$Pb;5VdzmZ@AB9JN!N|jGW1>DFl3_2cm&A+IfNq=PmPYkw<8^l0?pK*Tf@~; z1Li|51&>5vCm1O>oMApzZ4f%pb|z6H8wR?OcT7#Q0=N@lY}p1=w18!Ew($cJPV6dP zt<0|#nGX3(5BG>jAjBj-hOn(V*jo%whQba9C5}t3B53~+N3ALa9={$#Ml3^+dnmbx z45JL1M)VpwJGeX}QmiQwia!jU%d!nO5H6V7Fe>4W>7dvm{EDI@v>x08*f>HmdzC*E zU3KC45xhZg*{Tnht5Rd4C(e)K;?Y>U;~E{N6C*n$jXO8=h6(@9LH*!Cd0RSl)?PWq zNI_|Pn-WK zo{8b_XY%-#U&%ELKd_hUj$=LnpJA;RYMS9{p0CTy`5hA6oq!C@A8~X;)BeWKsu4>e!+ym?hJ>mZ*tSe8#&FQAZA z<=1J>Z>zPt6iO_%h@$8{FtoR1^_J@os}d%tRweGRn@{bC6ClO^?QNS;e4h?O#=tXD z)5bFz=?S&lT>tAIJ?8UG!s|6KuIl2<6-QdG`?}}F%b$VkK4nZ@J_suL^&0f=Z+{1b zKc~Rs)t$_l%!8RnGw(tB3_ZdL+8S|MyVMnvBG~oPDh3A{{5c{@UO&g-?)q33z(oe_ zqG8z~prW?psM+QYQS^o;2sdBlAXROc%G+^UwoApVsUBa~hz`<^(P*|&w9ByWPmuZm zb*rQIz;tzPpVSvzOVboLYp9K;-T2M2V_8I5GvRI-^V#yJ?BigixwL!-r(RHVTf2o;njUaq1fG>^jDg>j#?K+nrSnkzoS3n z{f1$@d-Of%U|6@82{}0tegld>ZgkW4m~9_N?}6{dF>XG73#D5Z_oe@t_a1(N5njqa zU^Q$D1T!d2)R94z%dPcMp#z($k3fN7fpwGA3KAS}Z4OQ?gglrlq@X%5d?>5T&L2A( zL`OXT?Pjz+zj8#VHlWl5%EfwGHS zR7`iEInYZSn`)L3>8J%+4Bi?1g$9|L=f;uqezV;jrDlv{=1s7*(?#SA;9*3V{py=p z!x%D_-I&4Z2ZJ16C%CXT*lt}*lI?87)_y zq!Bp%V$2$o2k`uGII@16U|j{9*~r4V3?sW)Hx63cgIx|wH$JOz0UJ7mw?QXKb_ei% zW`c)YoI=^+%+rX%H);SD|Bdbh%4FUcT+34zgfj5WnYvMChS6e-m07)kY>4%{>PE}B z0-bm;SjXzSa9F<=i3;$`mT_+#ml}1x@mInjI+(HWXgX#ea>UYJ>Pm$hpZZXHJm8A{ zO5O?#SD{a=3wPz^&~7*l8%B z;bPcd55r@}!qGc6!3yZB6)+K8NePGq5DQ6intMN-Cf^7CHaQ1||V5l4%kvj-0k#Jkq3DeQ}U*2CFbh zkiDu#qp(z`M=PyS*2<+rIe9|o>)e)q0)}QAN!tzQkIWs<%%{ZS1R%xEteyhoP3a13UW}I zXwS=MjE=;HsoBC1$!NH zMJP{>7I8}u^@6bwE#^kTVHDe44k+5>l$TvB5shzlLcWVCJZ~5iOjM1^CGja4jB7M#sXW{z3VqSEYE`ugnN5-iF-*@ zP4{$-X<+;5aBDQZq2R4W+Y*k5xCB{6cA2WFs%qqmc_S)1vB3&~8al->r@1)qd}djoBHt0#9d|gj zdC@+vvu#he=h_sIqg!<0FP@o+N-PZ75(3@nhZ}cs5?4gc_3`kVwR^KIGyqB7=ys;KubO2R$>Q>PsrYK0N{4*EqU z!_n=k%O;-!P^}I(N4;g6^pi16hKKAep3g~AT_)m=3sE^hJQ&s&2YYa8WTi&>8>F%_ zzWl}gv3!I+UP!S=@8$KjDbEI&Jm~RrNeaocx)uv!T=YVUSknlelk z;T}TfP~UZpoZ-4Y#gDu$i(1Tc8ji;-ifB9sf~@8hbj^40WpBK6gHx>;hNc=#r=QC1a@xyoPUY9+BYxUV*ILi_P&B-xUg{3EJ%z}R)h z3X-n;G)VaGiD2f#uf}!;NR*?T6_7hd8-kgljW2jVc{)v%&$SdGLtv8mEto9i?>x#+ zC(q8x@TN;gpHy^ZMNv+kJ9kP|+UU)ETV1qarU5UOEY%-}l?AXd-*INpUp%Mi(ljQK z;6+%<3=ns@pMpR|BA0Ls3)SyUK2Y8dcn#~?Do?J&%sr3*m^t!jN<1W}eQLNI+^@&% zCEd&GFX{hW0$cLKPN>-$EM4QC34SaxL& zCj6-(&pPDfe(5l!O)*qZj2v7PtbOHhI~VslHZyC zBZG)XZC+QNf$lPc|1f7Z$M~9e~i%7%uF3$Oj& zcYDN$Jik%P1+JT&^$M10Fx%VoeJh{M6^@#o?fPEX-%gUjzzco5qAEqpXNjv2-K2)^ zl-z%MSGJTd)=oHf5J!HP9oHz)*R5~zZV0TA11_g92jeSO0`9Y$^jk#bI18HG<;7#e0i z7a3OZA4f+5mdi!|S83M)CpU5R_r2TRu5xE$$6Rb|L&#zb1_NKdj|4&>KthdEh!eEZ z?5@08Nghdex0gmp@1%Fqdv7G97eacz-g~~@d$0dDlJ@R=4*81tA^rbvMx&WGZ{B;e zmgL&p*^Bkr9S_(&EpLL))ecvyH}0xd`OIRicq=_bhEpz8nXXyfzjyb}rTWxVeQD?J zy$2SqqY~2X>c!M-mhq?Aq)X=ZEbrWLTCKKl`p)G&bEjA6wgX(LTmYR7C%z^hpIbPw zX@uu5Z5rX?j~wBF{ICDy-yT9*aM-*^X`US3Q)!#8?i@C6$1Ubht4;K<*vj-!D*g}j zFk8P3xxD1{5)v}NrD@m)IBcgqUEVD*15xUJb;LhTN#$l6J2v@bZdu;JYsk(EnNiWsG|;3HOozvyQH+6!+~bR`>0z%DJ*{-~Ue+ zjq3jWrlss$*m(DHccGo;r$-jc@_?~C4=0bnRnEWYNJXA|o%|zDd8maS`XRNNH?*(c zb@e6lyDq!xJZJWdCN5}K(>bto zZTcblZT;B$vGF*oI z?hMxpR~PQhaHFuFns(s0cHrNn`iW=hjAf^zN=I(sFCRMh(4kCp%Rnv5dAS$(F%Ek9 zs2e4gw|sM)IBu|fMc}AG9EX=4JSa7k=LP55!Kh#tf`S9TB4@vFQ$ZE_g{0sWtb#tN zY%4p8nz|5y3tPqxM0O#EPO5cFVSswe6TS>x$vMuD#`!2pBiz%%U6-NP7}zoGE+dDK z))ZQa@n2ZD6mxKJ(uTqn9`L!Q^-=cxbe`jE`$OM1&$<*PuE-a4sYZ2bP?K8bHS!sn zr8%0X1v-ruX^D17hDSST7d_CtT)s>XqCK>i&V(n~PY38MI-4F$=g7CD%nRw~(IGmY zE}+A7AzegA=wiBrE=5-LQ1cPq%jjYBaJrnXphwV^^hmmjuBJ!PHFPaqM~|k*(Dif! z-AFgl&2$SrmX6Zn=<)OfdLrFQPoiV=WO@qSMizC=b6kpg)TaTtbex9d(TIEsD5Mjl zDWaGXTA@{1qcN@1Q|W2+bb1ColWwPH(H-<`dJa98o=4B87tjmoMf75N3B8nFMlYv3 z=@s-!dKJBzUPG^?*U{_g4fIBO6TO+236OdI!Ce-bL@G_t1Okee{0%0DX`? zL?5P)&`0TG^l|zGeUd&!pQgL%GxS-yhdxK2r!UYK=}Yuw`U-uOzD8fCd+8f=AAOU) zMc=0H(0A#3n3o^WPt(uP&(hD)&(kl^FVZj3FVnBkuhOs4uhVbPZ_;nkZ`1G4@6r$H z_vrWO59kl+kLZu-Pv}qS&*;zTFX%7nujsGoZ|HC7@96L8ALt+HpXi_IU+7=y-{{}z zKj=T{zqlYzI7l8M&(JXP8m@7j8{Fg;w|Sapc$VjQo)`EuUgRa-!Kd>Bcqi}T2l8${ zgO~Y1yodMlnY@qp^8r4K&*lg7Is6dr@VR`D&*MXUK3~9x`9i*kkMPBO317-T!4Ku1 z0$T#uLd<#F8kMiUA@%#jS zBHzkS;$!?|ehS~l7I)cZhZXm@&jWV(I1kz55&Il)$R}8H#4#tl!mGT-V_xT{^3(X~ z{0x33-_FnCJNViB9DXi8kDt#k;1}|X_{IDZeks3(EBKZCDtW z_>KG~elx#?@8Y-e+xYGL4t^)Ui{H)f;rH_U`2G9={vdydKg=KDkMhU(__KTue~v%TU*IqDm-x&475*xJjla(K@;CTC{w9Bmzs=v_@ACKf`}~7K#j@=n z@#6){j@=b2R-LX^)-ViQKaQp>$Em;x4%`)0x3mscJKZ22%%;$Gwe6{n6Ri4MC7$ZV zb6X_Z?GNJVEutjMT9oTEC>J(TXs(z^aWt|#&(zx@klM4G1?HOeX369x(W(_zQ<#KJ zYdz8ExLOIqsANc^i$N>hiQ*tEr?}cx=B{zufXK6=fzbK}Eeb4kJ+e*JLfC9?_iYq{?k7lX zIzbc_1(fZe*Hh?P;CWVw?x?T{YOW_zDTv6KUqo!64Ms8!^MF%>o$-(HM z>R7SW71MGQOi6k@oufF_-=riykfMzx-$5#ahA{{WtH;OP+@7nPUH4aSd0U}$Vbj&8 zowCB2+oZk3x24HVm!AG3E1j{e#0&bHu3R`(`Sx)new2h^pkw8<(n5?3v!oU#EOz}Q zv%L0J;e@8MGLupJ6|}a_+OT(%HJ)Yen7Lqow?uJDHB{@Vb z9AgBv)PhR_w#| z7W*!ucOL-T%AZ@@0k)$A;;2< z)#5g}akaa*iTgn(4m$S0^7|^EefgtZA1`5@^U zodte9XP#+5pesHJ{-vGqPzT2`jpdY<`d-jg^|YfhZOs%$N)oS1Ut8TSRvgaZzy$3a z!kM&E2-A*bW(~s?h<-}X_H~ei;&!y^b>eZTngeBAi?N21A(eqE;d)#gAa+j=0`0ED zt-$qb*j@>}3*wUNcZ0PuRs{l9(e--)F!GeRf>VfbG~6hHe>4-&PO(;*jTjo0T{P+1 z<>TVG#>L}N;J1gWYjr!K7#CU1)KHD5JZrUuHHk`@{nayua9B>^Qo3f-ayK4#5%EPQ zJ5C`_bIz>5M&}j$Nju|+z6mPLXA~=1d0C}}EwbZD6uZ6g>=vQia%PJJslwbAfw_Bg zvncO-1YelLwn{GKqtpyS7OZ zVNDJ_Rhvj!#;1r+(+KWGVGT(mJE{MurP#ADIzfSUQpKhV-&1B8q_twLR9cYuS-rZ4 ziS0xKID(1<3i#-%7r=mJ?Enl@pIa1I9$9@~#kG;;%Br-SqM-W73iG^DU~WTsrnp%) z1yYq41uY>+lI; z;HV@JYf!>%IfbRrwfvwKx=P%kj;BJ`Z{mNfVF^0%xSWy(`ZvyYa7Dp5B>fgT29K~J zp*>QSteZ2T#?Bx%(|sb5`OX|)30^i*RpVqag3^fu!)<8Tf;hfam>A~TSW(nKyo2F% z;2xr8hSM!TN{Xe5JvrqyxCt zvJPZVIH!Xk?raIJjZLB{jSY!Ty5kzs#E#V!(=!O6D$hJCnZQ)RrZiY>3d)P?LQEDD zRU>O99dZhyqMREM;wmhxhY_?gj1>z_H`6$TlJ)g*BO_*)oZ=!jpw66`ece(1ii-`T z+1g|x%sJ*IDyOs+sTf&nKk7)vP|aD%_=9pZaFyp&BIJGunpJa#d6y$ujN?+|V_QBQ zL7lP^Y~{$5x1%7D8Ig2Y2VOgKXPM|C4 zaSuP9%Q)Q92r+7e$lur`%CE&1z>jm%6QwmKLqFnT0yoYpzyMGs9_QVa%tGglMZV-J zao&w6)-Z>e4VKt(qE+71iltqviwr3m`*yxVC<-aXBA{=W`6vr#Ry5* zkAl@u$=dvchT@*00k#Yqt;M5cZKHvtoA_~3 z%{gwrCeeCb)#Cw{74EI0S>%1AZX_`&v(x&9WIBaO9^V zgLD*0k&enKFRo&jR#~;Q)GV!9@Zj~;fg7jR3>Zk{#u_N6;kzcdvx*dY7HDW{A%Q{q nr<_fa#2@-l`TS-{R;#ie1S4@==8WzZ3Wfg$fsZ{FJUIaXS7ZIX literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js b/static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js deleted file mode 100644 index 419fa00..0000000 --- a/static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js +++ /dev/null @@ -1,6 +0,0 @@ -/*!----------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/vscode/blob/main/LICENSE.txt - *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["array","boolean","class","constant","constructor","enumeration","enumeration member","event","field","file","function","interface","key","method","module","namespace","null","number","object","operator","package","property","string","struct","type parameter","variable","{0} ({1})"]}); \ No newline at end of file diff --git a/static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js.gz b/static/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6a792fc49efc7446739bd6873ee9147eecb2574c GIT binary patch literal 504 zcmVRDYqUo|UU30{jOXAOlHHLvRFXubsnGyq4v;owp10Bx?{BPAJ_0HdOd z(S$l)ZklHEucm&v}P|lNfpT6H6PSGf=*X0_0D!-JU=RZ}zWwidJQ`EFQ zZ6S=pqb8}S_jFgzPq48zEzLXQlLx4=0?!0:typeof process<"u"?process.platform==="win32":!1}}U.Environment=n})(_e||(_e={}));var _e;(function(U){class n{constructor(u,f,g){this.type=u,this.detail=f,this.timestamp=g}}U.LoaderEvent=n;class E{constructor(u){this._events=[new n(1,"",u)]}record(u,f){this._events.push(new n(u,f,U.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}U.LoaderEventRecorder=E;class M{record(u,f){}getEvents(){return[]}}M.INSTANCE=new M,U.NullLoaderEventRecorder=M})(_e||(_e={}));var _e;(function(U){class n{static fileUriToFilePath(M,i){if(i=decodeURI(i).replace(/%23/g,"#"),M){if(/^file:\/\/\//.test(i))return i.substr(8);if(/^file:\/\//.test(i))return i.substr(5)}else if(/^file:\/\//.test(i))return i.substr(7);return i}static startsWith(M,i){return M.length>=i.length&&M.substr(0,i.length)===i}static endsWith(M,i){return M.length>=i.length&&M.substr(M.length-i.length)===i}static containsQueryString(M){return/^[^\#]*\?/gi.test(M)}static isAbsolutePath(M){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(M)}static forEachProperty(M,i){if(M){let u;for(u in M)M.hasOwnProperty(u)&&i(u,M[u])}}static isEmpty(M){let i=!0;return n.forEachProperty(M,()=>{i=!1}),i}static recursiveClone(M){if(!M||typeof M!="object"||M instanceof RegExp||!Array.isArray(M)&&Object.getPrototypeOf(M)!==Object.prototype)return M;let i=Array.isArray(M)?[]:{};return n.forEachProperty(M,(u,f)=>{f&&typeof f=="object"?i[u]=n.recursiveClone(f):i[u]=f}),i}static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS_ID+++"==="}static isAnonymousModule(M){return n.startsWith(M,"===anonymous")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=U.global.performance&&typeof U.global.performance.now=="function"),this.HAS_PERFORMANCE_NOW?U.global.performance.now():Date.now()}}n.NEXT_ANONYMOUS_ID=1,n.PERFORMANCE_NOW_PROBED=!1,n.HAS_PERFORMANCE_NOW=!1,U.Utilities=n})(_e||(_e={}));var _e;(function(U){function n(i){if(i instanceof Error)return i;const u=new Error(i.message||String(i)||"Unknown Error");return i.stack&&(u.stack=i.stack),u}U.ensureError=n;class E{static validateConfigurationOptions(u){function f(g){if(g.phase==="loading"){console.error('Loading "'+g.moduleId+'" failed'),console.error(g),console.error("Here are the modules that depend on it:"),console.error(g.neededBy);return}if(g.phase==="factory"){console.error('The factory function of "'+g.moduleId+'" has thrown an exception'),console.error(g),console.error("Here are the modules that depend on it:"),console.error(g.neededBy);return}}if(u=u||{},typeof u.baseUrl!="string"&&(u.baseUrl=""),typeof u.isBuild!="boolean"&&(u.isBuild=!1),typeof u.paths!="object"&&(u.paths={}),typeof u.config!="object"&&(u.config={}),typeof u.catchError>"u"&&(u.catchError=!1),typeof u.recordStats>"u"&&(u.recordStats=!1),typeof u.urlArgs!="string"&&(u.urlArgs=""),typeof u.onError!="function"&&(u.onError=f),Array.isArray(u.ignoreDuplicateModules)||(u.ignoreDuplicateModules=[]),u.baseUrl.length>0&&(U.Utilities.endsWith(u.baseUrl,"/")||(u.baseUrl+="/")),typeof u.cspNonce!="string"&&(u.cspNonce=""),typeof u.preferScriptTags>"u"&&(u.preferScriptTags=!1),u.nodeCachedData&&typeof u.nodeCachedData=="object"&&(typeof u.nodeCachedData.seed!="string"&&(u.nodeCachedData.seed="seed"),(typeof u.nodeCachedData.writeDelay!="number"||u.nodeCachedData.writeDelay<0)&&(u.nodeCachedData.writeDelay=1e3*7),!u.nodeCachedData.path||typeof u.nodeCachedData.path!="string")){const g=n(new Error("INVALID cached data configuration, 'path' MUST be set"));g.phase="configuration",u.onError(g),u.nodeCachedData=void 0}return u}static mergeConfigurationOptions(u=null,f=null){let g=U.Utilities.recursiveClone(f||{});return U.Utilities.forEachProperty(u,(a,s)=>{a==="ignoreDuplicateModules"&&typeof g.ignoreDuplicateModules<"u"?g.ignoreDuplicateModules=g.ignoreDuplicateModules.concat(s):a==="paths"&&typeof g.paths<"u"?U.Utilities.forEachProperty(s,(_,t)=>g.paths[_]=t):a==="config"&&typeof g.config<"u"?U.Utilities.forEachProperty(s,(_,t)=>g.config[_]=t):g[a]=U.Utilities.recursiveClone(s)}),E.validateConfigurationOptions(g)}}U.ConfigurationOptionsUtil=E;class M{constructor(u,f){if(this._env=u,this.options=E.mergeConfigurationOptions(f),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===""&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let g=this.options.nodeRequire.main.filename,a=Math.max(g.lastIndexOf("/"),g.lastIndexOf("\\"));this.options.baseUrl=g.substring(0,a+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let u=0;u{Array.isArray(f)?this.sortedPathsRules.push({from:u,to:f}):this.sortedPathsRules.push({from:u,to:[f]})}),this.sortedPathsRules.sort((u,f)=>f.from.length-u.from.length)}cloneAndMerge(u){return new M(this._env,E.mergeConfigurationOptions(u,this.options))}getOptionsLiteral(){return this.options}_applyPaths(u){let f;for(let g=0,a=this.sortedPathsRules.length;gthis.triggerCallback(_),c=>this.triggerErrorback(_,c))}triggerCallback(s){let _=this._callbackMap[s];delete this._callbackMap[s];for(let t=0;t<_.length;t++)_[t].callback()}triggerErrorback(s,_){let t=this._callbackMap[s];delete this._callbackMap[s];for(let m=0;m{s.removeEventListener("load",h),s.removeEventListener("error",c)},h=L=>{m(),_()},c=L=>{m(),t(L)};s.addEventListener("load",h),s.addEventListener("error",c)}load(s,_,t,m){if(/^node\|/.test(_)){let h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=_.split("|"),d=null;try{d=c(L[1])}catch(y){m(y);return}s.enqueueDefineAnonymousModule([],()=>d),t()}else{let h=document.createElement("script");h.setAttribute("async","async"),h.setAttribute("type","text/javascript"),this.attachListeners(h,t,m);const{trustedTypesPolicy:c}=s.getConfig().getOptionsLiteral();c&&(_=c.createScriptURL(_)),h.setAttribute("src",_);const{cspNonce:L}=s.getConfig().getOptionsLiteral();L&&h.setAttribute("nonce",L),document.getElementsByTagName("head")[0].appendChild(h)}}}function M(a){const{trustedTypesPolicy:s}=a.getConfig().getOptionsLiteral();try{return(s?self.eval(s.createScript("","true")):new Function("true")).call(self),!0}catch{return!1}}class i{constructor(){this._cachedCanUseEval=null}_canUseEval(s){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=M(s)),this._cachedCanUseEval}load(s,_,t,m){if(/^node\|/.test(_)){const h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=_.split("|");let d=null;try{d=c(L[1])}catch(y){m(y);return}s.enqueueDefineAnonymousModule([],function(){return d}),t()}else{const{trustedTypesPolicy:h}=s.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(_)&&_.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(s)){fetch(_).then(L=>{if(L.status!==200)throw new Error(L.statusText);return L.text()}).then(L=>{L=`${L} -//# sourceURL=${_}`,(h?self.eval(h.createScript("",L)):new Function(L)).call(self),t()}).then(void 0,m);return}try{h&&(_=h.createScriptURL(_)),importScripts(_),t()}catch(L){m(L)}}}}class u{constructor(s){this._env=s,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(s){this._didInitialize||(this._didInitialize=!0,this._fs=s("fs"),this._vm=s("vm"),this._path=s("path"),this._crypto=s("crypto"))}_initNodeRequire(s,_){const{nodeCachedData:t}=_.getConfig().getOptionsLiteral();if(!t||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const m=this,h=s("module");function c(L){const d=L.constructor;let y=function(R){try{return L.require(R)}finally{}};return y.resolve=function(R,S){return d._resolveFilename(R,L,!1,S)},y.resolve.paths=function(R){return d._resolveLookupPaths(R,L)},y.main=process.mainModule,y.extensions=d._extensions,y.cache=d._cache,y}h.prototype._compile=function(L,d){const y=h.wrap(L.replace(/^#!.*/,"")),C=_.getRecorder(),R=m._getCachedDataPath(t,d),S={filename:d};let p;try{const A=m._fs.readFileSync(R);p=A.slice(0,16),S.cachedData=A.slice(16),C.record(60,R)}catch{C.record(61,R)}const r=new m._vm.Script(y,S),l=r.runInThisContext(S),o=m._path.dirname(d),v=c(this),b=[this.exports,v,this,d,o,process,Ee,Buffer],w=l.apply(this.exports,b);return m._handleCachedData(r,y,R,!S.cachedData,_),m._verifyCachedData(r,y,R,p,_),w}}load(s,_,t,m){const h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=h.nodeInstrumenter||function(y){return y};this._init(c),this._initNodeRequire(c,s);let d=s.getRecorder();if(/^node\|/.test(_)){let y=_.split("|"),C=null;try{C=c(y[1])}catch(R){m(R);return}s.enqueueDefineAnonymousModule([],()=>C),t()}else{_=U.Utilities.fileUriToFilePath(this._env.isWindows,_);const y=this._path.normalize(_),C=this._getElectronRendererScriptPathOrUri(y),R=!!h.nodeCachedData,S=R?this._getCachedDataPath(h.nodeCachedData,_):void 0;this._readSourceAndCachedData(y,S,d,(p,r,l,o)=>{if(p){m(p);return}let v;r.charCodeAt(0)===u._BOM?v=u._PREFIX+r.substring(1)+u._SUFFIX:v=u._PREFIX+r+u._SUFFIX,v=L(v,y);const b={filename:C,cachedData:l},w=this._createAndEvalScript(s,v,b,t,m);this._handleCachedData(w,v,S,R&&!l,s),this._verifyCachedData(w,v,S,o,s)})}}_createAndEvalScript(s,_,t,m,h){const c=s.getRecorder();c.record(31,t.filename);const L=new this._vm.Script(_,t),d=L.runInThisContext(t),y=s.getGlobalAMDDefineFunc();let C=!1;const R=function(){return C=!0,y.apply(null,arguments)};return R.amd=y.amd,d.call(U.global,s.getGlobalAMDRequireFunc(),R,t.filename,this._path.dirname(t.filename)),c.record(32,t.filename),C?m():h(new Error(`Didn't receive define call in ${t.filename}!`)),L}_getElectronRendererScriptPathOrUri(s){if(!this._env.isElectronRenderer)return s;let _=s.match(/^([a-z])\:(.*)/i);return _?`file:///${(_[1].toUpperCase()+":"+_[2]).replace(/\\/g,"/")}`:`file://${s}`}_getCachedDataPath(s,_){const t=this._crypto.createHash("md5").update(_,"utf8").update(s.seed,"utf8").update(process.arch,"").digest("hex"),m=this._path.basename(_).replace(/\.js$/,"");return this._path.join(s.path,`${m}-${t}.code`)}_handleCachedData(s,_,t,m,h){s.cachedDataRejected?this._fs.unlink(t,c=>{h.getRecorder().record(62,t),this._createAndWriteCachedData(s,_,t,h),c&&h.getConfig().onError(c)}):m&&this._createAndWriteCachedData(s,_,t,h)}_createAndWriteCachedData(s,_,t,m){let h=Math.ceil(m.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),c=-1,L=0,d;const y=()=>{setTimeout(()=>{d||(d=this._crypto.createHash("md5").update(_,"utf8").digest());const C=s.createCachedData();if(!(C.length===0||C.length===c||L>=5)){if(C.length{R&&m.getConfig().onError(R),m.getRecorder().record(63,t),y()})}},h*Math.pow(4,L++))};y()}_readSourceAndCachedData(s,_,t,m){if(!_)this._fs.readFile(s,{encoding:"utf8"},m);else{let h,c,L,d=2;const y=C=>{C?m(C):--d===0&&m(void 0,h,c,L)};this._fs.readFile(s,{encoding:"utf8"},(C,R)=>{h=R,y(C)}),this._fs.readFile(_,(C,R)=>{!C&&R&&R.length>0?(L=R.slice(0,16),c=R.slice(16),t.record(60,_)):t.record(61,_),y()})}}_verifyCachedData(s,_,t,m,h){m&&(s.cachedDataRejected||setTimeout(()=>{const c=this._crypto.createHash("md5").update(_,"utf8").digest();m.equals(c)||(h.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${t}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(t,L=>{L&&h.getConfig().onError(L)}))},Math.ceil(5e3*(1+Math.random()))))}}u._BOM=65279,u._PREFIX="(function (require, define, __filename, __dirname) { ",u._SUFFIX=` -});`;function f(a,s){if(s.__$__isRecorded)return s;const _=function(m){a.record(33,m);try{return s(m)}finally{a.record(34,m)}};return _.__$__isRecorded=!0,_}U.ensureRecordedNodeRequire=f;function g(a){return new n(a)}U.createScriptLoader=g})(_e||(_e={}));var _e;(function(U){class n{constructor(a){let s=a.lastIndexOf("/");s!==-1?this.fromModulePath=a.substr(0,s+1):this.fromModulePath=""}static _normalizeModuleId(a){let s=a,_;for(_=/\/\.\//;_.test(s);)s=s.replace(_,"/");for(s=s.replace(/^\.\//g,""),_=/\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//;_.test(s);)s=s.replace(_,"/");return s=s.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//,""),s}resolveModule(a){let s=a;return U.Utilities.isAbsolutePath(s)||(U.Utilities.startsWith(s,"./")||U.Utilities.startsWith(s,"../"))&&(s=n._normalizeModuleId(this.fromModulePath+s)),s}}n.ROOT=new n(""),U.ModuleIdResolver=n;class E{constructor(a,s,_,t,m,h){this.id=a,this.strId=s,this.dependencies=_,this._callback=t,this._errorback=m,this.moduleIdResolver=h,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(a,s){try{return{returnedValue:a.apply(U.global,s),producedError:null}}catch(_){return{returnedValue:null,producedError:_}}}static _invokeFactory(a,s,_,t){return a.shouldInvokeFactory(s)?a.shouldCatchError()?this._safeInvokeFunction(_,t):{returnedValue:_.apply(U.global,t),producedError:null}:{returnedValue:null,producedError:null}}complete(a,s,_,t){this._isComplete=!0;let m=null;if(this._callback)if(typeof this._callback=="function"){a.record(21,this.strId);let h=E._invokeFactory(s,this.strId,this._callback,_);m=h.producedError,a.record(22,this.strId),!m&&typeof h.returnedValue<"u"&&(!this.exportsPassedIn||U.Utilities.isEmpty(this.exports))&&(this.exports=h.returnedValue)}else this.exports=this._callback;if(m){let h=U.ensureError(m);h.phase="factory",h.moduleId=this.strId,h.neededBy=t(this.id),this.error=h,s.onError(h)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(a){return this._isComplete=!0,this.error=a,this._errorback?(this._errorback(a),!0):!1}isComplete(){return this._isComplete}}U.Module=E;class M{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId("exports"),this.getModuleId("module"),this.getModuleId("require")}getMaxModuleId(){return this._nextId}getModuleId(a){let s=this._strModuleIdToIntModuleId.get(a);return typeof s>"u"&&(s=this._nextId++,this._strModuleIdToIntModuleId.set(a,s),this._intModuleIdToStrModuleId[s]=a),s}getStrModuleId(a){return this._intModuleIdToStrModuleId[a]}}class i{constructor(a){this.id=a}}i.EXPORTS=new i(0),i.MODULE=new i(1),i.REQUIRE=new i(2),U.RegularDependency=i;class u{constructor(a,s,_){this.id=a,this.pluginId=s,this.pluginParam=_}}U.PluginDependency=u;class f{constructor(a,s,_,t,m=0){this._env=a,this._scriptLoader=s,this._loaderAvailableTimestamp=m,this._defineFunc=_,this._requireFunc=t,this._moduleIdProvider=new M,this._config=new U.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new f(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(a,s){let _=h=>h.replace(/\\/g,"/"),t=_(a),m=s.split(/\n/);for(let h=0;hthis._moduleIdProvider.getStrModuleId(d.id))),this._resolve(L)}_normalizeDependency(a,s){if(a==="exports")return i.EXPORTS;if(a==="module")return i.MODULE;if(a==="require")return i.REQUIRE;let _=a.indexOf("!");if(_>=0){let t=s.resolveModule(a.substr(0,_)),m=s.resolveModule(a.substr(_+1)),h=this._moduleIdProvider.getModuleId(t+"!"+m),c=this._moduleIdProvider.getModuleId(t);return new u(h,c,m)}return new i(this._moduleIdProvider.getModuleId(s.resolveModule(a)))}_normalizeDependencies(a,s){let _=[],t=0;for(let m=0,h=a.length;mthis._moduleIdProvider.getStrModuleId(h));const m=U.ensureError(s);return m.phase="loading",m.moduleId=_,m.neededBy=t,m}_onLoadError(a,s){const _=this._createLoadError(a,s);this._modules2[a]||(this._modules2[a]=new E(a,this._moduleIdProvider.getStrModuleId(a),[],()=>{},null,null));let t=[];for(let c=0,L=this._moduleIdProvider.getMaxModuleId();c0;){let c=h.shift(),L=this._modules2[c];L&&(m=L.onDependencyError(_)||m);let d=this._inverseDependencies2[c];if(d)for(let y=0,C=d.length;y0;){let c=m.shift().dependencies;if(c)for(let L=0,d=c.length;Lthis._relativeRequire(a,_,t,m);return s.toUrl=_=>this._config.requireToUrl(a.resolveModule(_)),s.getStats=()=>this.getLoaderEvents(),s.hasDependencyCycle=()=>this._hasDependencyCycle,s.config=(_,t=!1)=>{this.configure(_,t)},s.__$__nodeRequire=U.global.nodeRequire,s}_loadModule(a){if(this._modules2[a]||this._knownModules2[a])return;this._knownModules2[a]=!0;let s=this._moduleIdProvider.getStrModuleId(a),_=this._config.moduleIdToPaths(s),t=/^@[^\/]+\/[^\/]+$/;this._env.isNode&&(s.indexOf("/")===-1||t.test(s))&&_.push("node|"+s);let m=-1,h=c=>{if(m++,m>=_.length)this._onLoadError(a,c);else{let L=_[m],d=this.getRecorder();if(this._config.isBuild()&&L==="empty:"){this._buildInfoPath[a]=L,this.defineModule(this._moduleIdProvider.getStrModuleId(a),[],null,null,null),this._onLoad(a);return}d.record(10,L),this._scriptLoader.load(this,L,()=>{this._config.isBuild()&&(this._buildInfoPath[a]=L),d.record(11,L),this._onLoad(a)},y=>{d.record(12,L),h(y)})}};h(null)}_loadPluginDependency(a,s){if(this._modules2[s.id]||this._knownModules2[s.id])return;this._knownModules2[s.id]=!0;let _=t=>{this.defineModule(this._moduleIdProvider.getStrModuleId(s.id),[],t,null,null)};_.error=t=>{this._config.onError(this._createLoadError(s.id,t))},a.load(s.pluginParam,this._createRequire(n.ROOT),_,this._config.getOptionsLiteral())}_resolve(a){let s=a.dependencies;if(s)for(let _=0,t=s.length;_this._moduleIdProvider.getStrModuleId(L)).join(` => -`)),a.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[m.id]=this._inverseDependencies2[m.id]||[],this._inverseDependencies2[m.id].push(a.id),m instanceof u){let c=this._modules2[m.pluginId];if(c&&c.isComplete()){this._loadPluginDependency(c.exports,m);continue}let L=this._inversePluginDependencies2.get(m.pluginId);L||(L=[],this._inversePluginDependencies2.set(m.pluginId,L)),L.push(m),this._loadModule(m.pluginId);continue}this._loadModule(m.id)}a.unresolvedDependenciesCount===0&&this._onModuleComplete(a)}_onModuleComplete(a){let s=this.getRecorder();if(a.isComplete())return;let _=a.dependencies,t=[];if(_)for(let L=0,d=_.length;Lthis._config.getConfigForModule(a.strId)};continue}if(y===i.REQUIRE){t[L]=this._createRequire(a.moduleIdResolver);continue}let C=this._modules2[y.id];if(C){t[L]=C.exports;continue}t[L]=null}const m=L=>(this._inverseDependencies2[L]||[]).map(d=>this._moduleIdProvider.getStrModuleId(d));a.complete(s,this._config,t,m);let h=this._inverseDependencies2[a.id];if(this._inverseDependencies2[a.id]=null,h)for(let L=0,d=h.length;L"u"&&f())})(_e||(_e={}));var pe=this&&this.__awaiter||function(U,n,E,M){function i(u){return u instanceof E?u:new E(function(f){f(u)})}return new(E||(E=Promise))(function(u,f){function g(_){try{s(M.next(_))}catch(t){f(t)}}function a(_){try{s(M.throw(_))}catch(t){f(t)}}function s(_){_.done?u(_.value):i(_.value).then(g,a)}s((M=M.apply(U,n||[])).next())})};K(te[15],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.load=n.create=n.setPseudoTranslation=n.getConfiguredDefaultLocale=n.localize=void 0;let E=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;const M="i-default";function i(c,L){let d;return L.length===0?d=c:d=c.replace(/\{(\d+)\}/g,(y,C)=>{const R=C[0],S=L[R];let p=y;return typeof S=="string"?p=S:(typeof S=="number"||typeof S=="boolean"||S===void 0||S===null)&&(p=String(S)),p}),E&&(d="\uFF3B"+d.replace(/[aouei]/g,"$&$&")+"\uFF3D"),d}function u(c,L){let d=c[L];return d||(d=c["*"],d)?d:null}function f(c){return c.charAt(c.length-1)==="/"?c:c+"/"}function g(c,L,d){return pe(this,void 0,void 0,function*(){const y=f(c)+f(L)+"vscode/"+f(d),C=yield fetch(y);if(C.ok)return yield C.json();throw new Error(`${C.status} - ${C.statusText}`)})}function a(c){return function(L,d){const y=Array.prototype.slice.call(arguments,2);return i(c[L],y)}}function s(c,L,...d){return i(L,d)}n.localize=s;function _(c){}n.getConfiguredDefaultLocale=_;function t(c){E=c}n.setPseudoTranslation=t;function m(c,L){var d;return{localize:a(L[c]),getConfiguredDefaultLocale:(d=L.getConfiguredDefaultLocale)!==null&&d!==void 0?d:y=>{}}}n.create=m;function h(c,L,d,y){var C;const R=(C=y["vs/nls"])!==null&&C!==void 0?C:{};if(!c||c.length===0)return d({localize:s,getConfiguredDefaultLocale:()=>{var o;return(o=R.availableLanguages)===null||o===void 0?void 0:o["*"]}});const S=R.availableLanguages?u(R.availableLanguages,c):null,p=S===null||S===M;let r=".nls";p||(r=r+"."+S);const l=o=>{Array.isArray(o)?o.localize=a(o):o.localize=a(o[c]),o.getConfiguredDefaultLocale=()=>{var v;return(v=R.availableLanguages)===null||v===void 0?void 0:v["*"]},d(o)};typeof R.loadBundle=="function"?R.loadBundle(c,S,(o,v)=>{o?L([c+".nls"],l):l(v)}):R.translationServiceUrl&&!p?pe(this,void 0,void 0,function*(){var o;try{const v=yield g(R.translationServiceUrl,S,c);return l(v)}catch(v){if(!S.includes("-"))return console.error(v),L([c+".nls"],l);try{const b=S.split("-")[0],w=yield g(R.translationServiceUrl,b,c);return(o=R.availableLanguages)!==null&&o!==void 0||(R.availableLanguages={}),R.availableLanguages["*"]=b,l(w)}catch(b){return console.error(b),L([c+".nls"],l)}}}):L([c+r],l,o=>{if(r===".nls"){console.error("Failed trying to load default language strings",o);return}console.error(`Failed to load message bundle for language ${S}. Falling back to the default language:`,o),L([c+".nls"],l)})}n.load=h}),function(){const U=globalThis.MonacoEnvironment,n=U&&U.baseUrl?U.baseUrl:"../../../";function E(_,t){var m;if(U?.createTrustedTypesPolicy)try{return U.createTrustedTypesPolicy(_,t)}catch(h){console.warn(h);return}try{return(m=self.trustedTypes)===null||m===void 0?void 0:m.createPolicy(_,t)}catch(h){console.warn(h);return}}const M=E("amdLoader",{createScriptURL:_=>_,createScript:(_,...t)=>{const m=t.slice(0,-1).join(","),h=t.pop().toString();return`(function anonymous(${m}) { ${h} -})`}});function i(){try{return(M?globalThis.eval(M.createScript("","true")):new Function("true")).call(globalThis),!0}catch{return!1}}function u(){return new Promise((_,t)=>{if(typeof globalThis.define=="function"&&globalThis.define.amd)return _();const m=n+"vs/loader.js";if(!(/^((http:)|(https:)|(file:))/.test(m)&&m.substring(0,globalThis.origin.length)!==globalThis.origin)&&i()){fetch(m).then(c=>{if(c.status!==200)throw new Error(c.statusText);return c.text()}).then(c=>{c=`${c} -//# sourceURL=${m}`,(M?globalThis.eval(M.createScript("",c)):new Function(c)).call(globalThis),_()}).then(void 0,t);return}M?importScripts(M.createScriptURL(m)):importScripts(m),_()})}function f(){require.config({baseUrl:n,catchError:!0,trustedTypesPolicy:M,amdModulesPattern:/^vs\//})}function g(_){u().then(()=>{f(),require([_],function(t){setTimeout(function(){const m=t.create((h,c)=>{globalThis.postMessage(h,c)},null);for(globalThis.onmessage=h=>m.onmessage(h.data,h.ports);s.length>0;){const h=s.shift();m.onmessage(h.data,h.ports)}},0)})})}typeof globalThis.define=="function"&&globalThis.define.amd&&f();let a=!0;const s=[];globalThis.onmessage=_=>{if(!a){s.push(_);return}a=!1,g(_.data)}}(),K(te[16],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.CallbackIterable=n.ArrayQueue=n.findMaxIdxBy=n.findMinBy=n.findLastMaxBy=n.findMaxBy=n.reverseOrder=n.booleanComparator=n.numberComparator=n.tieBreakComparators=n.compareBy=n.CompareResult=n.splice=n.insertInto=n.mapFind=n.asArray=n.pushMany=n.pushToEnd=n.pushToStart=n.arrayInsert=n.range=n.firstOrDefault=n.findLastIndex=n.findLast=n.distinct=n.isNonEmptyArray=n.isFalsyOrEmpty=n.coalesceInPlace=n.coalesce=n.groupBy=n.quickSelect=n.findFirstInSorted=n.binarySearch2=n.binarySearch=n.removeFastWithoutKeepingOrder=n.equals=n.tail2=n.tail=void 0;function E(e,P=0){return e[e.length-(1+P)]}n.tail=E;function M(e){if(e.length===0)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}n.tail2=M;function i(e,P,k=(I,V)=>I===V){if(e===P)return!0;if(!e||!P||e.length!==P.length)return!1;for(let I=0,V=e.length;Ik(e[I],P))}n.binarySearch=f;function g(e,P){let k=0,I=e-1;for(;k<=I;){const V=(k+I)/2|0,Q=P(V);if(Q<0)k=V+1;else if(Q>0)I=V-1;else return V}return-(k+1)}n.binarySearch2=g;function a(e,P){let k=0,I=e.length;if(I===0)return 0;for(;k=P.length)throw new TypeError("invalid index");const I=P[Math.floor(P.length*Math.random())],V=[],Q=[],ee=[];for(const ue of P){const he=k(ue,I);he<0?V.push(ue):he>0?Q.push(ue):ee.push(ue)}return e!!P)}n.coalesce=t;function m(e){let P=0;for(let k=0;k0}n.isNonEmptyArray=c;function L(e,P=k=>k){const k=new Set;return e.filter(I=>{const V=P(I);return k.has(V)?!1:(k.add(V),!0)})}n.distinct=L;function d(e,P){const k=y(e,P);if(k!==-1)return e[k]}n.findLast=d;function y(e,P){for(let k=e.length-1;k>=0;k--){const I=e[k];if(P(I))return k}return-1}n.findLastIndex=y;function C(e,P){return e.length>0?e[0]:P}n.firstOrDefault=C;function R(e,P){let k=typeof P=="number"?e:0;typeof P=="number"?k=e:(k=0,P=e);const I=[];if(k<=P)for(let V=k;VP;V--)I.push(V);return I}n.range=R;function S(e,P,k){const I=e.slice(0,P),V=e.slice(P);return I.concat(k,V)}n.arrayInsert=S;function p(e,P){const k=e.indexOf(P);k>-1&&(e.splice(k,1),e.unshift(P))}n.pushToStart=p;function r(e,P){const k=e.indexOf(P);k>-1&&(e.splice(k,1),e.push(P))}n.pushToEnd=r;function l(e,P){for(const k of P)e.push(k)}n.pushMany=l;function o(e){return Array.isArray(e)?e:[e]}n.asArray=o;function v(e,P){for(const k of e){const I=P(k);if(I!==void 0)return I}}n.mapFind=v;function b(e,P,k){const I=A(e,P),V=e.length,Q=k.length;e.length=V+Q;for(let ee=V-1;ee>=I;ee--)e[ee+Q]=e[ee];for(let ee=0;ee0}e.isGreaterThan=I;function V(Q){return Q===0}e.isNeitherLessOrGreaterThan=V,e.greaterThan=1,e.lessThan=-1,e.neitherLessOrGreaterThan=0})(N||(n.CompareResult=N={}));function F(e,P){return(k,I)=>P(e(k),e(I))}n.compareBy=F;function O(...e){return(P,k)=>{for(const I of e){const V=I(P,k);if(!N.isNeitherLessOrGreaterThan(V))return V}return N.neitherLessOrGreaterThan}}n.tieBreakComparators=O;const q=(e,P)=>e-P;n.numberComparator=q;const T=(e,P)=>(0,n.numberComparator)(e?1:0,P?1:0);n.booleanComparator=T;function W(e){return(P,k)=>-e(P,k)}n.reverseOrder=W;function G(e,P){if(e.length===0)return;let k=e[0];for(let I=1;I0&&(k=V)}return k}n.findMaxBy=G;function ae(e,P){if(e.length===0)return;let k=e[0];for(let I=1;I=0&&(k=V)}return k}n.findLastMaxBy=ae;function re(e,P){return G(e,(k,I)=>-P(k,I))}n.findMinBy=re;function ne(e,P){if(e.length===0)return-1;let k=0;for(let I=1;I0&&(k=I)}return k}n.findMaxIdxBy=ne;class fe{constructor(P){this.items=P,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(P){let k=this.firstIdx;for(;k=0&&P(this.items[k]);)k--;const I=k===this.lastIdx?null:this.items.slice(k+1,this.lastIdx+1);return this.lastIdx=k,I}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const P=this.items[this.firstIdx];return this.firstIdx++,P}takeCount(P){const k=this.items.slice(this.firstIdx,this.firstIdx+P);return this.firstIdx+=P,k}}n.ArrayQueue=fe;class ${constructor(P){this.iterate=P}toArray(){const P=[];return this.iterate(k=>(P.push(k),!0)),P}filter(P){return new $(k=>this.iterate(I=>P(I)?k(I):!0))}map(P){return new $(k=>this.iterate(I=>k(P(I))))}findLast(P){let k;return this.iterate(I=>(P(I)&&(k=I),!0)),k}findLastMaxBy(P){let k,I=!0;return this.iterate(V=>((I||N.isGreaterThan(P(V,k)))&&(I=!1,k=V),!0)),k}}n.CallbackIterable=$,$.empty=new $(e=>{})}),K(te[27],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.CachedFunction=n.LRUCachedFunction=void 0;class E{constructor(u){this.fn=u,this.lastCache=void 0,this.lastArgKey=void 0}get(u){const f=JSON.stringify(u);return this.lastArgKey!==f&&(this.lastArgKey=f,this.lastCache=this.fn(u)),this.lastCache}}n.LRUCachedFunction=E;class M{get cachedValues(){return this._map}constructor(u){this.fn=u,this._map=new Map}get(u){if(this._map.has(u))return this._map.get(u);const f=this.fn(u);return this._map.set(u,f),f}}n.CachedFunction=M}),K(te[28],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=void 0;class E{constructor(){this.map=new Map}add(i,u){let f=this.map.get(i);f||(f=new Set,this.map.set(i,f)),f.add(u)}delete(i,u){const f=this.map.get(i);f&&(f.delete(u),f.size===0&&this.map.delete(i))}forEach(i,u){const f=this.map.get(i);f&&f.forEach(u)}get(i){const u=this.map.get(i);return u||new Set}}n.SetMap=E}),K(te[29],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Color=n.HSVA=n.HSLA=n.RGBA=void 0;function E(g,a){const s=Math.pow(10,a);return Math.round(g*s)/s}class M{constructor(a,s,_,t=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,a))|0,this.g=Math.min(255,Math.max(0,s))|0,this.b=Math.min(255,Math.max(0,_))|0,this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.r===s.r&&a.g===s.g&&a.b===s.b&&a.a===s.a}}n.RGBA=M;class i{constructor(a,s,_,t){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,a),0)|0,this.s=E(Math.max(Math.min(1,s),0),3),this.l=E(Math.max(Math.min(1,_),0),3),this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.h===s.h&&a.s===s.s&&a.l===s.l&&a.a===s.a}static fromRGBA(a){const s=a.r/255,_=a.g/255,t=a.b/255,m=a.a,h=Math.max(s,_,t),c=Math.min(s,_,t);let L=0,d=0;const y=(c+h)/2,C=h-c;if(C>0){switch(d=Math.min(y<=.5?C/(2*y):C/(2-2*y),1),h){case s:L=(_-t)/C+(_1&&(_-=1),_<1/6?a+(s-a)*6*_:_<1/2?s:_<2/3?a+(s-a)*(2/3-_)*6:a}static toRGBA(a){const s=a.h/360,{s:_,l:t,a:m}=a;let h,c,L;if(_===0)h=c=L=t;else{const d=t<.5?t*(1+_):t+_-t*_,y=2*t-d;h=i._hue2rgb(y,d,s+1/3),c=i._hue2rgb(y,d,s),L=i._hue2rgb(y,d,s-1/3)}return new M(Math.round(h*255),Math.round(c*255),Math.round(L*255),m)}}n.HSLA=i;class u{constructor(a,s,_,t){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,a),0)|0,this.s=E(Math.max(Math.min(1,s),0),3),this.v=E(Math.max(Math.min(1,_),0),3),this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.h===s.h&&a.s===s.s&&a.v===s.v&&a.a===s.a}static fromRGBA(a){const s=a.r/255,_=a.g/255,t=a.b/255,m=Math.max(s,_,t),h=Math.min(s,_,t),c=m-h,L=m===0?0:c/m;let d;return c===0?d=0:m===s?d=((_-t)/c%6+6)%6:m===_?d=(t-s)/c+2:d=(s-_)/c+4,new u(Math.round(d*60),L,m,a.a)}static toRGBA(a){const{h:s,s:_,v:t,a:m}=a,h=t*_,c=h*(1-Math.abs(s/60%2-1)),L=t-h;let[d,y,C]=[0,0,0];return s<60?(d=h,y=c):s<120?(d=c,y=h):s<180?(y=h,C=c):s<240?(y=c,C=h):s<300?(d=c,C=h):s<=360&&(d=h,C=c),d=Math.round((d+L)*255),y=Math.round((y+L)*255),C=Math.round((C+L)*255),new M(d,y,C,m)}}n.HSVA=u;class f{static fromHex(a){return f.Format.CSS.parseHex(a)||f.red}static equals(a,s){return!a&&!s?!0:!a||!s?!1:a.equals(s)}get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:u.fromRGBA(this.rgba)}constructor(a){if(a)if(a instanceof M)this.rgba=a;else if(a instanceof i)this._hsla=a,this.rgba=i.toRGBA(a);else if(a instanceof u)this._hsva=a,this.rgba=u.toRGBA(a);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(a){return!!a&&M.equals(this.rgba,a.rgba)&&i.equals(this.hsla,a.hsla)&&u.equals(this.hsva,a.hsva)}getRelativeLuminance(){const a=f._relativeLuminanceForComponent(this.rgba.r),s=f._relativeLuminanceForComponent(this.rgba.g),_=f._relativeLuminanceForComponent(this.rgba.b),t=.2126*a+.7152*s+.0722*_;return E(t,4)}static _relativeLuminanceForComponent(a){const s=a/255;return s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(a){const s=this.getRelativeLuminance(),_=a.getRelativeLuminance();return s>_}isDarkerThan(a){const s=this.getRelativeLuminance(),_=a.getRelativeLuminance();return s<_}lighten(a){return new f(new i(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*a,this.hsla.a))}darken(a){return new f(new i(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*a,this.hsla.a))}transparent(a){const{r:s,g:_,b:t,a:m}=this.rgba;return new f(new M(s,_,t,m*a))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new f(new M(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(a){if(this.isOpaque()||a.rgba.a!==1)return this;const{r:s,g:_,b:t,a:m}=this.rgba;return new f(new M(a.rgba.r-m*(a.rgba.r-s),a.rgba.g-m*(a.rgba.g-_),a.rgba.b-m*(a.rgba.b-t),1))}toString(){return this._toString||(this._toString=f.Format.CSS.format(this)),this._toString}static getLighterColor(a,s,_){if(a.isLighterThan(s))return a;_=_||.5;const t=a.getRelativeLuminance(),m=s.getRelativeLuminance();return _=_*(m-t)/m,a.lighten(_)}static getDarkerColor(a,s,_){if(a.isDarkerThan(s))return a;_=_||.5;const t=a.getRelativeLuminance(),m=s.getRelativeLuminance();return _=_*(t-m)/t,a.darken(_)}}n.Color=f,f.white=new f(new M(255,255,255,1)),f.black=new f(new M(0,0,0,1)),f.red=new f(new M(255,0,0,1)),f.blue=new f(new M(0,0,255,1)),f.green=new f(new M(0,255,0,1)),f.cyan=new f(new M(0,255,255,1)),f.lightgrey=new f(new M(211,211,211,1)),f.transparent=new f(new M(0,0,0,0)),function(g){let a;(function(s){let _;(function(t){function m(r){return r.rgba.a===1?`rgb(${r.rgba.r}, ${r.rgba.g}, ${r.rgba.b})`:g.Format.CSS.formatRGBA(r)}t.formatRGB=m;function h(r){return`rgba(${r.rgba.r}, ${r.rgba.g}, ${r.rgba.b}, ${+r.rgba.a.toFixed(2)})`}t.formatRGBA=h;function c(r){return r.hsla.a===1?`hsl(${r.hsla.h}, ${(r.hsla.s*100).toFixed(2)}%, ${(r.hsla.l*100).toFixed(2)}%)`:g.Format.CSS.formatHSLA(r)}t.formatHSL=c;function L(r){return`hsla(${r.hsla.h}, ${(r.hsla.s*100).toFixed(2)}%, ${(r.hsla.l*100).toFixed(2)}%, ${r.hsla.a.toFixed(2)})`}t.formatHSLA=L;function d(r){const l=r.toString(16);return l.length!==2?"0"+l:l}function y(r){return`#${d(r.rgba.r)}${d(r.rgba.g)}${d(r.rgba.b)}`}t.formatHex=y;function C(r,l=!1){return l&&r.rgba.a===1?g.Format.CSS.formatHex(r):`#${d(r.rgba.r)}${d(r.rgba.g)}${d(r.rgba.b)}${d(Math.round(r.rgba.a*255))}`}t.formatHexA=C;function R(r){return r.isOpaque()?g.Format.CSS.formatHex(r):g.Format.CSS.formatRGBA(r)}t.format=R;function S(r){const l=r.length;if(l===0||r.charCodeAt(0)!==35)return null;if(l===7){const o=16*p(r.charCodeAt(1))+p(r.charCodeAt(2)),v=16*p(r.charCodeAt(3))+p(r.charCodeAt(4)),b=16*p(r.charCodeAt(5))+p(r.charCodeAt(6));return new g(new M(o,v,b,1))}if(l===9){const o=16*p(r.charCodeAt(1))+p(r.charCodeAt(2)),v=16*p(r.charCodeAt(3))+p(r.charCodeAt(4)),b=16*p(r.charCodeAt(5))+p(r.charCodeAt(6)),w=16*p(r.charCodeAt(7))+p(r.charCodeAt(8));return new g(new M(o,v,b,w/255))}if(l===4){const o=p(r.charCodeAt(1)),v=p(r.charCodeAt(2)),b=p(r.charCodeAt(3));return new g(new M(16*o+o,16*v+v,16*b+b))}if(l===5){const o=p(r.charCodeAt(1)),v=p(r.charCodeAt(2)),b=p(r.charCodeAt(3)),w=p(r.charCodeAt(4));return new g(new M(16*o+o,16*v+v,16*b+b,(16*w+w)/255))}return null}t.parseHex=S;function p(r){switch(r){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(_=s.CSS||(s.CSS={}))})(a=g.Format||(g.Format={}))}(f||(n.Color=f={}))}),K(te[30],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DiffChange=void 0;class E{constructor(i,u,f,g){this.originalStart=i,this.originalLength=u,this.modifiedStart=f,this.modifiedLength=g}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}n.DiffChange=E}),K(te[3],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.NotSupportedError=n.illegalState=n.illegalArgument=n.canceled=n.CancellationError=n.isCancellationError=n.transformErrorForSerialization=n.onUnexpectedExternalError=n.onUnexpectedError=n.errorHandler=n.ErrorHandler=void 0;class E{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(d){setTimeout(()=>{throw d.stack?h.isErrorNoTelemetry(d)?new h(d.message+` - -`+d.stack):new Error(d.message+` - -`+d.stack):d},0)}}emit(d){this.listeners.forEach(y=>{y(d)})}onUnexpectedError(d){this.unexpectedErrorHandler(d),this.emit(d)}onUnexpectedExternalError(d){this.unexpectedErrorHandler(d)}}n.ErrorHandler=E,n.errorHandler=new E;function M(L){g(L)||n.errorHandler.onUnexpectedError(L)}n.onUnexpectedError=M;function i(L){g(L)||n.errorHandler.onUnexpectedExternalError(L)}n.onUnexpectedExternalError=i;function u(L){if(L instanceof Error){const{name:d,message:y}=L,C=L.stacktrace||L.stack;return{$isError:!0,name:d,message:y,stack:C,noTelemetry:h.isErrorNoTelemetry(L)}}return L}n.transformErrorForSerialization=u;const f="Canceled";function g(L){return L instanceof a?!0:L instanceof Error&&L.name===f&&L.message===f}n.isCancellationError=g;class a extends Error{constructor(){super(f),this.name=this.message}}n.CancellationError=a;function s(){const L=new Error(f);return L.name=L.message,L}n.canceled=s;function _(L){return L?new Error(`Illegal argument: ${L}`):new Error("Illegal argument")}n.illegalArgument=_;function t(L){return L?new Error(`Illegal state: ${L}`):new Error("Illegal state")}n.illegalState=t;class m extends Error{constructor(d){super("NotSupported"),d&&(this.message=d)}}n.NotSupportedError=m;class h extends Error{constructor(d){super(d),this.name="CodeExpectedError"}static fromError(d){if(d instanceof h)return d;const y=new h;return y.message=d.message,y.stack=d.stack,y}static isErrorNoTelemetry(d){return d.name==="CodeExpectedError"}}n.ErrorNoTelemetry=h;class c extends Error{constructor(d){super(d||"An unexpected bug occurred."),Object.setPrototypeOf(this,c.prototype)}}n.BugIndicatingError=c}),K(te[9],ie([0,1,3]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.checkAdjacentItems=n.assertFn=n.assertNever=n.ok=void 0;function M(g,a){if(!g)throw new Error(a?`Assertion failed (${a})`:"Assertion Failed")}n.ok=M;function i(g,a="Unreachable"){throw new Error(a)}n.assertNever=i;function u(g){if(!g()){debugger;g(),(0,E.onUnexpectedError)(new E.BugIndicatingError("Assertion Failed"))}}n.assertFn=u;function f(g,a){let s=0;for(;sS.length&&(r=S.length);p=98&&C<=113)return null;switch(C){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return M.keyCodeToStr(C)}t.toElectronAccelerator=y})(s||(n.KeyCodeUtils=s={}));function _(t,m){const h=(m&65535)<<16>>>0;return(t|h)>>>0}n.KeyChord=_}),K(te[32],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Lazy=void 0;class E{constructor(i){this.executor=i,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){this._error=i}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}n.Lazy=E}),K(te[10],ie([0,1,17,18]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DisposableMap=n.ImmortalReference=n.RefCountedDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.toDisposable=n.combinedDisposable=n.dispose=n.isDisposable=n.markAsSingleton=n.setDisposableTracker=void 0;const i=!1;let u=null;function f(r){u=r}if(n.setDisposableTracker=f,i){const r="__is_disposable_tracked__";f(new class{trackDisposable(l){const o=new Error("Potentially leaked disposable").stack;setTimeout(()=>{l[r]||console.log(o)},3e3)}setParent(l,o){if(l&&l!==y.None)try{l[r]=!0}catch{}}markAsDisposed(l){if(l&&l!==y.None)try{l[r]=!0}catch{}}markAsSingleton(l){}})}function g(r){return u?.trackDisposable(r),r}function a(r){u?.markAsDisposed(r)}function s(r,l){u?.setParent(r,l)}function _(r,l){if(u)for(const o of r)u.setParent(o,l)}function t(r){return u?.markAsSingleton(r),r}n.markAsSingleton=t;function m(r){return typeof r.dispose=="function"&&r.dispose.length===0}n.isDisposable=m;function h(r){if(M.Iterable.is(r)){const l=[];for(const o of r)if(o)try{o.dispose()}catch(v){l.push(v)}if(l.length===1)throw l[0];if(l.length>1)throw new AggregateError(l,"Encountered errors while disposing of store");return Array.isArray(r)?[]:r}else if(r)return r.dispose(),r}n.dispose=h;function c(...r){const l=L(()=>h(r));return _(r,l),l}n.combinedDisposable=c;function L(r){const l=g({dispose:(0,E.once)(()=>{a(l),r()})});return l}n.toDisposable=L;class d{constructor(){this._toDispose=new Set,this._isDisposed=!1,g(this)}dispose(){this._isDisposed||(a(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(l){if(!l)return l;if(l===this)throw new Error("Cannot register a disposable on itself!");return s(l,this),this._isDisposed?d.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(l),l}}n.DisposableStore=d,d.DISABLE_DISPOSED_WARNING=!1;class y{constructor(){this._store=new d,g(this),s(this._store,this)}dispose(){a(this),this._store.dispose()}_register(l){if(l===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(l)}}n.Disposable=y,y.None=Object.freeze({dispose(){}});class C{constructor(){this._isDisposed=!1,g(this)}get value(){return this._isDisposed?void 0:this._value}set value(l){var o;this._isDisposed||l===this._value||((o=this._value)===null||o===void 0||o.dispose(),l&&s(l,this),this._value=l)}clear(){this.value=void 0}dispose(){var l;this._isDisposed=!0,a(this),(l=this._value)===null||l===void 0||l.dispose(),this._value=void 0}}n.MutableDisposable=C;class R{constructor(l){this._disposable=l,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}n.RefCountedDisposable=R;class S{constructor(l){this.object=l}dispose(){}}n.ImmortalReference=S;class p{constructor(){this._store=new Map,this._isDisposed=!1,g(this)}dispose(){a(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}get(l){return this._store.get(l)}set(l,o,v=!1){var b;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),v||(b=this._store.get(l))===null||b===void 0||b.dispose(),this._store.set(l,o)}deleteAndDispose(l){var o;(o=this._store.get(l))===null||o===void 0||o.dispose(),this._store.delete(l)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=p}),K(te[19],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LinkedList=void 0;class E{constructor(u){this.element=u,this.next=E.Undefined,this.prev=E.Undefined}}E.Undefined=new E(void 0);class M{constructor(){this._first=E.Undefined,this._last=E.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===E.Undefined}clear(){let u=this._first;for(;u!==E.Undefined;){const f=u.next;u.prev=E.Undefined,u.next=E.Undefined,u=f}this._first=E.Undefined,this._last=E.Undefined,this._size=0}unshift(u){return this._insert(u,!1)}push(u){return this._insert(u,!0)}_insert(u,f){const g=new E(u);if(this._first===E.Undefined)this._first=g,this._last=g;else if(f){const s=this._last;this._last=g,g.prev=s,s.next=g}else{const s=this._first;this._first=g,g.next=s,s.prev=g}this._size+=1;let a=!1;return()=>{a||(a=!0,this._remove(g))}}shift(){if(this._first!==E.Undefined){const u=this._first.element;return this._remove(this._first),u}}pop(){if(this._last!==E.Undefined){const u=this._last.element;return this._remove(this._last),u}}_remove(u){if(u.prev!==E.Undefined&&u.next!==E.Undefined){const f=u.prev;f.next=u.next,u.next.prev=f}else u.prev===E.Undefined&&u.next===E.Undefined?(this._first=E.Undefined,this._last=E.Undefined):u.next===E.Undefined?(this._last=this._last.prev,this._last.next=E.Undefined):u.prev===E.Undefined&&(this._first=this._first.next,this._first.prev=E.Undefined);this._size-=1}*[Symbol.iterator](){let u=this._first;for(;u!==E.Undefined;)yield u.element,u=u.next}}n.LinkedList=M}),K(te[20],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;const E=globalThis.performance&&typeof globalThis.performance.now=="function";class M{static create(u){return new M(u)}constructor(u){this._now=E&&u===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}n.StopWatch=M}),K(te[7],ie([0,1,3,17,10,19,20]),function(U,n,E,M,i,u,f){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Relay=n.EventBufferer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.createEventDeliveryQueue=n.Emitter=n.EventProfiling=n.Event=void 0;const g=!1,a=!1;var s;(function(b){b.None=()=>i.Disposable.None;function w(J){if(a){const{onDidAddListener:H}=J,X=h.create();let Y=0;J.onDidAddListener=()=>{++Y===2&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),X.print()),H?.()}}}function A(J,H){return re(J,()=>{},0,void 0,!0,void 0,H)}b.defer=A;function N(J){return(H,X=null,Y)=>{let se=!1,oe;return oe=J(j=>{if(!se)return oe?oe.dispose():se=!0,H.call(X,j)},null,Y),se&&oe.dispose(),oe}}b.once=N;function F(J,H,X){return ae((Y,se=null,oe)=>J(j=>Y.call(se,H(j)),null,oe),X)}b.map=F;function O(J,H,X){return ae((Y,se=null,oe)=>J(j=>{H(j),Y.call(se,j)},null,oe),X)}b.forEach=O;function q(J,H,X){return ae((Y,se=null,oe)=>J(j=>H(j)&&Y.call(se,j),null,oe),X)}b.filter=q;function T(J){return J}b.signal=T;function W(...J){return(H,X=null,Y)=>(0,i.combinedDisposable)(...J.map(se=>se(oe=>H.call(X,oe),null,Y)))}b.any=W;function G(J,H,X,Y){let se=X;return F(J,oe=>(se=H(se,oe),se),Y)}b.reduce=G;function ae(J,H){let X;const Y={onWillAddFirstListener(){X=J(se.fire,se)},onDidRemoveLastListener(){X?.dispose()}};H||w(Y);const se=new y(Y);return H?.add(se),se.event}function re(J,H,X=100,Y=!1,se=!1,oe,j){let le,D,x,B=0,z;const Z={leakWarningThreshold:oe,onWillAddFirstListener(){le=J(de=>{B++,D=H(D,de),Y&&!x&&(ce.fire(D),D=void 0),z=()=>{const Se=D;D=void 0,x=void 0,(!Y||B>1)&&ce.fire(Se),B=0},typeof X=="number"?(clearTimeout(x),x=setTimeout(z,X)):x===void 0&&(x=0,queueMicrotask(z))})},onWillRemoveListener(){se&&B>0&&z?.()},onDidRemoveLastListener(){z=void 0,le.dispose()}};j||w(Z);const ce=new y(Z);return j?.add(ce),ce.event}b.debounce=re;function ne(J,H=0,X){return b.debounce(J,(Y,se)=>Y?(Y.push(se),Y):[se],H,void 0,!0,void 0,X)}b.accumulate=ne;function fe(J,H=(Y,se)=>Y===se,X){let Y=!0,se;return q(J,oe=>{const j=Y||!H(oe,se);return Y=!1,se=oe,j},X)}b.latch=fe;function $(J,H,X){return[b.filter(J,H,X),b.filter(J,Y=>!H(Y),X)]}b.split=$;function e(J,H=!1,X=[]){let Y=X.slice(),se=J(le=>{Y?Y.push(le):j.fire(le)});const oe=()=>{Y?.forEach(le=>j.fire(le)),Y=null},j=new y({onWillAddFirstListener(){se||(se=J(le=>j.fire(le)))},onDidAddFirstListener(){Y&&(H?setTimeout(oe):oe())},onDidRemoveLastListener(){se&&se.dispose(),se=null}});return j.event}b.buffer=e;class P{constructor(H){this.event=H,this.disposables=new i.DisposableStore}map(H){return new P(F(this.event,H,this.disposables))}forEach(H){return new P(O(this.event,H,this.disposables))}filter(H){return new P(q(this.event,H,this.disposables))}reduce(H,X){return new P(G(this.event,H,X,this.disposables))}latch(){return new P(fe(this.event,void 0,this.disposables))}debounce(H,X=100,Y=!1,se=!1,oe){return new P(re(this.event,H,X,Y,se,oe,this.disposables))}on(H,X,Y){return this.event(H,X,Y)}once(H,X,Y){return N(this.event)(H,X,Y)}dispose(){this.disposables.dispose()}}function k(J){return new P(J)}b.chain=k;function I(J,H,X=Y=>Y){const Y=(...le)=>j.fire(X(...le)),se=()=>J.on(H,Y),oe=()=>J.removeListener(H,Y),j=new y({onWillAddFirstListener:se,onDidRemoveLastListener:oe});return j.event}b.fromNodeEventEmitter=I;function V(J,H,X=Y=>Y){const Y=(...le)=>j.fire(X(...le)),se=()=>J.addEventListener(H,Y),oe=()=>J.removeEventListener(H,Y),j=new y({onWillAddFirstListener:se,onDidRemoveLastListener:oe});return j.event}b.fromDOMEventEmitter=V;function Q(J){return new Promise(H=>N(J)(H))}b.toPromise=Q;function ee(J){const H=new y;return J.then(X=>{H.fire(X)},()=>{H.fire(void 0)}).finally(()=>{H.dispose()}),H.event}b.fromPromise=ee;function ue(J,H){return H(void 0),J(X=>H(X))}b.runAndSubscribe=ue;function he(J,H){let X=null;function Y(oe){X?.dispose(),X=new i.DisposableStore,H(oe,X)}Y(void 0);const se=J(oe=>Y(oe));return(0,i.toDisposable)(()=>{se.dispose(),X?.dispose()})}b.runAndSubscribeWithStore=he;class ge{constructor(H,X){this._observable=H,this._counter=0,this._hasChanged=!1;const Y={onWillAddFirstListener:()=>{H.addObserver(this)},onDidRemoveLastListener:()=>{H.removeObserver(this)}};X||w(Y),this.emitter=new y(Y),X&&X.add(this.emitter)}beginUpdate(H){this._counter++}handlePossibleChange(H){}handleChange(H,X){this._hasChanged=!0}endUpdate(H){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function me(J,H){return new ge(J,H).emitter.event}b.fromObservable=me;function ve(J){return H=>{let X=0,Y=!1;const se={beginUpdate(){X++},endUpdate(){X--,X===0&&(J.reportChanges(),Y&&(Y=!1,H()))},handlePossibleChange(){},handleChange(){Y=!0}};return J.addObserver(se),J.reportChanges(),{dispose(){J.removeObserver(se)}}}}b.fromObservableLight=ve})(s||(n.Event=s={}));class _{constructor(w){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${w}_${_._idPool++}`,_.all.add(this)}start(w){this._stopWatch=new f.StopWatch,this.listenerCount=w}stop(){if(this._stopWatch){const w=this._stopWatch.elapsed();this.durations.push(w),this.elapsedOverall+=w,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_,_.all=new Set,_._idPool=0;let t=-1;class m{constructor(w,A=Math.random().toString(18).slice(2,5)){this.threshold=w,this.name=A,this._warnCountdown=0}dispose(){var w;(w=this._stacks)===null||w===void 0||w.clear()}check(w,A){const N=this.threshold;if(N<=0||A{const O=this._stacks.get(w.value)||0;this._stacks.set(w.value,O-1)}}}class h{static create(){var w;return new h((w=new Error().stack)!==null&&w!==void 0?w:"")}constructor(w){this.value=w}print(){console.warn(this.value.split(` -`).slice(2).join(` -`))}}class c{constructor(w){this.value=w}}const L=2,d=(b,w)=>{if(b instanceof c)w(b);else for(let A=0;A0||!((A=this._options)===null||A===void 0)&&A.leakWarningThreshold?new m((F=(N=this._options)===null||N===void 0?void 0:N.leakWarningThreshold)!==null&&F!==void 0?F:t):void 0,this._perfMon=!((O=this._options)===null||O===void 0)&&O._profName?new _(this._options._profName):void 0,this._deliveryQueue=(q=this._options)===null||q===void 0?void 0:q.deliveryQueue}dispose(){var w,A,N,F;if(!this._disposed){if(this._disposed=!0,((w=this._deliveryQueue)===null||w===void 0?void 0:w.current)===this&&this._deliveryQueue.reset(),this._listeners){if(g){const O=this._listeners;queueMicrotask(()=>{d(O,q=>{var T;return(T=q.stack)===null||T===void 0?void 0:T.print()})})}this._listeners=void 0,this._size=0}(N=(A=this._options)===null||A===void 0?void 0:A.onDidRemoveLastListener)===null||N===void 0||N.call(A),(F=this._leakageMon)===null||F===void 0||F.dispose()}}get event(){var w;return(w=this._event)!==null&&w!==void 0||(this._event=(A,N,F)=>{var O,q,T,W,G;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),i.Disposable.None;if(this._disposed)return i.Disposable.None;N&&(A=A.bind(N));const ae=new c(A);let re,ne;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(ae.stack=h.create(),re=this._leakageMon.check(ae.stack,this._size+1)),g&&(ae.stack=ne??h.create()),this._listeners?this._listeners instanceof c?((G=this._deliveryQueue)!==null&&G!==void 0||(this._deliveryQueue=new R),this._listeners=[this._listeners,ae]):this._listeners.push(ae):((q=(O=this._options)===null||O===void 0?void 0:O.onWillAddFirstListener)===null||q===void 0||q.call(O,this),this._listeners=ae,(W=(T=this._options)===null||T===void 0?void 0:T.onDidAddFirstListener)===null||W===void 0||W.call(T,this)),this._size++;const fe=(0,i.toDisposable)(()=>{re?.(),this._removeListener(ae)});return F instanceof i.DisposableStore?F.add(fe):Array.isArray(F)&&F.push(fe),fe}),this._event}_removeListener(w){var A,N,F,O;if((N=(A=this._options)===null||A===void 0?void 0:A.onWillRemoveListener)===null||N===void 0||N.call(A,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(O=(F=this._options)===null||F===void 0?void 0:F.onDidRemoveLastListener)===null||O===void 0||O.call(F,this),this._size=0;return}const q=this._listeners,T=q.indexOf(w);if(T===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,q[T]=void 0;const W=this._deliveryQueue.current===this;if(this._size*L<=q.length){let G=0;for(let ae=0;ae0}}n.Emitter=y;const C=()=>new R;n.createEventDeliveryQueue=C;class R{constructor(){this.i=-1,this.end=0}enqueue(w,A,N){this.i=0,this.end=N,this.current=w,this.value=A}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class S extends y{constructor(w){super(w),this._isPaused=0,this._eventQueue=new u.LinkedList,this._mergeFn=w?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const w=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(w))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(w){this._size&&(this._isPaused!==0?this._eventQueue.push(w):super.fire(w))}}n.PauseableEmitter=S;class p extends S{constructor(w){var A;super(w),this._delay=(A=w.delay)!==null&&A!==void 0?A:100}fire(w){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(w)}}n.DebounceEmitter=p;class r extends y{constructor(w){super(w),this._queuedEvents=[],this._mergeFn=w?.merge}fire(w){this.hasListeners()&&(this._queuedEvents.push(w),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(A=>super.fire(A)),this._queuedEvents=[]}))}}n.MicrotaskEmitter=r;class l{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new y({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(w){const A={event:w,listener:null};this.events.push(A),this.hasListeners&&this.hook(A);const N=()=>{this.hasListeners&&this.unhook(A);const F=this.events.indexOf(A);this.events.splice(F,1)};return(0,i.toDisposable)((0,M.once)(N))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(w=>this.hook(w))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(w=>this.unhook(w))}hook(w){w.listener=w.event(A=>this.emitter.fire(A))}unhook(w){w.listener&&w.listener.dispose(),w.listener=null}dispose(){this.emitter.dispose()}}n.EventMultiplexer=l;class o{constructor(){this.buffers=[]}wrapEvent(w){return(A,N,F)=>w(O=>{const q=this.buffers[this.buffers.length-1];q?q.push(()=>A.call(N,O)):A.call(N,O)},void 0,F)}bufferEvents(w){const A=[];this.buffers.push(A);const N=w();return this.buffers.pop(),A.forEach(F=>F()),N}}n.EventBufferer=o;class v{constructor(){this.listening=!1,this.inputEvent=s.None,this.inputEventListener=i.Disposable.None,this.emitter=new y({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(w){this.inputEvent=w,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=w(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}n.Relay=v}),K(te[33],ie([0,1,7]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.CancellationTokenSource=n.CancellationToken=void 0;const M=Object.freeze(function(g,a){const s=setTimeout(g.bind(a),0);return{dispose(){clearTimeout(s)}}});var i;(function(g){function a(s){return s===g.None||s===g.Cancelled||s instanceof u?!0:!s||typeof s!="object"?!1:typeof s.isCancellationRequested=="boolean"&&typeof s.onCancellationRequested=="function"}g.isCancellationToken=a,g.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:E.Event.None}),g.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:M})})(i||(n.CancellationToken=i={}));class u{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?M:(this._emitter||(this._emitter=new E.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class f{constructor(a){this._token=void 0,this._parentListener=void 0,this._parentListener=a&&a.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new u),this._token}cancel(){this._token?this._token instanceof u&&this._token.cancel():this._token=i.Cancelled}dispose(a=!1){var s;a&&this.cancel(),(s=this._parentListener)===null||s===void 0||s.dispose(),this._token?this._token instanceof u&&this._token.dispose():this._token=i.None}}n.CancellationTokenSource=f}),K(te[5],ie([0,1,27,32]),function(U,n,E,M){"use strict";var i;Object.defineProperty(n,"__esModule",{value:!0}),n.InvisibleCharacters=n.AmbiguousCharacters=n.noBreakWhitespace=n.getLeftDeleteOffset=n.singleLetterHash=n.containsUppercaseCharacter=n.startsWithUTF8BOM=n.UTF8_BOM_CHARACTER=n.isEmojiImprecise=n.isFullWidthCharacter=n.containsUnusualLineTerminators=n.UNUSUAL_LINE_TERMINATORS=n.isBasicASCII=n.containsRTL=n.getCharContainingOffset=n.prevCharLength=n.nextCharLength=n.GraphemeIterator=n.CodePointIterator=n.getNextCodePoint=n.computeCodePoint=n.isLowSurrogate=n.isHighSurrogate=n.commonSuffixLength=n.commonPrefixLength=n.startsWithIgnoreCase=n.equalsIgnoreCase=n.isUpperAsciiLetter=n.isLowerAsciiLetter=n.isAsciiDigit=n.compareSubstringIgnoreCase=n.compareIgnoreCase=n.compareSubstring=n.compare=n.lastNonWhitespaceIndex=n.getLeadingWhitespace=n.firstNonWhitespaceIndex=n.splitLines=n.regExpLeadsToEndlessLoop=n.createRegExp=n.stripWildcards=n.convertSimple2RegExpPattern=n.rtrim=n.ltrim=n.trim=n.escapeRegExpCharacters=n.escape=n.format=n.isFalsyOrWhitespace=void 0;function u(D){return!D||typeof D!="string"?!0:D.trim().length===0}n.isFalsyOrWhitespace=u;const f=/{(\d+)}/g;function g(D,...x){return x.length===0?D:D.replace(f,function(B,z){const Z=parseInt(z,10);return isNaN(Z)||Z<0||Z>=x.length?B:x[Z]})}n.format=g;function a(D){return D.replace(/[<>&]/g,function(x){switch(x){case"<":return"<";case">":return">";case"&":return"&";default:return x}})}n.escape=a;function s(D){return D.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}n.escapeRegExpCharacters=s;function _(D,x=" "){const B=t(D,x);return m(B,x)}n.trim=_;function t(D,x){if(!D||!x)return D;const B=x.length;if(B===0||D.length===0)return D;let z=0;for(;D.indexOf(x,z)===z;)z=z+B;return D.substring(z)}n.ltrim=t;function m(D,x){if(!D||!x)return D;const B=x.length,z=D.length;if(B===0||z===0)return D;let Z=z,ce=-1;for(;ce=D.lastIndexOf(x,Z-1),!(ce===-1||ce+B!==Z);){if(ce===0)return"";Z=ce}return D.substring(0,Z)}n.rtrim=m;function h(D){return D.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}n.convertSimple2RegExpPattern=h;function c(D){return D.replace(/\*/g,"")}n.stripWildcards=c;function L(D,x,B={}){if(!D)throw new Error("Cannot create regex from empty string");x||(D=s(D)),B.wholeWord&&(/\B/.test(D.charAt(0))||(D="\\b"+D),/\B/.test(D.charAt(D.length-1))||(D=D+"\\b"));let z="";return B.global&&(z+="g"),B.matchCase||(z+="i"),B.multiline&&(z+="m"),B.unicode&&(z+="u"),new RegExp(D,z)}n.createRegExp=L;function d(D){return D.source==="^"||D.source==="^$"||D.source==="$"||D.source==="^\\s*$"?!1:!!(D.exec("")&&D.lastIndex===0)}n.regExpLeadsToEndlessLoop=d;function y(D){return D.split(/\r\n|\r|\n/)}n.splitLines=y;function C(D){for(let x=0,B=D.length;x=0;B--){const z=D.charCodeAt(B);if(z!==32&&z!==9)return B}return-1}n.lastNonWhitespaceIndex=S;function p(D,x){return Dx?1:0}n.compare=p;function r(D,x,B=0,z=D.length,Z=0,ce=x.length){for(;Bbe)return 1}const de=z-B,Se=ce-Z;return deSe?1:0}n.compareSubstring=r;function l(D,x){return o(D,x,0,D.length,0,x.length)}n.compareIgnoreCase=l;function o(D,x,B=0,z=D.length,Z=0,ce=x.length){for(;B=128||be>=128)return r(D.toLowerCase(),x.toLowerCase(),B,z,Z,ce);b(we)&&(we-=32),b(be)&&(be-=32);const Le=we-be;if(Le!==0)return Le}const de=z-B,Se=ce-Z;return deSe?1:0}n.compareSubstringIgnoreCase=o;function v(D){return D>=48&&D<=57}n.isAsciiDigit=v;function b(D){return D>=97&&D<=122}n.isLowerAsciiLetter=b;function w(D){return D>=65&&D<=90}n.isUpperAsciiLetter=w;function A(D,x){return D.length===x.length&&o(D,x)===0}n.equalsIgnoreCase=A;function N(D,x){const B=x.length;return x.length>D.length?!1:o(D,x,0,B)===0}n.startsWithIgnoreCase=N;function F(D,x){const B=Math.min(D.length,x.length);let z;for(z=0;z1){const z=D.charCodeAt(x-2);if(q(z))return W(z,B)}return B}class re{get offset(){return this._offset}constructor(x,B=0){this._str=x,this._len=x.length,this._offset=B}setOffset(x){this._offset=x}prevCodePoint(){const x=ae(this._str,this._offset);return this._offset-=x>=65536?2:1,x}nextCodePoint(){const x=G(this._str,this._len,this._offset);return this._offset+=x>=65536?2:1,x}eol(){return this._offset>=this._len}}n.CodePointIterator=re;class ne{get offset(){return this._iterator.offset}constructor(x,B=0){this._iterator=new re(x,B)}nextGraphemeLength(){const x=H.getInstance(),B=this._iterator,z=B.offset;let Z=x.getGraphemeBreakType(B.nextCodePoint());for(;!B.eol();){const ce=B.offset,de=x.getGraphemeBreakType(B.nextCodePoint());if(J(Z,de)){B.setOffset(ce);break}Z=de}return B.offset-z}prevGraphemeLength(){const x=H.getInstance(),B=this._iterator,z=B.offset;let Z=x.getGraphemeBreakType(B.prevCodePoint());for(;B.offset>0;){const ce=B.offset,de=x.getGraphemeBreakType(B.prevCodePoint());if(J(de,Z)){B.setOffset(ce);break}Z=de}return z-B.offset}eol(){return this._iterator.eol()}}n.GraphemeIterator=ne;function fe(D,x){return new ne(D,x).nextGraphemeLength()}n.nextCharLength=fe;function $(D,x){return new ne(D,x).prevGraphemeLength()}n.prevCharLength=$;function e(D,x){x>0&&T(D.charCodeAt(x))&&x--;const B=x+fe(D,x);return[B-$(D,B),B]}n.getCharContainingOffset=e;let P;function k(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function I(D){return P||(P=k()),P.test(D)}n.containsRTL=I;const V=/^[\t\n\r\x20-\x7E]*$/;function Q(D){return V.test(D)}n.isBasicASCII=Q,n.UNUSUAL_LINE_TERMINATORS=/[\u2028\u2029]/;function ee(D){return n.UNUSUAL_LINE_TERMINATORS.test(D)}n.containsUnusualLineTerminators=ee;function ue(D){return D>=11904&&D<=55215||D>=63744&&D<=64255||D>=65281&&D<=65374}n.isFullWidthCharacter=ue;function he(D){return D>=127462&&D<=127487||D===8986||D===8987||D===9200||D===9203||D>=9728&&D<=10175||D===11088||D===11093||D>=127744&&D<=128591||D>=128640&&D<=128764||D>=128992&&D<=129008||D>=129280&&D<=129535||D>=129648&&D<=129782}n.isEmojiImprecise=he,n.UTF8_BOM_CHARACTER=String.fromCharCode(65279);function ge(D){return!!(D&&D.length>0&&D.charCodeAt(0)===65279)}n.startsWithUTF8BOM=ge;function me(D,x=!1){return D?(x&&(D=D.replace(/\\./g,"")),D.toLowerCase()!==D):!1}n.containsUppercaseCharacter=me;function ve(D){return D=D%(2*26),D<26?String.fromCharCode(97+D):String.fromCharCode(65+D-26)}n.singleLetterHash=ve;function J(D,x){return D===0?x!==5&&x!==7:D===2&&x===3?!1:D===4||D===2||D===3||x===4||x===2||x===3?!0:!(D===8&&(x===8||x===9||x===11||x===12)||(D===11||D===9)&&(x===9||x===10)||(D===12||D===10)&&x===10||x===5||x===13||x===7||D===1||D===13&&x===14||D===6&&x===6)}class H{static getInstance(){return H._INSTANCE||(H._INSTANCE=new H),H._INSTANCE}constructor(){this._data=X()}getGraphemeBreakType(x){if(x<32)return x===10?3:x===13?2:4;if(x<127)return 0;const B=this._data,z=B.length/3;let Z=1;for(;Z<=z;)if(xB[3*Z+1])Z=2*Z+1;else return B[3*Z+2];return 0}}H._INSTANCE=null;function X(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function Y(D,x){if(D===0)return 0;const B=se(D,x);if(B!==void 0)return B;const z=new re(x,D);return z.prevCodePoint(),z.offset}n.getLeftDeleteOffset=Y;function se(D,x){const B=new re(x,D);let z=B.prevCodePoint();for(;oe(z)||z===65039||z===8419;){if(B.offset===0)return;z=B.prevCodePoint()}if(!he(z))return;let Z=B.offset;return Z>0&&B.prevCodePoint()===8205&&(Z=B.offset),Z}function oe(D){return 127995<=D&&D<=127999}n.noBreakWhitespace="\xA0";class j{static getInstance(x){return i.cache.get(Array.from(x))}static getLocales(){return i._locales.value}constructor(x){this.confusableDictionary=x}isAmbiguous(x){return this.confusableDictionary.has(x)}getPrimaryConfusable(x){return this.confusableDictionary.get(x)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}n.AmbiguousCharacters=j,i=j,j.ambiguousCharacterData=new M.Lazy(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),j.cache=new E.LRUCachedFunction(D=>{function x(be){const Le=new Map;for(let Ce=0;Ce!be.startsWith("_")&&be in Z);ce.length===0&&(ce=["_default"]);let de;for(const be of ce){const Le=x(Z[be]);de=z(de,Le)}const Se=x(Z._common),we=B(Se,de);return new i(we)}),j._locales=new M.Lazy(()=>Object.keys(i.ambiguousCharacterData.value).filter(D=>!D.startsWith("_")));class le{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(le.getRawData())),this._data}static isInvisibleCharacter(x){return le.getData().has(x)}static get codePoints(){return le.getData()}}n.InvisibleCharacters=le,le._data=void 0}),K(te[34],ie([0,1,5]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StringSHA1=n.toHexString=n.stringHash=n.numberHash=n.doHash=n.hash=void 0;function M(L){return i(L,0)}n.hash=M;function i(L,d){switch(typeof L){case"object":return L===null?u(349,d):Array.isArray(L)?a(L,d):s(L,d);case"string":return g(L,d);case"boolean":return f(L,d);case"number":return u(L,d);case"undefined":return u(937,d);default:return u(617,d)}}n.doHash=i;function u(L,d){return(d<<5)-d+L|0}n.numberHash=u;function f(L,d){return u(L?433:863,d)}function g(L,d){d=u(149417,d);for(let y=0,C=L.length;yi(C,y),d)}function s(L,d){return d=u(181387,d),Object.keys(L).sort().reduce((y,C)=>(y=g(C,y),i(L[C],y)),d)}function _(L,d,y=32){const C=y-d,R=~((1<>>C)>>>0}function t(L,d=0,y=L.byteLength,C=0){for(let R=0;Ry.toString(16).padStart(2,"0")).join(""):m((L>>>0).toString(16),d/4)}n.toHexString=h;class c{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(d){const y=d.length;if(y===0)return;const C=this._buff;let R=this._buffLen,S=this._leftoverHighSurrogate,p,r;for(S!==0?(p=S,r=-1,S=0):(p=d.charCodeAt(0),r=0);;){let l=p;if(E.isHighSurrogate(p))if(r+1>>6,d[y++]=128|(C&63)>>>0):C<65536?(d[y++]=224|(C&61440)>>>12,d[y++]=128|(C&4032)>>>6,d[y++]=128|(C&63)>>>0):(d[y++]=240|(C&1835008)>>>18,d[y++]=128|(C&258048)>>>12,d[y++]=128|(C&4032)>>>6,d[y++]=128|(C&63)>>>0),y>=64&&(this._step(),y-=64,this._totalLen+=64,d[0]=d[64+0],d[1]=d[64+1],d[2]=d[64+2]),y}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),h(this._h0)+h(this._h1)+h(this._h2)+h(this._h3)+h(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,t(this._buff,this._buffLen),this._buffLen>56&&(this._step(),t(this._buff));const d=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(d/4294967296),!1),this._buffDV.setUint32(60,d%4294967296,!1),this._step()}_step(){const d=c._bigBlock32,y=this._buffDV;for(let b=0;b<64;b+=4)d.setUint32(b,y.getUint32(b,!1),!1);for(let b=64;b<320;b+=4)d.setUint32(b,_(d.getUint32(b-12,!1)^d.getUint32(b-32,!1)^d.getUint32(b-56,!1)^d.getUint32(b-64,!1),1),!1);let C=this._h0,R=this._h1,S=this._h2,p=this._h3,r=this._h4,l,o,v;for(let b=0;b<80;b++)b<20?(l=R&S|~R&p,o=1518500249):b<40?(l=R^S^p,o=1859775393):b<60?(l=R&S|R&p|S&p,o=2400959708):(l=R^S^p,o=3395469782),v=_(C,5)+l+r+o+d.getUint32(b*4,!1)&4294967295,r=p,p=S,S=_(R,30),R=C,C=v;this._h0=this._h0+C&4294967295,this._h1=this._h1+R&4294967295,this._h2=this._h2+S&4294967295,this._h3=this._h3+p&4294967295,this._h4=this._h4+r&4294967295}}n.StringSHA1=c,c._bigBlock32=new DataView(new ArrayBuffer(320))}),K(te[21],ie([0,1,30,34]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LcsDiff=n.stringDiff=n.StringDiffSequence=void 0;class i{constructor(t){this.source=t}getElements(){const t=this.source,m=new Int32Array(t.length);for(let h=0,c=t.length;h0||this.m_modifiedCount>0)&&this.m_changes.push(new E.DiffChange(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(t,m){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,m),this.m_originalCount++}AddModifiedElement(t,m){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,m),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class s{constructor(t,m,h=null){this.ContinueProcessingPredicate=h,this._originalSequence=t,this._modifiedSequence=m;const[c,L,d]=s._getElements(t),[y,C,R]=s._getElements(m);this._hasStrings=d&&R,this._originalStringElements=c,this._originalElementsOrHash=L,this._modifiedStringElements=y,this._modifiedElementsOrHash=C,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(t){return t.length>0&&typeof t[0]=="string"}static _getElements(t){const m=t.getElements();if(s._isStringArray(m)){const h=new Int32Array(m.length);for(let c=0,L=m.length;c=t&&c>=h&&this.ElementsAreEqual(m,c);)m--,c--;if(t>m||h>c){let p;return h<=c?(f.Assert(t===m+1,"originalStart should only be one more than originalEnd"),p=[new E.DiffChange(t,0,h,c-h+1)]):t<=m?(f.Assert(h===c+1,"modifiedStart should only be one more than modifiedEnd"),p=[new E.DiffChange(t,m-t+1,h,0)]):(f.Assert(t===m+1,"originalStart should only be one more than originalEnd"),f.Assert(h===c+1,"modifiedStart should only be one more than modifiedEnd"),p=[]),p}const d=[0],y=[0],C=this.ComputeRecursionPoint(t,m,h,c,d,y,L),R=d[0],S=y[0];if(C!==null)return C;if(!L[0]){const p=this.ComputeDiffRecursive(t,R,h,S,L);let r=[];return L[0]?r=[new E.DiffChange(R+1,m-(R+1)+1,S+1,c-(S+1)+1)]:r=this.ComputeDiffRecursive(R+1,m,S+1,c,L),this.ConcatenateChanges(p,r)}return[new E.DiffChange(t,m-t+1,h,c-h+1)]}WALKTRACE(t,m,h,c,L,d,y,C,R,S,p,r,l,o,v,b,w,A){let N=null,F=null,O=new a,q=m,T=h,W=l[0]-b[0]-c,G=-1073741824,ae=this.m_forwardHistory.length-1;do{const re=W+t;re===q||re=0&&(R=this.m_forwardHistory[ae],t=R[0],q=1,T=R.length-1)}while(--ae>=-1);if(N=O.getReverseChanges(),A[0]){let re=l[0]+1,ne=b[0]+1;if(N!==null&&N.length>0){const fe=N[N.length-1];re=Math.max(re,fe.getOriginalEnd()),ne=Math.max(ne,fe.getModifiedEnd())}F=[new E.DiffChange(re,r-re+1,ne,v-ne+1)]}else{O=new a,q=d,T=y,W=l[0]-b[0]-C,G=1073741824,ae=w?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const re=W+L;re===q||re=S[re+1]?(p=S[re+1]-1,o=p-W-C,p>G&&O.MarkNextChange(),G=p+1,O.AddOriginalElement(p+1,o+1),W=re+1-L):(p=S[re-1],o=p-W-C,p>G&&O.MarkNextChange(),G=p,O.AddModifiedElement(p+1,o+1),W=re-1-L),ae>=0&&(S=this.m_reverseHistory[ae],L=S[0],q=1,T=S.length-1)}while(--ae>=-1);F=O.getChanges()}return this.ConcatenateChanges(N,F)}ComputeRecursionPoint(t,m,h,c,L,d,y){let C=0,R=0,S=0,p=0,r=0,l=0;t--,h--,L[0]=0,d[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const o=m-t+(c-h),v=o+1,b=new Int32Array(v),w=new Int32Array(v),A=c-h,N=m-t,F=t-h,O=m-c,T=(N-A)%2===0;b[A]=t,w[N]=m,y[0]=!1;for(let W=1;W<=o/2+1;W++){let G=0,ae=0;S=this.ClipDiagonalBound(A-W,W,A,v),p=this.ClipDiagonalBound(A+W,W,A,v);for(let ne=S;ne<=p;ne+=2){ne===S||neG+ae&&(G=C,ae=R),!T&&Math.abs(ne-N)<=W-1&&C>=w[ne])return L[0]=C,d[0]=R,fe<=w[ne]&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):null}const re=(G-t+(ae-h)-W)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(G,re))return y[0]=!0,L[0]=G,d[0]=ae,re>0&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):(t++,h++,[new E.DiffChange(t,m-t+1,h,c-h+1)]);r=this.ClipDiagonalBound(N-W,W,N,v),l=this.ClipDiagonalBound(N+W,W,N,v);for(let ne=r;ne<=l;ne+=2){ne===r||ne=w[ne+1]?C=w[ne+1]-1:C=w[ne-1],R=C-(ne-N)-O;const fe=C;for(;C>t&&R>h&&this.ElementsAreEqual(C,R);)C--,R--;if(w[ne]=C,T&&Math.abs(ne-A)<=W&&C<=b[ne])return L[0]=C,d[0]=R,fe>=b[ne]&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):null}if(W<=1447){let ne=new Int32Array(p-S+2);ne[0]=A-S+1,g.Copy2(b,S,ne,1,p-S+1),this.m_forwardHistory.push(ne),ne=new Int32Array(l-r+2),ne[0]=N-r+1,g.Copy2(w,r,ne,1,l-r+1),this.m_reverseHistory.push(ne)}}return this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y)}PrettifyChanges(t){for(let m=0;m0,y=h.modifiedLength>0;for(;h.originalStart+h.originalLength=0;m--){const h=t[m];let c=0,L=0;if(m>0){const p=t[m-1];c=p.originalStart+p.originalLength,L=p.modifiedStart+p.modifiedLength}const d=h.originalLength>0,y=h.modifiedLength>0;let C=0,R=this._boundaryScore(h.originalStart,h.originalLength,h.modifiedStart,h.modifiedLength);for(let p=1;;p++){const r=h.originalStart-p,l=h.modifiedStart-p;if(rR&&(R=v,C=p)}h.originalStart-=C,h.modifiedStart-=C;const S=[null];if(m>0&&this.ChangesOverlap(t[m-1],t[m],S)){t[m-1]=S[0],t.splice(m,1),m++;continue}}if(this._hasStrings)for(let m=1,h=t.length;m0&&l>C&&(C=l,R=p,S=r)}return C>0?[R,S]:null}_contiguousSequenceScore(t,m,h){let c=0;for(let L=0;L=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[t])}_OriginalRegionIsBoundary(t,m){if(this._OriginalIsBoundary(t)||this._OriginalIsBoundary(t-1))return!0;if(m>0){const h=t+m;if(this._OriginalIsBoundary(h-1)||this._OriginalIsBoundary(h))return!0}return!1}_ModifiedIsBoundary(t){return t<=0||t>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[t])}_ModifiedRegionIsBoundary(t,m){if(this._ModifiedIsBoundary(t)||this._ModifiedIsBoundary(t-1))return!0;if(m>0){const h=t+m;if(this._ModifiedIsBoundary(h-1)||this._ModifiedIsBoundary(h))return!0}return!1}_boundaryScore(t,m,h,c){const L=this._OriginalRegionIsBoundary(t,m)?1:0,d=this._ModifiedRegionIsBoundary(h,c)?1:0;return L+d}ConcatenateChanges(t,m){const h=[];if(t.length===0||m.length===0)return m.length>0?m:t;if(this.ChangesOverlap(t[t.length-1],m[0],h)){const c=new Array(t.length+m.length-1);return g.Copy(t,0,c,0,t.length-1),c[t.length-1]=h[0],g.Copy(m,1,c,t.length,m.length-1),c}else{const c=new Array(t.length+m.length);return g.Copy(t,0,c,0,t.length),g.Copy(m,0,c,t.length,m.length),c}}ChangesOverlap(t,m,h){if(f.Assert(t.originalStart<=m.originalStart,"Left change is not less than or equal to right change"),f.Assert(t.modifiedStart<=m.modifiedStart,"Left change is not less than or equal to right change"),t.originalStart+t.originalLength>=m.originalStart||t.modifiedStart+t.modifiedLength>=m.modifiedStart){const c=t.originalStart;let L=t.originalLength;const d=t.modifiedStart;let y=t.modifiedLength;return t.originalStart+t.originalLength>=m.originalStart&&(L=m.originalStart+m.originalLength-t.originalStart),t.modifiedStart+t.modifiedLength>=m.modifiedStart&&(y=m.modifiedStart+m.modifiedLength-t.modifiedStart),h[0]=new E.DiffChange(c,L,d,y),!0}else return h[0]=null,!1}ClipDiagonalBound(t,m,h,c){if(t>=0&&t"u"}n.isUndefined=a;function s(d){return!_(d)}n.isDefined=s;function _(d){return a(d)||d===null}n.isUndefinedOrNull=_;function t(d,y){if(!d)throw new Error(y?`Unexpected type, expected '${y}'`:"Unexpected type")}n.assertType=t;function m(d){if(_(d))throw new Error("Assertion Failed: argument is undefined or null");return d}n.assertIsDefined=m;function h(d){return typeof d=="function"}n.isFunction=h;function c(d,y){const C=Math.min(d.length,y.length);for(let R=0;R{c[L]=d&&typeof d=="object"?M(d):d}),c}n.deepClone=M;function i(h){if(!h||typeof h!="object")return h;const c=[h];for(;c.length>0;){const L=c.shift();Object.freeze(L);for(const d in L)if(u.call(L,d)){const y=L[d];typeof y=="object"&&!Object.isFrozen(y)&&!(0,E.isTypedArray)(y)&&c.push(y)}}return h}n.deepFreeze=i;const u=Object.prototype.hasOwnProperty;function f(h,c){return g(h,c,new Set)}n.cloneAndChange=f;function g(h,c,L){if((0,E.isUndefinedOrNull)(h))return h;const d=c(h);if(typeof d<"u")return d;if(Array.isArray(h)){const y=[];for(const C of h)y.push(g(C,c,L));return y}if((0,E.isObject)(h)){if(L.has(h))throw new Error("Cannot clone recursive data-structure");L.add(h);const y={};for(const C in h)u.call(h,C)&&(y[C]=g(h[C],c,L));return L.delete(h),y}return h}function a(h,c,L=!0){return(0,E.isObject)(h)?((0,E.isObject)(c)&&Object.keys(c).forEach(d=>{d in h?L&&((0,E.isObject)(h[d])&&(0,E.isObject)(c[d])?a(h[d],c[d],L):h[d]=c[d]):h[d]=c[d]}),h):c}n.mixin=a;function s(h,c){if(h===c)return!0;if(h==null||c===null||c===void 0||typeof h!=typeof c||typeof h!="object"||Array.isArray(h)!==Array.isArray(c))return!1;let L,d;if(Array.isArray(h)){if(h.length!==c.length)return!1;for(L=0;Lfunction(){const C=Array.prototype.slice.call(arguments,0);return c(y,C)},d={};for(const y of h)d[y]=L(y);return d}n.createProxyObject=m}),K(te[23],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.toUint32=n.toUint8=void 0;function E(i){return i<0?0:i>255?255:i|0}n.toUint8=E;function M(i){return i<0?0:i>4294967295?4294967295:i|0}n.toUint32=M}),K(te[24],ie([0,1,23]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.CharacterSet=n.CharacterClassifier=void 0;class M{constructor(f){const g=(0,E.toUint8)(f);this._defaultValue=g,this._asciiMap=M._createAsciiMap(g),this._map=new Map}static _createAsciiMap(f){const g=new Uint8Array(256);return g.fill(f),g}set(f,g){const a=(0,E.toUint8)(g);f>=0&&f<256?this._asciiMap[f]=a:this._map.set(f,a)}get(f){return f>=0&&f<256?this._asciiMap[f]:this._map.get(f)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}n.CharacterClassifier=M;class i{constructor(){this._actual=new M(0)}add(f){this._actual.set(f,1)}has(f){return this._actual.get(f)===1}clear(){return this._actual.clear()}}n.CharacterSet=i}),K(te[6],ie([0,1,3]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.OffsetRangeSet=n.OffsetRange=void 0;class M{static addRange(f,g){let a=0;for(;ag))return new M(f,g)}static ofLength(f){return new M(0,f)}constructor(f,g){if(this.start=f,this.endExclusive=g,f>g)throw new E.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(f){return new M(this.start+f,this.endExclusive+f)}deltaStart(f){return new M(this.start+f,this.endExclusive)}deltaEnd(f){return new M(this.start,this.endExclusive+f)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(f){return this.start===f.start&&this.endExclusive===f.endExclusive}containsRange(f){return this.start<=f.start&&f.endExclusive<=this.endExclusive}contains(f){return this.start<=f&&f=this.endExclusive?this.start+(f-this.start)%this.length:f}}n.OffsetRange=M;class i{constructor(){this._sortedRanges=[]}addRange(f){let g=0;for(;gf.toString()).join(", ")}intersectsStrict(f){let g=0;for(;gf+g.length,0)}}n.OffsetRangeSet=i}),K(te[4],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Position=void 0;class E{constructor(i,u){this.lineNumber=i,this.column=u}with(i=this.lineNumber,u=this.column){return i===this.lineNumber&&u===this.column?this:new E(i,u)}delta(i=0,u=0){return this.with(this.lineNumber+i,this.column+u)}equals(i){return E.equals(this,i)}static equals(i,u){return!i&&!u?!0:!!i&&!!u&&i.lineNumber===u.lineNumber&&i.column===u.column}isBefore(i){return E.isBefore(this,i)}static isBefore(i,u){return i.lineNumberg||u===g&&f>a?(this.startLineNumber=g,this.startColumn=a,this.endLineNumber=u,this.endColumn=f):(this.startLineNumber=u,this.startColumn=f,this.endLineNumber=g,this.endColumn=a)}isEmpty(){return M.isEmpty(this)}static isEmpty(u){return u.startLineNumber===u.endLineNumber&&u.startColumn===u.endColumn}containsPosition(u){return M.containsPosition(this,u)}static containsPosition(u,f){return!(f.lineNumberu.endLineNumber||f.lineNumber===u.startLineNumber&&f.columnu.endColumn)}static strictContainsPosition(u,f){return!(f.lineNumberu.endLineNumber||f.lineNumber===u.startLineNumber&&f.column<=u.startColumn||f.lineNumber===u.endLineNumber&&f.column>=u.endColumn)}containsRange(u){return M.containsRange(this,u)}static containsRange(u,f){return!(f.startLineNumberu.endLineNumber||f.endLineNumber>u.endLineNumber||f.startLineNumber===u.startLineNumber&&f.startColumnu.endColumn)}strictContainsRange(u){return M.strictContainsRange(this,u)}static strictContainsRange(u,f){return!(f.startLineNumberu.endLineNumber||f.endLineNumber>u.endLineNumber||f.startLineNumber===u.startLineNumber&&f.startColumn<=u.startColumn||f.endLineNumber===u.endLineNumber&&f.endColumn>=u.endColumn)}plusRange(u){return M.plusRange(this,u)}static plusRange(u,f){let g,a,s,_;return f.startLineNumberu.endLineNumber?(s=f.endLineNumber,_=f.endColumn):f.endLineNumber===u.endLineNumber?(s=f.endLineNumber,_=Math.max(f.endColumn,u.endColumn)):(s=u.endLineNumber,_=u.endColumn),new M(g,a,s,_)}intersectRanges(u){return M.intersectRanges(this,u)}static intersectRanges(u,f){let g=u.startLineNumber,a=u.startColumn,s=u.endLineNumber,_=u.endColumn;const t=f.startLineNumber,m=f.startColumn,h=f.endLineNumber,c=f.endColumn;return gh?(s=h,_=c):s===h&&(_=Math.min(_,c)),g>s||g===s&&a>_?null:new M(g,a,s,_)}equalsRange(u){return M.equalsRange(this,u)}static equalsRange(u,f){return!u&&!f?!0:!!u&&!!f&&u.startLineNumber===f.startLineNumber&&u.startColumn===f.startColumn&&u.endLineNumber===f.endLineNumber&&u.endColumn===f.endColumn}getEndPosition(){return M.getEndPosition(this)}static getEndPosition(u){return new E.Position(u.endLineNumber,u.endColumn)}getStartPosition(){return M.getStartPosition(this)}static getStartPosition(u){return new E.Position(u.startLineNumber,u.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(u,f){return new M(this.startLineNumber,this.startColumn,u,f)}setStartPosition(u,f){return new M(u,f,this.endLineNumber,this.endColumn)}collapseToStart(){return M.collapseToStart(this)}static collapseToStart(u){return new M(u.startLineNumber,u.startColumn,u.startLineNumber,u.startColumn)}collapseToEnd(){return M.collapseToEnd(this)}static collapseToEnd(u){return new M(u.endLineNumber,u.endColumn,u.endLineNumber,u.endColumn)}delta(u){return new M(this.startLineNumber+u,this.startColumn,this.endLineNumber+u,this.endColumn)}static fromPositions(u,f=u){return new M(u.lineNumber,u.column,f.lineNumber,f.column)}static lift(u){return u?new M(u.startLineNumber,u.startColumn,u.endLineNumber,u.endColumn):null}static isIRange(u){return u&&typeof u.startLineNumber=="number"&&typeof u.startColumn=="number"&&typeof u.endLineNumber=="number"&&typeof u.endColumn=="number"}static areIntersectingOrTouching(u,f){return!(u.endLineNumberu.startLineNumber}toJSON(){return this}}n.Range=M}),K(te[12],ie([0,1,3,6,2]),function(U,n,E,M,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LineRange=void 0;class u{static fromRange(g){return new u(g.startLineNumber,g.endLineNumber)}static subtract(g,a){return a?g.startLineNumber=h.startLineNumber?m=new u(m.startLineNumber,Math.max(m.endLineNumberExclusive,h.endLineNumberExclusive)):(s.push(m),m=h)}return m!==null&&s.push(m),s}static ofLength(g,a){return new u(g,g+a)}static deserialize(g){return new u(g[0],g[1])}constructor(g,a){if(g>a)throw new E.BugIndicatingError(`startLineNumber ${g} cannot be after endLineNumberExclusive ${a}`);this.startLineNumber=g,this.endLineNumberExclusive=a}contains(g){return this.startLineNumber<=g&&g "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(f){return i.selectionsEqual(this,f)}static selectionsEqual(f,g){return f.selectionStartLineNumber===g.selectionStartLineNumber&&f.selectionStartColumn===g.selectionStartColumn&&f.positionLineNumber===g.positionLineNumber&&f.positionColumn===g.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(f,g){return this.getDirection()===0?new i(this.startLineNumber,this.startColumn,f,g):new i(f,g,this.startLineNumber,this.startColumn)}getPosition(){return new E.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new E.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(f,g){return this.getDirection()===0?new i(f,g,this.endLineNumber,this.endColumn):new i(this.endLineNumber,this.endColumn,f,g)}static fromPositions(f,g=f){return new i(f.lineNumber,f.column,g.lineNumber,g.column)}static fromRange(f,g){return g===0?new i(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn):new i(f.endLineNumber,f.endColumn,f.startLineNumber,f.startColumn)}static liftSelection(f){return new i(f.selectionStartLineNumber,f.selectionStartColumn,f.positionLineNumber,f.positionColumn)}static selectionsArrEqual(f,g){if(f&&!g||!f&&g)return!1;if(!f&&!g)return!0;if(f.length!==g.length)return!1;for(let a=0,s=f.length;a(f.hasOwnProperty(g)||(f[g]=u(g)),f[g])}n.getMapForWordSeparators=i(u=>new M(u))}),K(te[25],ie([0,1,18,19]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getWordAtText=n.ensureValidWordDefinition=n.DEFAULT_WORD_REGEXP=n.USUAL_WORD_SEPARATORS=void 0,n.USUAL_WORD_SEPARATORS="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function i(s=""){let _="(-?\\d*\\.\\d\\w*)|([^";for(const t of n.USUAL_WORD_SEPARATORS)s.indexOf(t)>=0||(_+="\\"+t);return _+="\\s]+)",new RegExp(_,"g")}n.DEFAULT_WORD_REGEXP=i();function u(s){let _=n.DEFAULT_WORD_REGEXP;if(s&&s instanceof RegExp)if(s.global)_=s;else{let t="g";s.ignoreCase&&(t+="i"),s.multiline&&(t+="m"),s.unicode&&(t+="u"),_=new RegExp(s.source,t)}return _.lastIndex=0,_}n.ensureValidWordDefinition=u;const f=new M.LinkedList;f.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function g(s,_,t,m,h){if(h||(h=E.Iterable.first(f)),t.length>h.maxLen){let C=s-h.maxLen/2;return C<0?C=0:m+=C,t=t.substring(C,s+h.maxLen/2),g(s,_,t,m,h)}const c=Date.now(),L=s-1-m;let d=-1,y=null;for(let C=1;!(Date.now()-c>=h.timeBudget);C++){const R=L-h.windowSize*C;_.lastIndex=Math.max(0,R);const S=a(_,t,L,d);if(!S&&y||(y=S,R<=0))break;d=R}if(y){const C={word:y[0],startColumn:m+1+y.index,endColumn:m+1+y.index+y[0].length};return _.lastIndex=0,C}return null}n.getWordAtText=g;function a(s,_,t,m){let h;for(;h=s.exec(_);){const c=h.index||0;if(c<=t&&s.lastIndex>=t)return h;if(m>0&&c>m)return null}return null}}),K(te[8],ie([0,1,3,6]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DateTimeout=n.InfiniteTimeout=n.SequenceDiff=n.DiffAlgorithmResult=void 0;class i{static trivial(s,_){return new i([new u(new M.OffsetRange(0,s.length),new M.OffsetRange(0,_.length))],!1)}static trivialTimedOut(s,_){return new i([new u(new M.OffsetRange(0,s.length),new M.OffsetRange(0,_.length))],!0)}constructor(s,_){this.diffs=s,this.hitTimeout=_}}n.DiffAlgorithmResult=i;class u{constructor(s,_){this.seq1Range=s,this.seq2Range=_}reverse(){return new u(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(s){return new u(this.seq1Range.join(s.seq1Range),this.seq2Range.join(s.seq2Range))}delta(s){return s===0?this:new u(this.seq1Range.delta(s),this.seq2Range.delta(s))}}n.SequenceDiff=u;class f{isValid(){return!0}}n.InfiniteTimeout=f,f.instance=new f;class g{constructor(s){if(this.timeout=s,this.startTime=Date.now(),this.valid=!0,s<=0)throw new E.BugIndicatingError("timeout must be positive")}isValid(){if(!(Date.now()-this.startTime5||o.seq1Range.length+o.seq2Range.length>5)};const R=c[C],S=y[y.length-1];p(S,R)?(d=!0,y[y.length-1]=y[y.length-1].join(R)):y.push(R)}c=y}while(L++<10&&d);return c}n.removeRandomLineMatches=f;function g(t,m,h){let c=h;if(c.length===0)return c;let L=0,d;do{d=!1;const y=[c[0]];for(let C=1;C5||v.length>500)return!1;const w=t.getText(v).trim();if(w.length>20||w.split(/\r\n|\r|\n/).length>1)return!1;const A=t.countLinesIn(l.seq1Range),N=l.seq1Range.length,F=m.countLinesIn(l.seq2Range),O=l.seq2Range.length,q=t.countLinesIn(o.seq1Range),T=o.seq1Range.length,W=m.countLinesIn(o.seq2Range),G=o.seq2Range.length,ae=2*40+50;function re(ne){return Math.min(ne,ae)}return Math.pow(Math.pow(re(A*40+N),1.5)+Math.pow(re(F*40+O),1.5),1.5)+Math.pow(Math.pow(re(q*40+T),1.5)+Math.pow(re(W*40+G),1.5),1.5)>Math.pow(Math.pow(ae,1.5),1.5)*1.3};const R=c[C],S=y[y.length-1];p(S,R)?(d=!0,y[y.length-1]=y[y.length-1].join(R)):y.push(R)}c=y}while(L++<10&&d);for(let y=0;y0&&r.trim().length<=3&&C.seq1Range.length+C.seq2Range.length>100&&(R=C.seq1Range.deltaStart(-r.length),S=C.seq2Range.deltaStart(-r.length));const l=t.getText(new E.OffsetRange(C.seq1Range.endExclusive,p.endExclusive));l.length>0&&l.trim().length<=3&&C.seq1Range.length+C.seq2Range.length>150&&(R=R.deltaEnd(l.length),S=S.deltaEnd(l.length)),c[y]=new M.SequenceDiff(R,S)}return c}n.removeRandomMatches=g;function a(t,m,h){if(h.length===0)return h;const c=[];c.push(h[0]);for(let d=1;d0&&(C=C.delta(S))}L.push(C)}return c.length>0&&L.push(c[c.length-1]),L}n.joinSequenceDiffs=a;function s(t,m,h){if(!t.getBoundaryScore||!m.getBoundaryScore)return h;for(let c=0;c0?h[c-1]:void 0,d=h[c],y=c+1=c.start&&t.seq2Range.start-y>=L.start&&h.isStronglyEqual(t.seq2Range.start-y,t.seq2Range.endExclusive-y)&&y<100;)y++;y--;let C=0;for(;t.seq1Range.start+CS&&(S=v,R=p)}return t.delta(R)}}),K(te[39],ie([0,1,6,8]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MyersDiffAlgorithm=void 0;class i{compute(s,_,t=M.InfiniteTimeout.instance){if(s.length===0||_.length===0)return M.DiffAlgorithmResult.trivial(s,_);function m(p,r){for(;ps.length||b>_.length)continue;const w=m(v,b);c.set(d,w);const A=v===l?L.get(d+1):L.get(d-1);if(L.set(d,w!==v?new u(A,v,b,w-v):A),c.get(d)===s.length&&c.get(d)-d===_.length)break e}}let y=L.get(d);const C=[];let R=s.length,S=_.length;for(;;){const p=y?y.x+y.length:0,r=y?y.y+y.length:0;if((p!==R||r!==S)&&C.push(new M.SequenceDiff(new E.OffsetRange(p,R),new E.OffsetRange(r,S))),!y)break;R=y.x,S=y.y,y=y.prev}return C.reverse(),new M.DiffAlgorithmResult(C,!1)}}n.MyersDiffAlgorithm=i;class u{constructor(s,_,t,m){this.prev=s,this.x=_,this.y=t,this.length=m}}class f{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(s){return s<0?(s=-s-1,this.negativeArr[s]):this.positiveArr[s]}set(s,_){if(s<0){if(s=-s-1,s>=this.negativeArr.length){const t=this.negativeArr;this.negativeArr=new Int32Array(t.length*2),this.negativeArr.set(t)}this.negativeArr[s]=_}else{if(s>=this.positiveArr.length){const t=this.positiveArr;this.positiveArr=new Int32Array(t.length*2),this.positiveArr.set(t)}this.positiveArr[s]=_}}}class g{constructor(){this.positiveArr=[],this.negativeArr=[]}get(s){return s<0?(s=-s-1,this.negativeArr[s]):this.positiveArr[s]}set(s,_){s<0?(s=-s-1,this.negativeArr[s]=_):this.positiveArr[s]=_}}}),K(te[40],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Array2D=void 0;class E{constructor(i,u){this.width=i,this.height=u,this.array=[],this.array=new Array(i*u)}get(i,u){return this.array[i+u*this.width]}set(i,u,f){this.array[i+u*this.width]=f}}n.Array2D=E}),K(te[41],ie([0,1,6,8,40]),function(U,n,E,M,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DynamicProgrammingDiffing=void 0;class u{compute(g,a,s=M.InfiniteTimeout.instance,_){if(g.length===0||a.length===0)return M.DiffAlgorithmResult.trivial(g,a);const t=new i.Array2D(g.length,a.length),m=new i.Array2D(g.length,a.length),h=new i.Array2D(g.length,a.length);for(let S=0;S0&&p>0&&m.get(S-1,p-1)===3&&(o+=h.get(S-1,p-1)),o+=_?_(S,p):1):o=-1;const v=Math.max(r,l,o);if(v===o){const b=S>0&&p>0?h.get(S-1,p-1):0;h.set(S,p,b+1),m.set(S,p,3)}else v===r?(h.set(S,p,0),m.set(S,p,1)):v===l&&(h.set(S,p,0),m.set(S,p,2));t.set(S,p,v)}const c=[];let L=g.length,d=a.length;function y(S,p){(S+1!==L||p+1!==d)&&c.push(new M.SequenceDiff(new E.OffsetRange(S+1,L),new E.OffsetRange(p+1,d))),L=S,d=p}let C=g.length-1,R=a.length-1;for(;C>=0&&R>=0;)m.get(C,R)===3?(y(C,R),C--,R--):m.get(C,R)===1?C--:R--;return y(-1,-1),c.reverse(),new M.DiffAlgorithmResult(c,!1)}}n.DynamicProgrammingDiffing=u}),K(te[26],ie([0,1,12]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MovedText=n.SimpleLineRangeMapping=n.RangeMapping=n.LineRangeMapping=n.LinesDiff=void 0;class M{constructor(s,_,t){this.changes=s,this.moves=_,this.hitTimeout=t}}n.LinesDiff=M;class i{static inverse(s,_,t){const m=[];let h=1,c=1;for(const d of s){const y=new i(new E.LineRange(h,d.originalRange.startLineNumber),new E.LineRange(c,d.modifiedRange.startLineNumber),void 0);y.modifiedRange.isEmpty||m.push(y),h=d.originalRange.endLineNumberExclusive,c=d.modifiedRange.endLineNumberExclusive}const L=new i(new E.LineRange(h,_+1),new E.LineRange(c,t+1),void 0);return L.modifiedRange.isEmpty||m.push(L),m}constructor(s,_,t){this.originalRange=s,this.modifiedRange=_,this.innerChanges=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var s;return new i(this.modifiedRange,this.originalRange,(s=this.innerChanges)===null||s===void 0?void 0:s.map(_=>_.flip()))}}n.LineRangeMapping=i;class u{constructor(s,_){this.originalRange=s,this.modifiedRange=_}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new u(this.modifiedRange,this.originalRange)}}n.RangeMapping=u;class f{constructor(s,_){this.original=s,this.modified=_}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new f(this.modified,this.original)}join(s){return new f(this.original.join(s.original),this.modified.join(s.modified))}}n.SimpleLineRangeMapping=f;class g{constructor(s,_){this.lineRangeMapping=s,this.changes=_}flip(){return new g(this.lineRangeMapping.flip(),this.changes.map(s=>s.flip()))}}n.MovedText=g}),K(te[42],ie([0,1,16,9,28,3,12,6,4,2,8,41,38,39,26]),function(U,n,E,M,i,u,f,g,a,s,_,t,m,h,c){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.findFirstMonotonous=n.findLastMonotonous=n.LinesSliceCharSequence=n.LineSequence=n.getLineRangeMapping=n.lineRangeMappingFromRangeMappings=n.AdvancedLinesDiffComputer=void 0;class L{constructor(){this.dynamicProgrammingDiffing=new t.DynamicProgrammingDiffing,this.myersDiffingAlgorithm=new h.MyersDiffAlgorithm}computeDiff(e,P,k){if(e.length<=1&&(0,E.equals)(e,P,(D,x)=>D===x))return new c.LinesDiff([],[],!1);if(e.length===1&&e[0].length===0||P.length===1&&P[0].length===0)return new c.LinesDiff([new c.LineRangeMapping(new f.LineRange(1,e.length+1),new f.LineRange(1,P.length+1),[new c.RangeMapping(new s.Range(1,1,e.length,e[0].length+1),new s.Range(1,1,P.length,P[0].length+1))])],[],!1);const I=k.maxComputationTimeMs===0?_.InfiniteTimeout.instance:new _.DateTimeout(k.maxComputationTimeMs),V=!k.ignoreTrimWhitespace,Q=new Map;function ee(D){let x=Q.get(D);return x===void 0&&(x=Q.size,Q.set(D,x)),x}const ue=e.map(D=>ee(D.trim())),he=P.map(D=>ee(D.trim())),ge=new v(ue,e),me=new v(he,P),ve=(()=>ge.length+me.length<1700?this.dynamicProgrammingDiffing.compute(ge,me,I,(D,x)=>e[D]===P[x]?P[x].length===0?.1:1+Math.log(1+P[x].length):.99):this.myersDiffingAlgorithm.compute(ge,me))();let J=ve.diffs,H=ve.hitTimeout;J=(0,m.optimizeSequenceDiffs)(ge,me,J),J=(0,m.removeRandomLineMatches)(ge,me,J);const X=[],Y=D=>{if(V)for(let x=0;xD.seq1Range.start-se===D.seq2Range.start-oe);const x=D.seq1Range.start-se;Y(x),se=D.seq1Range.endExclusive,oe=D.seq2Range.endExclusive;const B=this.refineDiff(e,P,D,I,V);B.hitTimeout&&(H=!0);for(const z of B.mappings)X.push(z)}Y(e.length-se);const j=r(X,e,P);let le=[];return k.computeMoves&&(le=this.computeMoves(j,e,P,ue,he,I,V)),(0,M.assertFn)(()=>{function D(B,z){if(B.lineNumber<1||B.lineNumber>z.length)return!1;const Z=z[B.lineNumber-1];return!(B.column<1||B.column>Z.length+1)}function x(B,z){return!(B.startLineNumber<1||B.startLineNumber>z.length+1||B.endLineNumberExclusive<1||B.endLineNumberExclusive>z.length+1)}for(const B of j){if(!B.innerChanges)return!1;for(const z of B.innerChanges)if(!(D(z.modifiedRange.getStartPosition(),P)&&D(z.modifiedRange.getEndPosition(),P)&&D(z.originalRange.getStartPosition(),e)&&D(z.originalRange.getEndPosition(),e)))return!1;if(!x(B.modifiedRange,P)||!x(B.originalRange,e))return!1}return!0}),new c.LinesDiff(j,le,H)}computeMoves(e,P,k,I,V,Q,ee){const ue=[],he=e.filter(j=>j.modifiedRange.isEmpty&&j.originalRange.length>=3).map(j=>new fe(j.originalRange,P,j)),ge=new Set(e.filter(j=>j.originalRange.isEmpty&&j.modifiedRange.length>=3).map(j=>new fe(j.modifiedRange,k,j))),me=new Set;for(const j of he){let le=-1,D;for(const x of ge){const B=j.computeSimilarity(x);B>le&&(le=B,D=x)}if(le>.9&&D&&(ge.delete(D),ue.push(new c.SimpleLineRangeMapping(j.range,D.range)),me.add(j.source),me.add(D.source)),!Q.isValid())return[]}const ve=new i.SetMap;for(const j of e)if(!me.has(j))for(let le=j.originalRange.startLineNumber;lej.modifiedRange.startLineNumber,E.numberComparator));for(const j of e){if(me.has(j))continue;let le=[];for(let D=j.modifiedRange.startLineNumber;D{for(const de of le)if(de.originalLineRange.endLineNumberExclusive+1===Z.endLineNumberExclusive&&de.modifiedLineRange.endLineNumberExclusive+1===B.endLineNumberExclusive){de.originalLineRange=new f.LineRange(de.originalLineRange.startLineNumber,Z.endLineNumberExclusive),de.modifiedLineRange=new f.LineRange(de.modifiedLineRange.startLineNumber,B.endLineNumberExclusive),z.push(de);return}const ce={modifiedLineRange:B,originalLineRange:Z};J.push(ce),z.push(ce)}),le=z}if(!Q.isValid())return[]}J.sort((0,E.reverseOrder)((0,E.compareBy)(j=>j.modifiedLineRange.length,E.numberComparator)));const H=new C,X=new C;for(const j of J){const le=j.modifiedLineRange.startLineNumber-j.originalLineRange.startLineNumber,D=H.subtractFrom(j.modifiedLineRange),x=X.subtractFrom(j.originalLineRange).map(z=>z.delta(le)),B=y(D,x);for(const z of B){if(z.length<3)continue;const Z=z,ce=z.delta(-le);ue.push(new c.SimpleLineRangeMapping(ce,Z)),H.addRange(Z),X.addRange(ce)}}if(ue.sort((0,E.compareBy)(j=>j.original.startLineNumber,E.numberComparator)),ue.length===0)return[];let Y=[ue[0]];for(let j=1;j=0&&B>=0&&x+B<=2){Y[Y.length-1]=le.join(D);continue}D.original.toOffsetRange().slice(P).map(ce=>ce.trim()).join(` -`).length<=10||Y.push(D)}const se=d.createOfSorted(e,j=>j.originalRange.endLineNumberExclusive,E.numberComparator);return Y=Y.filter(j=>{const le=se.findLastItemBeforeOrEqual(j.original.startLineNumber)||new c.LineRangeMapping(new f.LineRange(1,1),new f.LineRange(1,1),[]),D=j.modified.startLineNumber-le.modifiedRange.endLineNumberExclusive,x=j.original.startLineNumber-le.originalRange.endLineNumberExclusive;return D!==x}),Y.map(j=>{const le=this.refineDiff(P,k,new _.SequenceDiff(j.original.toOffsetRange(),j.modified.toOffsetRange()),Q,ee),D=r(le.mappings,P,k,!0);return new c.MovedText(j,D)})}refineDiff(e,P,k,I,V){const Q=new w(e,k.seq1Range,V),ee=new w(P,k.seq2Range,V),ue=Q.length+ee.length<500?this.dynamicProgrammingDiffing.compute(Q,ee,I):this.myersDiffingAlgorithm.compute(Q,ee,I);let he=ue.diffs;return he=(0,m.optimizeSequenceDiffs)(Q,ee,he),he=S(Q,ee,he),he=(0,m.smoothenSequenceDiffs)(Q,ee,he),he=(0,m.removeRandomMatches)(Q,ee,he),{mappings:he.map(me=>new c.RangeMapping(Q.translateRange(me.seq1Range),ee.translateRange(me.seq2Range))),hitTimeout:ue.hitTimeout}}}n.AdvancedLinesDiffComputer=L;class d{static createOfSorted(e,P,k){return new d(e,P,k)}constructor(e,P,k){this._items=e,this._itemToDomain=P,this._domainComparator=k,this._currentIdx=0,this._lastValue=void 0,this._hasLastValue=!1}findLastItemBeforeOrEqual(e){if(this._hasLastValue&&E.CompareResult.isLessThan(this._domainComparator(e,this._lastValue)))throw new u.BugIndicatingError;for(this._lastValue=e,this._hasLastValue=!0;this._currentIdxI.endLineNumberExclusive>=e.startLineNumber),this._normalizedRanges.length),k=(0,E.findLastIndex)(this._normalizedRanges,I=>I.startLineNumber<=e.endLineNumberExclusive)+1;if(P===k)this._normalizedRanges.splice(P,0,e);else if(P===k-1){const I=this._normalizedRanges[P];this._normalizedRanges[P]=I.join(e)}else{const I=this._normalizedRanges[P].join(this._normalizedRanges[k-1]).join(e);this._normalizedRanges.splice(P,k-P,I)}}subtractFrom(e){const P=R(this._normalizedRanges.findIndex(Q=>Q.endLineNumberExclusive>=e.startLineNumber),this._normalizedRanges.length),k=(0,E.findLastIndex)(this._normalizedRanges,Q=>Q.startLineNumber<=e.endLineNumberExclusive)+1;if(P===k)return[e];const I=[];let V=e.startLineNumber;for(let Q=P;QV&&I.push(new f.LineRange(V,ee.startLineNumber)),V=ee.endLineNumberExclusive}return Vee&&k.push(new _.SequenceDiff(I.s1Range,I.s2Range)),I=void 0}for(const ee of P){let ue=function(J,H){var X,Y,se,oe;if(!I||!I.s1Range.containsRange(J)||!I.s2Range.containsRange(H))if(I&&!(I.s1Range.endExclusive0||e.length>0;){const k=$[0],I=e[0];let V;k&&(!I||k.seq1Range.start0&&P[P.length-1].seq1Range.endExclusive>=V.seq1Range.start?P[P.length-1]=P[P.length-1].join(V):P.push(V)}return P}function r($,e,P,k=!1){const I=[];for(const V of o($.map(Q=>l(Q,e,P)),(Q,ee)=>Q.originalRange.overlapOrTouch(ee.originalRange)||Q.modifiedRange.overlapOrTouch(ee.modifiedRange))){const Q=V[0],ee=V[V.length-1];I.push(new c.LineRangeMapping(Q.originalRange.join(ee.originalRange),Q.modifiedRange.join(ee.modifiedRange),V.map(ue=>ue.innerChanges[0])))}return(0,M.assertFn)(()=>!k&&I.length>0&&I[0].originalRange.startLineNumber!==I[0].modifiedRange.startLineNumber?!1:(0,M.checkAdjacentItems)(I,(V,Q)=>Q.originalRange.startLineNumber-V.originalRange.endLineNumberExclusive===Q.modifiedRange.startLineNumber-V.modifiedRange.endLineNumberExclusive&&V.originalRange.endLineNumberExclusive=P[$.modifiedRange.startLineNumber-1].length&&$.originalRange.startColumn-1>=e[$.originalRange.startLineNumber-1].length&&$.originalRange.startLineNumber<=$.originalRange.endLineNumber+I&&$.modifiedRange.startLineNumber<=$.modifiedRange.endLineNumber+I&&(k=1);const V=new f.LineRange($.originalRange.startLineNumber+k,$.originalRange.endLineNumber+1+I),Q=new f.LineRange($.modifiedRange.startLineNumber+k,$.modifiedRange.endLineNumber+1+I);return new c.LineRangeMapping(V,Q,[$])}n.getLineRangeMapping=l;function*o($,e){let P,k;for(const I of $)k!==void 0&&e(k,I)?P.push(I):(P&&(yield P),P=[I]),k=I;P&&(yield P)}class v{constructor(e,P){this.trimmedHash=e,this.lines=P}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const P=e===0?0:b(this.lines[e-1]),k=e===this.lines.length?0:b(this.lines[e]);return 1e3-(P+k)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(` -`)}isStronglyEqual(e,P){return this.lines[e]===this.lines[P]}}n.LineSequence=v;function b($){let e=0;for(;e<$.length&&($.charCodeAt(e)===32||$.charCodeAt(e)===9);)e++;return e}class w{constructor(e,P,k){this.lines=e,this.considerWhitespaceChanges=k,this.elements=[],this.firstCharOffsetByLineMinusOne=[],this.additionalOffsetByLine=[];let I=!1;P.start>0&&P.endExclusive>=e.length&&(P=new g.OffsetRange(P.start-1,P.endExclusive),I=!0),this.lineRange=P;for(let V=this.lineRange.start;VString.fromCharCode(P)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const P=G(e>0?this.elements[e-1]:-1),k=G(ee?k=V:P=V+1}const I=P===0?0:this.firstCharOffsetByLineMinusOne[P-1];return new a.Position(this.lineRange.start+P+1,e-I+1+this.additionalOffsetByLine[P])}translateRange(e){return s.Range.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length||!q(this.elements[e]))return;let P=e;for(;P>0&&q(this.elements[P-1]);)P--;let k=e;for(;kQ<=e.start))!==null&&P!==void 0?P:0,V=(k=O(this.firstCharOffsetByLineMinusOne,Q=>e.endExclusive<=Q))!==null&&k!==void 0?k:this.elements.length;return new g.OffsetRange(I,V)}}n.LinesSliceCharSequence=w;function A($,e){let P=0,k=$.length;for(;P=97&&$<=122||$>=65&&$<=90||$>=48&&$<=57}const T={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function W($){return T[$]}function G($){return $===10?7:$===13?6:ae($)?5:$>=97&&$<=122?0:$>=65&&$<=90?1:$>=48&&$<=57?2:$===-1?3:4}function ae($){return $===32||$===9}const re=new Map;function ne($){let e=re.get($);return e===void 0&&(e=re.size,re.set($,e)),e}class fe{constructor(e,P,k){this.range=e,this.lines=P,this.source=k,this.histogram=[];let I=0;for(let V=e.startLineNumber-1;Vnew M.RangeMapping(new u.Range(T.originalStartLineNumber,T.originalStartColumn,T.originalEndLineNumber,T.originalEndColumn),new u.Range(T.modifiedStartLineNumber,T.modifiedStartColumn,T.modifiedEndLineNumber,T.modifiedEndColumn))));A&&(A.modifiedRange.endLineNumberExclusive===q.modifiedRange.startLineNumber||A.originalRange.endLineNumberExclusive===q.originalRange.startLineNumber)&&(q=new M.LineRangeMapping(A.originalRange.join(q.originalRange),A.modifiedRange.join(q.modifiedRange),A.innerChanges&&q.innerChanges?A.innerChanges.concat(q.innerChanges):void 0),w.pop()),w.push(q),A=q}return(0,f.assertFn)(()=>(0,f.checkAdjacentItems)(w,(N,F)=>F.originalRange.startLineNumber-N.originalRange.endLineNumberExclusive===F.modifiedRange.startLineNumber-N.modifiedRange.endLineNumberExclusive&&N.originalRange.endLineNumberExclusive(p===10?"\\n":String.fromCharCode(p))+`-(${this._lineNumbers[r]},${this._columns[r]})`).join(", ")+"]"}_assertIndex(p,r){if(p<0||p>=r.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(p){return p>0&&p===this._lineNumbers.length?this.getEndLineNumber(p-1):(this._assertIndex(p,this._lineNumbers),this._lineNumbers[p])}getEndLineNumber(p){return p===-1?this.getStartLineNumber(p+1):(this._assertIndex(p,this._lineNumbers),this._charCodes[p]===10?this._lineNumbers[p]+1:this._lineNumbers[p])}getStartColumn(p){return p>0&&p===this._columns.length?this.getEndColumn(p-1):(this._assertIndex(p,this._columns),this._columns[p])}getEndColumn(p){return p===-1?this.getStartColumn(p+1):(this._assertIndex(p,this._columns),this._charCodes[p]===10?1:this._columns[p]+1)}}class h{constructor(p,r,l,o,v,b,w,A){this.originalStartLineNumber=p,this.originalStartColumn=r,this.originalEndLineNumber=l,this.originalEndColumn=o,this.modifiedStartLineNumber=v,this.modifiedStartColumn=b,this.modifiedEndLineNumber=w,this.modifiedEndColumn=A}static createFromDiffChange(p,r,l){const o=r.getStartLineNumber(p.originalStart),v=r.getStartColumn(p.originalStart),b=r.getEndLineNumber(p.originalStart+p.originalLength-1),w=r.getEndColumn(p.originalStart+p.originalLength-1),A=l.getStartLineNumber(p.modifiedStart),N=l.getStartColumn(p.modifiedStart),F=l.getEndLineNumber(p.modifiedStart+p.modifiedLength-1),O=l.getEndColumn(p.modifiedStart+p.modifiedLength-1);return new h(o,v,b,w,A,N,F,O)}}function c(S){if(S.length<=1)return S;const p=[S[0]];let r=p[0];for(let l=1,o=S.length;l0&&r.originalLength<20&&r.modifiedLength>0&&r.modifiedLength<20&&v()){const T=l.createCharSequence(p,r.originalStart,r.originalStart+r.originalLength-1),W=o.createCharSequence(p,r.modifiedStart,r.modifiedStart+r.modifiedLength-1);if(T.getElements().length>0&&W.getElements().length>0){let G=_(T,W,v,!0).changes;w&&(G=c(G)),q=[];for(let ae=0,re=G.length;ae1&&G>1;){const ae=q.charCodeAt(W-2),re=T.charCodeAt(G-2);if(ae!==re)break;W--,G--}(W>1||G>1)&&this._pushTrimWhitespaceCharChange(o,v+1,1,W,b+1,1,G)}{let W=C(q,1),G=C(T,1);const ae=q.length+1,re=T.length+1;for(;W!0;const p=Date.now();return()=>Date.now()-pnew E.LegacyLinesDiffComputer,getAdvanced:()=>new M.AdvancedLinesDiffComputer}}),K(te[45],ie([0,1,29]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.computeDefaultDocumentColors=void 0;function M(m){const h=[];for(const c of m){const L=Number(c);(L||L===0&&c.replace(/\s/g,"")!=="")&&h.push(L)}return h}function i(m,h,c,L){return{red:m/255,blue:c/255,green:h/255,alpha:L}}function u(m,h){const c=h.index,L=h[0].length;if(!c)return;const d=m.positionAt(c);return{startLineNumber:d.lineNumber,startColumn:d.column,endLineNumber:d.lineNumber,endColumn:d.column+L}}function f(m,h){if(!m)return;const c=E.Color.Format.CSS.parseHex(h);if(c)return{range:m,color:i(c.rgba.r,c.rgba.g,c.rgba.b,c.rgba.a)}}function g(m,h,c){if(!m||h.length!==1)return;const d=h[0].values(),y=M(d);return{range:m,color:i(y[0],y[1],y[2],c?y[3]:1)}}function a(m,h,c){if(!m||h.length!==1)return;const d=h[0].values(),y=M(d),C=new E.Color(new E.HSLA(y[0],y[1]/100,y[2]/100,c?y[3]:1));return{range:m,color:i(C.rgba.r,C.rgba.g,C.rgba.b,C.rgba.a)}}function s(m,h){return typeof m=="string"?[...m.matchAll(h)]:m.findMatches(h)}function _(m){const h=[],L=s(m,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(L.length>0)for(const d of L){const y=d.filter(p=>p!==void 0),C=y[1],R=y[2];if(!R)continue;let S;if(C==="rgb"){const p=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;S=g(u(m,d),s(R,p),!1)}else if(C==="rgba"){const p=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;S=g(u(m,d),s(R,p),!0)}else if(C==="hsl"){const p=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;S=a(u(m,d),s(R,p),!1)}else if(C==="hsla"){const p=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;S=a(u(m,d),s(R,p),!0)}else C==="#"&&(S=f(u(m,d),C+R));S&&h.push(S)}return h}function t(m){return!m||typeof m.getValue!="function"||typeof m.positionAt!="function"?[]:_(m)}n.computeDefaultDocumentColors=t}),K(te[46],ie([0,1,24]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.computeLinks=n.LinkComputer=n.StateMachine=void 0;class M{constructor(m,h,c){const L=new Uint8Array(m*h);for(let d=0,y=m*h;dh&&(h=R),C>c&&(c=C),S>c&&(c=S)}h++,c++;const L=new M(c,h,0);for(let d=0,y=m.length;d=this._maxCharCode?0:this._states.get(m,h)}}n.StateMachine=i;let u=null;function f(){return u===null&&(u=new i([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),u}let g=null;function a(){if(g===null){g=new E.CharacterClassifier(0);const t=` <>'"\u3001\u3002\uFF61\uFF64\uFF0C\uFF0E\uFF1A\uFF1B\u2018\u3008\u300C\u300E\u3014\uFF08\uFF3B\uFF5B\uFF62\uFF63\uFF5D\uFF3D\uFF09\u3015\u300F\u300D\u3009\u2019\uFF40\uFF5E\u2026`;for(let h=0;hL);if(L>0){const C=h.charCodeAt(L-1),R=h.charCodeAt(y);(C===40&&R===41||C===91&&R===93||C===123&&R===125)&&y--}return{range:{startLineNumber:c,startColumn:L+1,endLineNumber:c,endColumn:y+2},url:h.substring(L,y+1)}}static computeLinks(m,h=f()){const c=a(),L=[];for(let d=1,y=m.getLineCount();d<=y;d++){const C=m.getLineContent(d),R=C.length;let S=0,p=0,r=0,l=1,o=!1,v=!1,b=!1,w=!1;for(;S=0?(g+=f?1:-1,g<0?g=i.length-1:g%=i.length,i[g]):null}}n.BasicInplaceReplace=E,E.INSTANCE=new E}),K(te[48],ie([0,1,11]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.shouldSynchronizeModel=n.ApplyEditsResult=n.SearchData=n.ValidAnnotatedEditOperation=n.isITextSnapshot=n.FindMatch=n.TextModelResolvedOptions=n.InjectedTextCursorStops=n.MinimapPosition=n.GlyphMarginLane=n.OverviewRulerLane=void 0;var M;(function(c){c[c.Left=1]="Left",c[c.Center=2]="Center",c[c.Right=4]="Right",c[c.Full=7]="Full"})(M||(n.OverviewRulerLane=M={}));var i;(function(c){c[c.Left=1]="Left",c[c.Right=2]="Right"})(i||(n.GlyphMarginLane=i={}));var u;(function(c){c[c.Inline=1]="Inline",c[c.Gutter=2]="Gutter"})(u||(n.MinimapPosition=u={}));var f;(function(c){c[c.Both=0]="Both",c[c.Right=1]="Right",c[c.Left=2]="Left",c[c.None=3]="None"})(f||(n.InjectedTextCursorStops=f={}));class g{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(L){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,L.tabSize|0),L.indentSize==="tabSize"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,L.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!L.insertSpaces,this.defaultEOL=L.defaultEOL|0,this.trimAutoWhitespace=!!L.trimAutoWhitespace,this.bracketPairColorizationOptions=L.bracketPairColorizationOptions}equals(L){return this.tabSize===L.tabSize&&this._indentSizeIsTabSize===L._indentSizeIsTabSize&&this.indentSize===L.indentSize&&this.insertSpaces===L.insertSpaces&&this.defaultEOL===L.defaultEOL&&this.trimAutoWhitespace===L.trimAutoWhitespace&&(0,E.equals)(this.bracketPairColorizationOptions,L.bracketPairColorizationOptions)}createChangeEvent(L){return{tabSize:this.tabSize!==L.tabSize,indentSize:this.indentSize!==L.indentSize,insertSpaces:this.insertSpaces!==L.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==L.trimAutoWhitespace}}}n.TextModelResolvedOptions=g;class a{constructor(L,d){this._findMatchBrand=void 0,this.range=L,this.matches=d}}n.FindMatch=a;function s(c){return c&&typeof c.read=="function"}n.isITextSnapshot=s;class _{constructor(L,d,y,C,R,S){this.identifier=L,this.range=d,this.text=y,this.forceMoveMarkers=C,this.isAutoWhitespaceEdit=R,this._isTracked=S}}n.ValidAnnotatedEditOperation=_;class t{constructor(L,d,y){this.regex=L,this.wordSeparators=d,this.simpleSearch=y}}n.SearchData=t;class m{constructor(L,d,y){this.reverseEdits=L,this.changes=d,this.trimAutoWhitespaceLineNumbers=y}}n.ApplyEditsResult=m;function h(c){return!c.isTooLargeForSyncing()&&!c.isForSimpleWidget}n.shouldSynchronizeModel=h}),K(te[49],ie([0,1,16,23]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PrefixSumIndexOfResult=n.ConstantTimePrefixSumComputer=n.PrefixSumComputer=void 0;class i{constructor(a){this.values=a,this.prefixSum=new Uint32Array(a.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(a,s){a=(0,M.toUint32)(a);const _=this.values,t=this.prefixSum,m=s.length;return m===0?!1:(this.values=new Uint32Array(_.length+m),this.values.set(_.subarray(0,a),0),this.values.set(_.subarray(a),a+m),this.values.set(s,a),a-1=0&&this.prefixSum.set(t.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(a,s){return a=(0,M.toUint32)(a),s=(0,M.toUint32)(s),this.values[a]===s?!1:(this.values[a]=s,a-1=_.length)return!1;const m=_.length-a;return s>=m&&(s=m),s===0?!1:(this.values=new Uint32Array(_.length-s),this.values.set(_.subarray(0,a),0),this.values.set(_.subarray(a+s),a),this.prefixSum=new Uint32Array(this.values.length),a-1=0&&this.prefixSum.set(t.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(a){return a<0?0:(a=(0,M.toUint32)(a),this._getPrefixSum(a))}_getPrefixSum(a){if(a<=this.prefixSumValidIndex[0])return this.prefixSum[a];let s=this.prefixSumValidIndex[0]+1;s===0&&(this.prefixSum[0]=this.values[0],s++),a>=this.values.length&&(a=this.values.length-1);for(let _=s;_<=a;_++)this.prefixSum[_]=this.prefixSum[_-1]+this.values[_];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],a),this.prefixSum[a]}getIndexOf(a){a=Math.floor(a),this.getTotalSum();let s=0,_=this.values.length-1,t=0,m=0,h=0;for(;s<=_;)if(t=s+(_-s)/2|0,m=this.prefixSum[t],h=m-this.values[t],a=m)s=t+1;else break;return new f(t,a-h)}}n.PrefixSumComputer=i;class u{constructor(a){this._values=a,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(a){return this._ensureValid(),a===0?0:this._prefixSum[a-1]}getIndexOf(a){this._ensureValid();const s=this._indexBySum[a],_=s>0?this._prefixSum[s-1]:0;return new f(s,a-_)}removeValues(a,s){this._values.splice(a,s),this._invalidate(a)}insertValues(a,s){this._values=(0,E.arrayInsert)(this._values,a,s),this._invalidate(a)}_invalidate(a){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,a-1)}_ensureValid(){if(!this._isValid){for(let a=this._validEndIndex+1,s=this._values.length;a0?this._prefixSum[a-1]:0;this._prefixSum[a]=t+_;for(let m=0;m<_;m++)this._indexBySum[t+m]=a}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(a,s){this._values[a]!==s&&(this._values[a]=s,this._invalidate(a))}}n.ConstantTimePrefixSumComputer=u;class f{constructor(a,s){this.index=a,this.remainder=s,this._prefixSumIndexOfResultBrand=void 0,this.index=a,this.remainder=s}}n.PrefixSumIndexOfResult=f}),K(te[50],ie([0,1,5,4,49]),function(U,n,E,M,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MirrorTextModel=void 0;class u{constructor(g,a,s,_){this._uri=g,this._lines=a,this._eol=s,this._versionId=_,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(g){g.eol&&g.eol!==this._eol&&(this._eol=g.eol,this._lineStarts=null);const a=g.changes;for(const s of a)this._acceptDeleteRange(s.range),this._acceptInsertText(new M.Position(s.range.startLineNumber,s.range.startColumn),s.text);this._versionId=g.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const g=this._eol.length,a=this._lines.length,s=new Uint32Array(a);for(let _=0;_=0;let R=null;try{R=E.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:C,global:!0,unicode:!0})}catch{return null}if(!R)return null;let S=!this.isRegex&&!C;return S&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(S=this.matchCase),new f.SearchData(R,this.wordSeparators?(0,M.getMapForWordSeparators)(this.wordSeparators):null,S?this.searchString:null)}}n.SearchParams=a;function s(y){if(!y||y.length===0)return!1;for(let C=0,R=y.length;C=R)break;const p=y.charCodeAt(C);if(p===110||p===114||p===87)return!0}}return!1}n.isMultilineRegexSource=s;function _(y,C,R){if(!R)return new f.FindMatch(y,null);const S=[];for(let p=0,r=C.length;p>0);R[r]>=C?p=r-1:R[r+1]>=C?(S=r,p=r):S=r+1}return S+1}}class m{static findMatches(C,R,S,p,r){const l=R.parseSearchRequest();return l?l.regex.multiline?this._doFindMatchesMultiline(C,S,new d(l.wordSeparators,l.regex),p,r):this._doFindMatchesLineByLine(C,S,l,p,r):[]}static _getMultilineMatchRange(C,R,S,p,r,l){let o,v=0;p?(v=p.findLineFeedCountBeforeOffset(r),o=R+r+v):o=R+r;let b;if(p){const F=p.findLineFeedCountBeforeOffset(r+l.length)-v;b=o+l.length+F}else b=o+l.length;const w=C.getPositionAt(o),A=C.getPositionAt(b);return new u.Range(w.lineNumber,w.column,A.lineNumber,A.column)}static _doFindMatchesMultiline(C,R,S,p,r){const l=C.getOffsetAt(R.getStartPosition()),o=C.getValueInRange(R,1),v=C.getEOL()===`\r -`?new t(o):null,b=[];let w=0,A;for(S.reset(0);A=S.next(o);)if(b[w++]=_(this._getMultilineMatchRange(C,l,o,v,A.index,A[0]),A,p),w>=r)return b;return b}static _doFindMatchesLineByLine(C,R,S,p,r){const l=[];let o=0;if(R.startLineNumber===R.endLineNumber){const b=C.getLineContent(R.startLineNumber).substring(R.startColumn-1,R.endColumn-1);return o=this._findMatchesInLine(S,b,R.startLineNumber,R.startColumn-1,o,l,p,r),l}const v=C.getLineContent(R.startLineNumber).substring(R.startColumn-1);o=this._findMatchesInLine(S,v,R.startLineNumber,R.startColumn-1,o,l,p,r);for(let b=R.startLineNumber+1;b=v))return r;return r}const w=new d(C.wordSeparators,C.regex);let A;w.reset(0);do if(A=w.next(R),A&&(l[r++]=_(new u.Range(S,A.index+1+p,S,A.index+1+A[0].length+p),A,o),r>=v))return r;while(A);return r}static findNextMatch(C,R,S,p){const r=R.parseSearchRequest();if(!r)return null;const l=new d(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(C,S,l,p):this._doFindNextMatchLineByLine(C,S,l,p)}static _doFindNextMatchMultiline(C,R,S,p){const r=new i.Position(R.lineNumber,1),l=C.getOffsetAt(r),o=C.getLineCount(),v=C.getValueInRange(new u.Range(r.lineNumber,r.column,o,C.getLineMaxColumn(o)),1),b=C.getEOL()===`\r -`?new t(v):null;S.reset(R.column-1);const w=S.next(v);return w?_(this._getMultilineMatchRange(C,l,v,b,w.index,w[0]),w,p):R.lineNumber!==1||R.column!==1?this._doFindNextMatchMultiline(C,new i.Position(1,1),S,p):null}static _doFindNextMatchLineByLine(C,R,S,p){const r=C.getLineCount(),l=R.lineNumber,o=C.getLineContent(l),v=this._findFirstMatchInLine(S,o,l,R.column,p);if(v)return v;for(let b=1;b<=r;b++){const w=(l+b-1)%r,A=C.getLineContent(w+1),N=this._findFirstMatchInLine(S,A,w+1,1,p);if(N)return N}return null}static _findFirstMatchInLine(C,R,S,p,r){C.reset(p-1);const l=C.next(R);return l?_(new u.Range(S,l.index+1,S,l.index+1+l[0].length),l,r):null}static findPreviousMatch(C,R,S,p){const r=R.parseSearchRequest();if(!r)return null;const l=new d(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(C,S,l,p):this._doFindPreviousMatchLineByLine(C,S,l,p)}static _doFindPreviousMatchMultiline(C,R,S,p){const r=this._doFindMatchesMultiline(C,new u.Range(1,1,R.lineNumber,R.column),S,p,10*g);if(r.length>0)return r[r.length-1];const l=C.getLineCount();return R.lineNumber!==l||R.column!==C.getLineMaxColumn(l)?this._doFindPreviousMatchMultiline(C,new i.Position(l,C.getLineMaxColumn(l)),S,p):null}static _doFindPreviousMatchLineByLine(C,R,S,p){const r=C.getLineCount(),l=R.lineNumber,o=C.getLineContent(l).substring(0,R.column-1),v=this._findLastMatchInLine(S,o,l,p);if(v)return v;for(let b=1;b<=r;b++){const w=(r+l-b-1)%r,A=C.getLineContent(w+1),N=this._findLastMatchInLine(S,A,w+1,p);if(N)return N}return null}static _findLastMatchInLine(C,R,S,p){let r=null,l;for(C.reset(0);l=C.next(R);)r=_(new u.Range(S,l.index+1,S,l.index+1+l[0].length),l,p);return r}}n.TextModelSearch=m;function h(y,C,R,S,p){if(S===0)return!0;const r=C.charCodeAt(S-1);if(y.get(r)!==0||r===13||r===10)return!0;if(p>0){const l=C.charCodeAt(S);if(y.get(l)!==0)return!0}return!1}function c(y,C,R,S,p){if(S+p===R)return!0;const r=C.charCodeAt(S+p);if(y.get(r)!==0||r===13||r===10)return!0;if(p>0){const l=C.charCodeAt(S+p-1);if(y.get(l)!==0)return!0}return!1}function L(y,C,R,S,p){return h(y,C,R,S,p)&&c(y,C,R,S,p)}n.isValidMatch=L;class d{constructor(C,R){this._wordSeparators=C,this._searchRegex=R,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(C){this._searchRegex.lastIndex=C,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(C){const R=C.length;let S;do{if(this._prevMatchStartIndex+this._prevMatchLength===R||(S=this._searchRegex.exec(C),!S))return null;const p=S.index,r=S[0].length;if(p===this._prevMatchStartIndex&&r===this._prevMatchLength){if(r===0){E.getNextCodePoint(C,R,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=p,this._prevMatchLength=r,!this._wordSeparators||L(this._wordSeparators,C,R,p,r))return S}while(S);return null}}n.Searcher=d}),K(te[52],ie([0,1,2,51,5,9,25]),function(U,n,E,M,i,u,f){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeTextModelHighlighter=void 0;class g{static computeUnicodeHighlights(m,h,c){const L=c?c.startLineNumber:1,d=c?c.endLineNumber:m.getLineCount(),y=new s(h),C=y.getCandidateCodePoints();let R;C==="allNonBasicAscii"?R=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):R=new RegExp(`${a(Array.from(C))}`,"g");const S=new M.Searcher(null,R),p=[];let r=!1,l,o=0,v=0,b=0;e:for(let w=L,A=d;w<=A;w++){const N=m.getLineContent(w),F=N.length;S.reset(0);do if(l=S.next(N),l){let O=l.index,q=l.index+l[0].length;if(O>0){const ae=N.charCodeAt(O-1);i.isHighSurrogate(ae)&&O--}if(q+1=ae){r=!0;break e}p.push(new E.Range(w,O+1,w,q+1))}}while(l)}return{ranges:p,hasMore:r,ambiguousCharacterCount:o,invisibleCharacterCount:v,nonBasicAsciiCharacterCount:b}}static computeUnicodeHighlightReason(m,h){const c=new s(h);switch(c.shouldHighlightNonBasicASCII(m,null)){case 0:return null;case 2:return{kind:1};case 3:{const d=m.codePointAt(0),y=c.ambiguousCharacters.getPrimaryConfusable(d),C=i.AmbiguousCharacters.getLocales().filter(R=>!i.AmbiguousCharacters.getInstance(new Set([...h.allowedLocales,R])).isAmbiguous(d));return{kind:0,confusableWith:String.fromCodePoint(y),notAmbiguousInLocales:C}}case 1:return{kind:2}}}}n.UnicodeTextModelHighlighter=g;function a(t,m){return`[${i.escapeRegExpCharacters(t.map(c=>String.fromCodePoint(c)).join(""))}]`}class s{constructor(m){this.options=m,this.allowedCodePoints=new Set(m.allowedCodePoints),this.ambiguousCharacters=i.AmbiguousCharacters.getInstance(new Set(m.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const m=new Set;if(this.options.invisibleCharacters)for(const h of i.InvisibleCharacters.codePoints)_(String.fromCodePoint(h))||m.add(h);if(this.options.ambiguousCharacters)for(const h of this.ambiguousCharacters.getConfusableCodePoints())m.add(h);for(const h of this.allowedCodePoints)m.delete(h);return m}shouldHighlightNonBasicASCII(m,h){const c=m.codePointAt(0);if(this.allowedCodePoints.has(c))return 0;if(this.options.nonBasicASCII)return 1;let L=!1,d=!1;if(h)for(const y of h){const C=y.codePointAt(0),R=i.isBasicASCII(y);L=L||R,!R&&!this.ambiguousCharacters.isAmbiguous(C)&&!i.InvisibleCharacters.isInvisibleCharacter(C)&&(d=!0)}return!L&&d?0:this.options.invisibleCharacters&&!_(m)&&i.InvisibleCharacters.isInvisibleCharacter(c)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(c)?3:0}}function _(t){return t===" "||t===` -`||t===" "}}),K(te[53],ie([0,1]),function(U,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.WrappingIndent=n.TrackedRangeStickiness=n.TextEditorCursorStyle=n.TextEditorCursorBlinkingStyle=n.SymbolTag=n.SymbolKind=n.SignatureHelpTriggerKind=n.SelectionDirection=n.ScrollbarVisibility=n.ScrollType=n.RenderMinimap=n.RenderLineNumbersType=n.PositionAffinity=n.OverviewRulerLane=n.OverlayWidgetPositionPreference=n.MouseTargetType=n.MinimapPosition=n.MarkerTag=n.MarkerSeverity=n.KeyCode=n.InlineCompletionTriggerKind=n.InlayHintKind=n.InjectedTextCursorStops=n.IndentAction=n.GlyphMarginLane=n.EndOfLineSequence=n.EndOfLinePreference=n.EditorOption=n.EditorAutoIndentStrategy=n.DocumentHighlightKind=n.DefaultEndOfLine=n.CursorChangeReason=n.ContentWidgetPositionPreference=n.CompletionTriggerKind=n.CompletionItemTag=n.CompletionItemKind=n.CompletionItemInsertTextRule=n.CodeActionTriggerType=n.AccessibilitySupport=void 0;var E;(function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"})(E||(n.AccessibilitySupport=E={}));var M;(function(e){e[e.Invoke=1]="Invoke",e[e.Auto=2]="Auto"})(M||(n.CodeActionTriggerType=M={}));var i;(function(e){e[e.None=0]="None",e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"})(i||(n.CompletionItemInsertTextRule=i={}));var u;(function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"})(u||(n.CompletionItemKind=u={}));var f;(function(e){e[e.Deprecated=1]="Deprecated"})(f||(n.CompletionItemTag=f={}));var g;(function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(g||(n.CompletionTriggerKind=g={}));var a;(function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"})(a||(n.ContentWidgetPositionPreference=a={}));var s;(function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"})(s||(n.CursorChangeReason=s={}));var _;(function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"})(_||(n.DefaultEndOfLine=_={}));var t;(function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"})(t||(n.DocumentHighlightKind=t={}));var m;(function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"})(m||(n.EditorAutoIndentStrategy=m={}));var h;(function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.ariaRequired=5]="ariaRequired",e[e.autoClosingBrackets=6]="autoClosingBrackets",e[e.screenReaderAnnounceInlineSuggestion=7]="screenReaderAnnounceInlineSuggestion",e[e.autoClosingDelete=8]="autoClosingDelete",e[e.autoClosingOvertype=9]="autoClosingOvertype",e[e.autoClosingQuotes=10]="autoClosingQuotes",e[e.autoIndent=11]="autoIndent",e[e.automaticLayout=12]="automaticLayout",e[e.autoSurround=13]="autoSurround",e[e.bracketPairColorization=14]="bracketPairColorization",e[e.guides=15]="guides",e[e.codeLens=16]="codeLens",e[e.codeLensFontFamily=17]="codeLensFontFamily",e[e.codeLensFontSize=18]="codeLensFontSize",e[e.colorDecorators=19]="colorDecorators",e[e.colorDecoratorsLimit=20]="colorDecoratorsLimit",e[e.columnSelection=21]="columnSelection",e[e.comments=22]="comments",e[e.contextmenu=23]="contextmenu",e[e.copyWithSyntaxHighlighting=24]="copyWithSyntaxHighlighting",e[e.cursorBlinking=25]="cursorBlinking",e[e.cursorSmoothCaretAnimation=26]="cursorSmoothCaretAnimation",e[e.cursorStyle=27]="cursorStyle",e[e.cursorSurroundingLines=28]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=29]="cursorSurroundingLinesStyle",e[e.cursorWidth=30]="cursorWidth",e[e.disableLayerHinting=31]="disableLayerHinting",e[e.disableMonospaceOptimizations=32]="disableMonospaceOptimizations",e[e.domReadOnly=33]="domReadOnly",e[e.dragAndDrop=34]="dragAndDrop",e[e.dropIntoEditor=35]="dropIntoEditor",e[e.emptySelectionClipboard=36]="emptySelectionClipboard",e[e.experimentalWhitespaceRendering=37]="experimentalWhitespaceRendering",e[e.extraEditorClassName=38]="extraEditorClassName",e[e.fastScrollSensitivity=39]="fastScrollSensitivity",e[e.find=40]="find",e[e.fixedOverflowWidgets=41]="fixedOverflowWidgets",e[e.folding=42]="folding",e[e.foldingStrategy=43]="foldingStrategy",e[e.foldingHighlight=44]="foldingHighlight",e[e.foldingImportsByDefault=45]="foldingImportsByDefault",e[e.foldingMaximumRegions=46]="foldingMaximumRegions",e[e.unfoldOnClickAfterEndOfLine=47]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=48]="fontFamily",e[e.fontInfo=49]="fontInfo",e[e.fontLigatures=50]="fontLigatures",e[e.fontSize=51]="fontSize",e[e.fontWeight=52]="fontWeight",e[e.fontVariations=53]="fontVariations",e[e.formatOnPaste=54]="formatOnPaste",e[e.formatOnType=55]="formatOnType",e[e.glyphMargin=56]="glyphMargin",e[e.gotoLocation=57]="gotoLocation",e[e.hideCursorInOverviewRuler=58]="hideCursorInOverviewRuler",e[e.hover=59]="hover",e[e.inDiffEditor=60]="inDiffEditor",e[e.inlineSuggest=61]="inlineSuggest",e[e.letterSpacing=62]="letterSpacing",e[e.lightbulb=63]="lightbulb",e[e.lineDecorationsWidth=64]="lineDecorationsWidth",e[e.lineHeight=65]="lineHeight",e[e.lineNumbers=66]="lineNumbers",e[e.lineNumbersMinChars=67]="lineNumbersMinChars",e[e.linkedEditing=68]="linkedEditing",e[e.links=69]="links",e[e.matchBrackets=70]="matchBrackets",e[e.minimap=71]="minimap",e[e.mouseStyle=72]="mouseStyle",e[e.mouseWheelScrollSensitivity=73]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=74]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=75]="multiCursorMergeOverlapping",e[e.multiCursorModifier=76]="multiCursorModifier",e[e.multiCursorPaste=77]="multiCursorPaste",e[e.multiCursorLimit=78]="multiCursorLimit",e[e.occurrencesHighlight=79]="occurrencesHighlight",e[e.overviewRulerBorder=80]="overviewRulerBorder",e[e.overviewRulerLanes=81]="overviewRulerLanes",e[e.padding=82]="padding",e[e.pasteAs=83]="pasteAs",e[e.parameterHints=84]="parameterHints",e[e.peekWidgetDefaultFocus=85]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=86]="definitionLinkOpensInPeek",e[e.quickSuggestions=87]="quickSuggestions",e[e.quickSuggestionsDelay=88]="quickSuggestionsDelay",e[e.readOnly=89]="readOnly",e[e.readOnlyMessage=90]="readOnlyMessage",e[e.renameOnType=91]="renameOnType",e[e.renderControlCharacters=92]="renderControlCharacters",e[e.renderFinalNewline=93]="renderFinalNewline",e[e.renderLineHighlight=94]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=95]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=96]="renderValidationDecorations",e[e.renderWhitespace=97]="renderWhitespace",e[e.revealHorizontalRightPadding=98]="revealHorizontalRightPadding",e[e.roundedSelection=99]="roundedSelection",e[e.rulers=100]="rulers",e[e.scrollbar=101]="scrollbar",e[e.scrollBeyondLastColumn=102]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=103]="scrollBeyondLastLine",e[e.scrollPredominantAxis=104]="scrollPredominantAxis",e[e.selectionClipboard=105]="selectionClipboard",e[e.selectionHighlight=106]="selectionHighlight",e[e.selectOnLineNumbers=107]="selectOnLineNumbers",e[e.showFoldingControls=108]="showFoldingControls",e[e.showUnused=109]="showUnused",e[e.snippetSuggestions=110]="snippetSuggestions",e[e.smartSelect=111]="smartSelect",e[e.smoothScrolling=112]="smoothScrolling",e[e.stickyScroll=113]="stickyScroll",e[e.stickyTabStops=114]="stickyTabStops",e[e.stopRenderingLineAfter=115]="stopRenderingLineAfter",e[e.suggest=116]="suggest",e[e.suggestFontSize=117]="suggestFontSize",e[e.suggestLineHeight=118]="suggestLineHeight",e[e.suggestOnTriggerCharacters=119]="suggestOnTriggerCharacters",e[e.suggestSelection=120]="suggestSelection",e[e.tabCompletion=121]="tabCompletion",e[e.tabIndex=122]="tabIndex",e[e.unicodeHighlighting=123]="unicodeHighlighting",e[e.unusualLineTerminators=124]="unusualLineTerminators",e[e.useShadowDOM=125]="useShadowDOM",e[e.useTabStops=126]="useTabStops",e[e.wordBreak=127]="wordBreak",e[e.wordSeparators=128]="wordSeparators",e[e.wordWrap=129]="wordWrap",e[e.wordWrapBreakAfterCharacters=130]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=131]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=132]="wordWrapColumn",e[e.wordWrapOverride1=133]="wordWrapOverride1",e[e.wordWrapOverride2=134]="wordWrapOverride2",e[e.wrappingIndent=135]="wrappingIndent",e[e.wrappingStrategy=136]="wrappingStrategy",e[e.showDeprecated=137]="showDeprecated",e[e.inlayHints=138]="inlayHints",e[e.editorClassName=139]="editorClassName",e[e.pixelRatio=140]="pixelRatio",e[e.tabFocusMode=141]="tabFocusMode",e[e.layoutInfo=142]="layoutInfo",e[e.wrappingInfo=143]="wrappingInfo",e[e.defaultColorDecorators=144]="defaultColorDecorators",e[e.colorDecoratorsActivatedOn=145]="colorDecoratorsActivatedOn",e[e.inlineCompletionsAccessibilityVerbose=146]="inlineCompletionsAccessibilityVerbose"})(h||(n.EditorOption=h={}));var c;(function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"})(c||(n.EndOfLinePreference=c={}));var L;(function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"})(L||(n.EndOfLineSequence=L={}));var d;(function(e){e[e.Left=1]="Left",e[e.Right=2]="Right"})(d||(n.GlyphMarginLane=d={}));var y;(function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"})(y||(n.IndentAction=y={}));var C;(function(e){e[e.Both=0]="Both",e[e.Right=1]="Right",e[e.Left=2]="Left",e[e.None=3]="None"})(C||(n.InjectedTextCursorStops=C={}));var R;(function(e){e[e.Type=1]="Type",e[e.Parameter=2]="Parameter"})(R||(n.InlayHintKind=R={}));var S;(function(e){e[e.Automatic=0]="Automatic",e[e.Explicit=1]="Explicit"})(S||(n.InlineCompletionTriggerKind=S={}));var p;(function(e){e[e.DependsOnKbLayout=-1]="DependsOnKbLayout",e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.Digit0=21]="Digit0",e[e.Digit1=22]="Digit1",e[e.Digit2=23]="Digit2",e[e.Digit3=24]="Digit3",e[e.Digit4=25]="Digit4",e[e.Digit5=26]="Digit5",e[e.Digit6=27]="Digit6",e[e.Digit7=28]="Digit7",e[e.Digit8=29]="Digit8",e[e.Digit9=30]="Digit9",e[e.KeyA=31]="KeyA",e[e.KeyB=32]="KeyB",e[e.KeyC=33]="KeyC",e[e.KeyD=34]="KeyD",e[e.KeyE=35]="KeyE",e[e.KeyF=36]="KeyF",e[e.KeyG=37]="KeyG",e[e.KeyH=38]="KeyH",e[e.KeyI=39]="KeyI",e[e.KeyJ=40]="KeyJ",e[e.KeyK=41]="KeyK",e[e.KeyL=42]="KeyL",e[e.KeyM=43]="KeyM",e[e.KeyN=44]="KeyN",e[e.KeyO=45]="KeyO",e[e.KeyP=46]="KeyP",e[e.KeyQ=47]="KeyQ",e[e.KeyR=48]="KeyR",e[e.KeyS=49]="KeyS",e[e.KeyT=50]="KeyT",e[e.KeyU=51]="KeyU",e[e.KeyV=52]="KeyV",e[e.KeyW=53]="KeyW",e[e.KeyX=54]="KeyX",e[e.KeyY=55]="KeyY",e[e.KeyZ=56]="KeyZ",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.F20=78]="F20",e[e.F21=79]="F21",e[e.F22=80]="F22",e[e.F23=81]="F23",e[e.F24=82]="F24",e[e.NumLock=83]="NumLock",e[e.ScrollLock=84]="ScrollLock",e[e.Semicolon=85]="Semicolon",e[e.Equal=86]="Equal",e[e.Comma=87]="Comma",e[e.Minus=88]="Minus",e[e.Period=89]="Period",e[e.Slash=90]="Slash",e[e.Backquote=91]="Backquote",e[e.BracketLeft=92]="BracketLeft",e[e.Backslash=93]="Backslash",e[e.BracketRight=94]="BracketRight",e[e.Quote=95]="Quote",e[e.OEM_8=96]="OEM_8",e[e.IntlBackslash=97]="IntlBackslash",e[e.Numpad0=98]="Numpad0",e[e.Numpad1=99]="Numpad1",e[e.Numpad2=100]="Numpad2",e[e.Numpad3=101]="Numpad3",e[e.Numpad4=102]="Numpad4",e[e.Numpad5=103]="Numpad5",e[e.Numpad6=104]="Numpad6",e[e.Numpad7=105]="Numpad7",e[e.Numpad8=106]="Numpad8",e[e.Numpad9=107]="Numpad9",e[e.NumpadMultiply=108]="NumpadMultiply",e[e.NumpadAdd=109]="NumpadAdd",e[e.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",e[e.NumpadSubtract=111]="NumpadSubtract",e[e.NumpadDecimal=112]="NumpadDecimal",e[e.NumpadDivide=113]="NumpadDivide",e[e.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",e[e.ABNT_C1=115]="ABNT_C1",e[e.ABNT_C2=116]="ABNT_C2",e[e.AudioVolumeMute=117]="AudioVolumeMute",e[e.AudioVolumeUp=118]="AudioVolumeUp",e[e.AudioVolumeDown=119]="AudioVolumeDown",e[e.BrowserSearch=120]="BrowserSearch",e[e.BrowserHome=121]="BrowserHome",e[e.BrowserBack=122]="BrowserBack",e[e.BrowserForward=123]="BrowserForward",e[e.MediaTrackNext=124]="MediaTrackNext",e[e.MediaTrackPrevious=125]="MediaTrackPrevious",e[e.MediaStop=126]="MediaStop",e[e.MediaPlayPause=127]="MediaPlayPause",e[e.LaunchMediaPlayer=128]="LaunchMediaPlayer",e[e.LaunchMail=129]="LaunchMail",e[e.LaunchApp2=130]="LaunchApp2",e[e.Clear=131]="Clear",e[e.MAX_VALUE=132]="MAX_VALUE"})(p||(n.KeyCode=p={}));var r;(function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"})(r||(n.MarkerSeverity=r={}));var l;(function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"})(l||(n.MarkerTag=l={}));var o;(function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"})(o||(n.MinimapPosition=o={}));var v;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(v||(n.MouseTargetType=v={}));var b;(function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"})(b||(n.OverlayWidgetPositionPreference=b={}));var w;(function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"})(w||(n.OverviewRulerLane=w={}));var A;(function(e){e[e.Left=0]="Left",e[e.Right=1]="Right",e[e.None=2]="None",e[e.LeftOfInjectedText=3]="LeftOfInjectedText",e[e.RightOfInjectedText=4]="RightOfInjectedText"})(A||(n.PositionAffinity=A={}));var N;(function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"})(N||(n.RenderLineNumbersType=N={}));var F;(function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"})(F||(n.RenderMinimap=F={}));var O;(function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"})(O||(n.ScrollType=O={}));var q;(function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"})(q||(n.ScrollbarVisibility=q={}));var T;(function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"})(T||(n.SelectionDirection=T={}));var W;(function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"})(W||(n.SignatureHelpTriggerKind=W={}));var G;(function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"})(G||(n.SymbolKind=G={}));var ae;(function(e){e[e.Deprecated=1]="Deprecated"})(ae||(n.SymbolTag=ae={}));var re;(function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"})(re||(n.TextEditorCursorBlinkingStyle=re={}));var ne;(function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"})(ne||(n.TextEditorCursorStyle=ne={}));var fe;(function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(fe||(n.TrackedRangeStickiness=fe={}));var $;(function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"})($||(n.WrappingIndent=$={}))}),K(te[54],ie([0,1,7,10]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TokenizationRegistry=void 0;class i{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new E.Emitter,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(g){this._onDidChange.fire({changedLanguages:g,changedColorMap:!1})}register(g,a){return this._tokenizationSupports.set(g,a),this.handleChange([g]),(0,M.toDisposable)(()=>{this._tokenizationSupports.get(g)===a&&(this._tokenizationSupports.delete(g),this.handleChange([g]))})}get(g){return this._tokenizationSupports.get(g)||null}registerFactory(g,a){var s;(s=this._factories.get(g))===null||s===void 0||s.dispose();const _=new u(this,g,a);return this._factories.set(g,_),(0,M.toDisposable)(()=>{const t=this._factories.get(g);!t||t!==_||(this._factories.delete(g),t.dispose())})}getOrCreate(g){return pe(this,void 0,void 0,function*(){const a=this.get(g);if(a)return a;const s=this._factories.get(g);return!s||s.isResolved?null:(yield s.resolve(),this.get(g))})}isResolved(g){if(this.get(g))return!0;const s=this._factories.get(g);return!!(!s||s.isResolved)}setColorMap(g){this._colorMap=g,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}n.TokenizationRegistry=i;class u extends M.Disposable{get isResolved(){return this._isResolved}constructor(g,a,s){super(),this._registry=g,this._languageId=a,this._factory=s,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}resolve(){return pe(this,void 0,void 0,function*(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise})}_create(){return pe(this,void 0,void 0,function*(){const g=yield this._factory.tokenizationSupport;this._isResolved=!0,g&&!this._isDisposed&&this._register(this._registry.register(this._languageId,g))})}}}),K(te[55],ie([15,56]),function(U,n){return U.create("vs/base/common/platform",n)}),K(te[13],ie([0,1,55]),function(U,n,E){"use strict";var M;Object.defineProperty(n,"__esModule",{value:!0}),n.isAndroid=n.isEdge=n.isSafari=n.isFirefox=n.isChrome=n.isLittleEndian=n.OS=n.setTimeout0=n.setTimeout0IsFaster=n.language=n.userAgent=n.isMobile=n.isIOS=n.isWebWorker=n.isWeb=n.isNative=n.isLinux=n.isMacintosh=n.isWindows=n.globals=n.LANGUAGE_DEFAULT=void 0,n.LANGUAGE_DEFAULT="en";let i=!1,u=!1,f=!1,g=!1,a=!1,s=!1,_=!1,t=!1,m=!1,h=!1,c,L=n.LANGUAGE_DEFAULT,d=n.LANGUAGE_DEFAULT,y,C;n.globals=typeof self=="object"?self:typeof global=="object"?global:{};let R;typeof n.globals.vscode<"u"&&typeof n.globals.vscode.process<"u"?R=n.globals.vscode.process:typeof process<"u"&&(R=process);const S=typeof((M=R?.versions)===null||M===void 0?void 0:M.electron)=="string",p=S&&R?.type==="renderer";if(typeof navigator=="object"&&!p)C=navigator.userAgent,i=C.indexOf("Windows")>=0,u=C.indexOf("Macintosh")>=0,t=(C.indexOf("Macintosh")>=0||C.indexOf("iPad")>=0||C.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,f=C.indexOf("Linux")>=0,h=C?.indexOf("Mobi")>=0,s=!0,c=E.getConfiguredDefaultLocale(E.localize(0,null))||n.LANGUAGE_DEFAULT,L=c,d=navigator.language;else if(typeof R=="object"){i=R.platform==="win32",u=R.platform==="darwin",f=R.platform==="linux",g=f&&!!R.env.SNAP&&!!R.env.SNAP_REVISION,_=S,m=!!R.env.CI||!!R.env.BUILD_ARTIFACTSTAGINGDIRECTORY,c=n.LANGUAGE_DEFAULT,L=n.LANGUAGE_DEFAULT;const b=R.env.VSCODE_NLS_CONFIG;if(b)try{const w=JSON.parse(b),A=w.availableLanguages["*"];c=w.locale,d=w.osLocale,L=A||n.LANGUAGE_DEFAULT,y=w._translationsConfigFile}catch{}a=!0}else console.error("Unable to resolve platform.");let r=0;u?r=1:i?r=3:f&&(r=2),n.isWindows=i,n.isMacintosh=u,n.isLinux=f,n.isNative=a,n.isWeb=s,n.isWebWorker=s&&typeof n.globals.importScripts=="function",n.isIOS=t,n.isMobile=h,n.userAgent=C,n.language=L,n.setTimeout0IsFaster=typeof n.globals.postMessage=="function"&&!n.globals.importScripts,n.setTimeout0=(()=>{if(n.setTimeout0IsFaster){const b=[];n.globals.addEventListener("message",A=>{if(A.data&&A.data.vscodeScheduleAsyncWork)for(let N=0,F=b.length;N{const N=++w;b.push({id:N,callback:A}),n.globals.postMessage({vscodeScheduleAsyncWork:N},"*")}}return b=>setTimeout(b)})(),n.OS=u||t?2:i?1:3;let l=!0,o=!1;function v(){if(!o){o=!0;const b=new Uint8Array(2);b[0]=1,b[1]=2,l=new Uint16Array(b.buffer)[0]===(2<<8)+1}return l}n.isLittleEndian=v,n.isChrome=!!(n.userAgent&&n.userAgent.indexOf("Chrome")>=0),n.isFirefox=!!(n.userAgent&&n.userAgent.indexOf("Firefox")>=0),n.isSafari=!!(!n.isChrome&&n.userAgent&&n.userAgent.indexOf("Safari")>=0),n.isEdge=!!(n.userAgent&&n.userAgent.indexOf("Edg/")>=0),n.isAndroid=!!(n.userAgent&&n.userAgent.indexOf("Android")>=0)}),K(te[57],ie([0,1,13]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.platform=n.env=n.cwd=void 0;let M;if(typeof E.globals.vscode<"u"&&typeof E.globals.vscode.process<"u"){const i=E.globals.vscode.process;M={get platform(){return i.platform},get arch(){return i.arch},get env(){return i.env},cwd(){return i.cwd()}}}else typeof process<"u"?M={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:M={get platform(){return E.isWindows?"win32":E.isMacintosh?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};n.cwd=M.cwd,n.env=M.env,n.platform=M.platform}),K(te[58],ie([0,1,57]),function(U,n,E){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.sep=n.extname=n.basename=n.dirname=n.relative=n.resolve=n.normalize=n.posix=n.win32=void 0;const M=65,i=97,u=90,f=122,g=46,a=47,s=92,_=58,t=63;class m extends Error{constructor(l,o,v){let b;typeof o=="string"&&o.indexOf("not ")===0?(b="must not be",o=o.replace(/^not /,"")):b="must be";const w=l.indexOf(".")!==-1?"property":"argument";let A=`The "${l}" ${w} ${b} of type ${o}`;A+=`. Received type ${typeof v}`,super(A),this.code="ERR_INVALID_ARG_TYPE"}}function h(r,l){if(r===null||typeof r!="object")throw new m(l,"Object",r)}function c(r,l){if(typeof r!="string")throw new m(l,"string",r)}const L=E.platform==="win32";function d(r){return r===a||r===s}function y(r){return r===a}function C(r){return r>=M&&r<=u||r>=i&&r<=f}function R(r,l,o,v){let b="",w=0,A=-1,N=0,F=0;for(let O=0;O<=r.length;++O){if(O2){const q=b.lastIndexOf(o);q===-1?(b="",w=0):(b=b.slice(0,q),w=b.length-1-b.lastIndexOf(o)),A=O,N=0;continue}else if(b.length!==0){b="",w=0,A=O,N=0;continue}}l&&(b+=b.length>0?`${o}..`:"..",w=2)}else b.length>0?b+=`${o}${r.slice(A+1,O)}`:b=r.slice(A+1,O),w=O-A-1;A=O,N=0}else F===g&&N!==-1?++N:N=-1}return b}function S(r,l){h(l,"pathObject");const o=l.dir||l.root,v=l.base||`${l.name||""}${l.ext||""}`;return o?o===l.root?`${o}${v}`:`${o}${r}${v}`:v}n.win32={resolve(...r){let l="",o="",v=!1;for(let b=r.length-1;b>=-1;b--){let w;if(b>=0){if(w=r[b],c(w,"path"),w.length===0)continue}else l.length===0?w=E.cwd():(w=E.env[`=${l}`]||E.cwd(),(w===void 0||w.slice(0,2).toLowerCase()!==l.toLowerCase()&&w.charCodeAt(2)===s)&&(w=`${l}\\`));const A=w.length;let N=0,F="",O=!1;const q=w.charCodeAt(0);if(A===1)d(q)&&(N=1,O=!0);else if(d(q))if(O=!0,d(w.charCodeAt(1))){let T=2,W=T;for(;T2&&d(w.charCodeAt(2))&&(O=!0,N=3));if(F.length>0)if(l.length>0){if(F.toLowerCase()!==l.toLowerCase())continue}else l=F;if(v){if(l.length>0)break}else if(o=`${w.slice(N)}\\${o}`,v=O,O&&l.length>0)break}return o=R(o,!v,"\\",d),v?`${l}\\${o}`:`${l}${o}`||"."},normalize(r){c(r,"path");const l=r.length;if(l===0)return".";let o=0,v,b=!1;const w=r.charCodeAt(0);if(l===1)return y(w)?"\\":r;if(d(w))if(b=!0,d(r.charCodeAt(1))){let N=2,F=N;for(;N2&&d(r.charCodeAt(2))&&(b=!0,o=3));let A=o0&&d(r.charCodeAt(l-1))&&(A+="\\"),v===void 0?b?`\\${A}`:A:b?`${v}\\${A}`:`${v}${A}`},isAbsolute(r){c(r,"path");const l=r.length;if(l===0)return!1;const o=r.charCodeAt(0);return d(o)||l>2&&C(o)&&r.charCodeAt(1)===_&&d(r.charCodeAt(2))},join(...r){if(r.length===0)return".";let l,o;for(let w=0;w0&&(l===void 0?l=o=A:l+=`\\${A}`)}if(l===void 0)return".";let v=!0,b=0;if(typeof o=="string"&&d(o.charCodeAt(0))){++b;const w=o.length;w>1&&d(o.charCodeAt(1))&&(++b,w>2&&(d(o.charCodeAt(2))?++b:v=!1))}if(v){for(;b=2&&(l=`\\${l.slice(b)}`)}return n.win32.normalize(l)},relative(r,l){if(c(r,"from"),c(l,"to"),r===l)return"";const o=n.win32.resolve(r),v=n.win32.resolve(l);if(o===v||(r=o.toLowerCase(),l=v.toLowerCase(),r===l))return"";let b=0;for(;bb&&r.charCodeAt(w-1)===s;)w--;const A=w-b;let N=0;for(;NN&&l.charCodeAt(F-1)===s;)F--;const O=F-N,q=Aq){if(l.charCodeAt(N+W)===s)return v.slice(N+W+1);if(W===2)return v.slice(N+W)}A>q&&(r.charCodeAt(b+W)===s?T=W:W===2&&(T=3)),T===-1&&(T=0)}let G="";for(W=b+T+1;W<=w;++W)(W===w||r.charCodeAt(W)===s)&&(G+=G.length===0?"..":"\\..");return N+=T,G.length>0?`${G}${v.slice(N,F)}`:(v.charCodeAt(N)===s&&++N,v.slice(N,F))},toNamespacedPath(r){if(typeof r!="string"||r.length===0)return r;const l=n.win32.resolve(r);if(l.length<=2)return r;if(l.charCodeAt(0)===s){if(l.charCodeAt(1)===s){const o=l.charCodeAt(2);if(o!==t&&o!==g)return`\\\\?\\UNC\\${l.slice(2)}`}}else if(C(l.charCodeAt(0))&&l.charCodeAt(1)===_&&l.charCodeAt(2)===s)return`\\\\?\\${l}`;return r},dirname(r){c(r,"path");const l=r.length;if(l===0)return".";let o=-1,v=0;const b=r.charCodeAt(0);if(l===1)return d(b)?r:".";if(d(b)){if(o=v=1,d(r.charCodeAt(1))){let N=2,F=N;for(;N2&&d(r.charCodeAt(2))?3:2,v=o);let w=-1,A=!0;for(let N=l-1;N>=v;--N)if(d(r.charCodeAt(N))){if(!A){w=N;break}}else A=!1;if(w===-1){if(o===-1)return".";w=o}return r.slice(0,w)},basename(r,l){l!==void 0&&c(l,"ext"),c(r,"path");let o=0,v=-1,b=!0,w;if(r.length>=2&&C(r.charCodeAt(0))&&r.charCodeAt(1)===_&&(o=2),l!==void 0&&l.length>0&&l.length<=r.length){if(l===r)return"";let A=l.length-1,N=-1;for(w=r.length-1;w>=o;--w){const F=r.charCodeAt(w);if(d(F)){if(!b){o=w+1;break}}else N===-1&&(b=!1,N=w+1),A>=0&&(F===l.charCodeAt(A)?--A===-1&&(v=w):(A=-1,v=N))}return o===v?v=N:v===-1&&(v=r.length),r.slice(o,v)}for(w=r.length-1;w>=o;--w)if(d(r.charCodeAt(w))){if(!b){o=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?"":r.slice(o,v)},extname(r){c(r,"path");let l=0,o=-1,v=0,b=-1,w=!0,A=0;r.length>=2&&r.charCodeAt(1)===_&&C(r.charCodeAt(0))&&(l=v=2);for(let N=r.length-1;N>=l;--N){const F=r.charCodeAt(N);if(d(F)){if(!w){v=N+1;break}continue}b===-1&&(w=!1,b=N+1),F===g?o===-1?o=N:A!==1&&(A=1):o!==-1&&(A=-1)}return o===-1||b===-1||A===0||A===1&&o===b-1&&o===v+1?"":r.slice(o,b)},format:S.bind(null,"\\"),parse(r){c(r,"path");const l={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return l;const o=r.length;let v=0,b=r.charCodeAt(0);if(o===1)return d(b)?(l.root=l.dir=r,l):(l.base=l.name=r,l);if(d(b)){if(v=1,d(r.charCodeAt(1))){let T=2,W=T;for(;T0&&(l.root=r.slice(0,v));let w=-1,A=v,N=-1,F=!0,O=r.length-1,q=0;for(;O>=v;--O){if(b=r.charCodeAt(O),d(b)){if(!F){A=O+1;break}continue}N===-1&&(F=!1,N=O+1),b===g?w===-1?w=O:q!==1&&(q=1):w!==-1&&(q=-1)}return N!==-1&&(w===-1||q===0||q===1&&w===N-1&&w===A+1?l.base=l.name=r.slice(A,N):(l.name=r.slice(A,w),l.base=r.slice(A,N),l.ext=r.slice(w,N))),A>0&&A!==v?l.dir=r.slice(0,A-1):l.dir=l.root,l},sep:"\\",delimiter:";",win32:null,posix:null};const p=(()=>{if(L){const r=/\\/g;return()=>{const l=E.cwd().replace(r,"/");return l.slice(l.indexOf("/"))}}return()=>E.cwd()})();n.posix={resolve(...r){let l="",o=!1;for(let v=r.length-1;v>=-1&&!o;v--){const b=v>=0?r[v]:p();c(b,"path"),b.length!==0&&(l=`${b}/${l}`,o=b.charCodeAt(0)===a)}return l=R(l,!o,"/",y),o?`/${l}`:l.length>0?l:"."},normalize(r){if(c(r,"path"),r.length===0)return".";const l=r.charCodeAt(0)===a,o=r.charCodeAt(r.length-1)===a;return r=R(r,!l,"/",y),r.length===0?l?"/":o?"./":".":(o&&(r+="/"),l?`/${r}`:r)},isAbsolute(r){return c(r,"path"),r.length>0&&r.charCodeAt(0)===a},join(...r){if(r.length===0)return".";let l;for(let o=0;o0&&(l===void 0?l=v:l+=`/${v}`)}return l===void 0?".":n.posix.normalize(l)},relative(r,l){if(c(r,"from"),c(l,"to"),r===l||(r=n.posix.resolve(r),l=n.posix.resolve(l),r===l))return"";const o=1,v=r.length,b=v-o,w=1,A=l.length-w,N=bN){if(l.charCodeAt(w+O)===a)return l.slice(w+O+1);if(O===0)return l.slice(w+O)}else b>N&&(r.charCodeAt(o+O)===a?F=O:O===0&&(F=0));let q="";for(O=o+F+1;O<=v;++O)(O===v||r.charCodeAt(O)===a)&&(q+=q.length===0?"..":"/..");return`${q}${l.slice(w+F)}`},toNamespacedPath(r){return r},dirname(r){if(c(r,"path"),r.length===0)return".";const l=r.charCodeAt(0)===a;let o=-1,v=!0;for(let b=r.length-1;b>=1;--b)if(r.charCodeAt(b)===a){if(!v){o=b;break}}else v=!1;return o===-1?l?"/":".":l&&o===1?"//":r.slice(0,o)},basename(r,l){l!==void 0&&c(l,"ext"),c(r,"path");let o=0,v=-1,b=!0,w;if(l!==void 0&&l.length>0&&l.length<=r.length){if(l===r)return"";let A=l.length-1,N=-1;for(w=r.length-1;w>=0;--w){const F=r.charCodeAt(w);if(F===a){if(!b){o=w+1;break}}else N===-1&&(b=!1,N=w+1),A>=0&&(F===l.charCodeAt(A)?--A===-1&&(v=w):(A=-1,v=N))}return o===v?v=N:v===-1&&(v=r.length),r.slice(o,v)}for(w=r.length-1;w>=0;--w)if(r.charCodeAt(w)===a){if(!b){o=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?"":r.slice(o,v)},extname(r){c(r,"path");let l=-1,o=0,v=-1,b=!0,w=0;for(let A=r.length-1;A>=0;--A){const N=r.charCodeAt(A);if(N===a){if(!b){o=A+1;break}continue}v===-1&&(b=!1,v=A+1),N===g?l===-1?l=A:w!==1&&(w=1):l!==-1&&(w=-1)}return l===-1||v===-1||w===0||w===1&&l===v-1&&l===o+1?"":r.slice(l,v)},format:S.bind(null,"/"),parse(r){c(r,"path");const l={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return l;const o=r.charCodeAt(0)===a;let v;o?(l.root="/",v=1):v=0;let b=-1,w=0,A=-1,N=!0,F=r.length-1,O=0;for(;F>=v;--F){const q=r.charCodeAt(F);if(q===a){if(!N){w=F+1;break}continue}A===-1&&(N=!1,A=F+1),q===g?b===-1?b=F:O!==1&&(O=1):b!==-1&&(O=-1)}if(A!==-1){const q=w===0&&o?1:w;b===-1||O===0||O===1&&b===A-1&&b===w+1?l.base=l.name=r.slice(q,A):(l.name=r.slice(q,b),l.base=r.slice(q,A),l.ext=r.slice(b,A))}return w>0?l.dir=r.slice(0,w-1):o&&(l.dir="/"),l},sep:"/",delimiter:":",win32:null,posix:null},n.posix.win32=n.win32.win32=n.win32,n.posix.posix=n.win32.posix=n.posix,n.normalize=L?n.win32.normalize:n.posix.normalize,n.resolve=L?n.win32.resolve:n.posix.resolve,n.relative=L?n.win32.relative:n.posix.relative,n.dirname=L?n.win32.dirname:n.posix.dirname,n.basename=L?n.win32.basename:n.posix.basename,n.extname=L?n.win32.extname:n.posix.extname,n.sep=L?n.win32.sep:n.posix.sep}),K(te[14],ie([0,1,58,13]),function(U,n,E,M){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.uriToFsPath=n.URI=void 0;const i=/^\w[\w\d+.-]*$/,u=/^\//,f=/^\/\//;function g(o,v){if(!o.scheme&&v)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${o.authority}", path: "${o.path}", query: "${o.query}", fragment: "${o.fragment}"}`);if(o.scheme&&!i.test(o.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(o.path){if(o.authority){if(!u.test(o.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(f.test(o.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function a(o,v){return!o&&!v?"file":o}function s(o,v){switch(o){case"https":case"http":case"file":v?v[0]!==t&&(v=t+v):v=t;break}return v}const _="",t="/",m=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class h{static isUri(v){return v instanceof h?!0:v?typeof v.authority=="string"&&typeof v.fragment=="string"&&typeof v.path=="string"&&typeof v.query=="string"&&typeof v.scheme=="string"&&typeof v.fsPath=="string"&&typeof v.with=="function"&&typeof v.toString=="function":!1}constructor(v,b,w,A,N,F=!1){typeof v=="object"?(this.scheme=v.scheme||_,this.authority=v.authority||_,this.path=v.path||_,this.query=v.query||_,this.fragment=v.fragment||_):(this.scheme=a(v,F),this.authority=b||_,this.path=s(this.scheme,w||_),this.query=A||_,this.fragment=N||_,g(this,F))}get fsPath(){return R(this,!1)}with(v){if(!v)return this;let{scheme:b,authority:w,path:A,query:N,fragment:F}=v;return b===void 0?b=this.scheme:b===null&&(b=_),w===void 0?w=this.authority:w===null&&(w=_),A===void 0?A=this.path:A===null&&(A=_),N===void 0?N=this.query:N===null&&(N=_),F===void 0?F=this.fragment:F===null&&(F=_),b===this.scheme&&w===this.authority&&A===this.path&&N===this.query&&F===this.fragment?this:new L(b,w,A,N,F)}static parse(v,b=!1){const w=m.exec(v);return w?new L(w[2]||_,l(w[4]||_),l(w[5]||_),l(w[7]||_),l(w[9]||_),b):new L(_,_,_,_,_)}static file(v){let b=_;if(M.isWindows&&(v=v.replace(/\\/g,t)),v[0]===t&&v[1]===t){const w=v.indexOf(t,2);w===-1?(b=v.substring(2),v=t):(b=v.substring(2,w),v=v.substring(w)||t)}return new L("file",b,v,_,_)}static from(v,b){return new L(v.scheme,v.authority,v.path,v.query,v.fragment,b)}static joinPath(v,...b){if(!v.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let w;return M.isWindows&&v.scheme==="file"?w=h.file(E.win32.join(R(v,!0),...b)).path:w=E.posix.join(v.path,...b),v.with({path:w})}toString(v=!1){return S(this,v)}toJSON(){return this}static revive(v){var b,w;if(v){if(v instanceof h)return v;{const A=new L(v);return A._formatted=(b=v.external)!==null&&b!==void 0?b:null,A._fsPath=v._sep===c&&(w=v.fsPath)!==null&&w!==void 0?w:null,A}}else return v}}n.URI=h;const c=M.isWindows?1:void 0;class L extends h{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=R(this,!1)),this._fsPath}toString(v=!1){return v?S(this,!0):(this._formatted||(this._formatted=S(this,!1)),this._formatted)}toJSON(){const v={$mid:1};return this._fsPath&&(v.fsPath=this._fsPath,v._sep=c),this._formatted&&(v.external=this._formatted),this.path&&(v.path=this.path),this.scheme&&(v.scheme=this.scheme),this.authority&&(v.authority=this.authority),this.query&&(v.query=this.query),this.fragment&&(v.fragment=this.fragment),v}}const d={[58]:"%3A",[47]:"%2F",[63]:"%3F",[35]:"%23",[91]:"%5B",[93]:"%5D",[64]:"%40",[33]:"%21",[36]:"%24",[38]:"%26",[39]:"%27",[40]:"%28",[41]:"%29",[42]:"%2A",[43]:"%2B",[44]:"%2C",[59]:"%3B",[61]:"%3D",[32]:"%20"};function y(o,v,b){let w,A=-1;for(let N=0;N=97&&F<=122||F>=65&&F<=90||F>=48&&F<=57||F===45||F===46||F===95||F===126||v&&F===47||b&&F===91||b&&F===93||b&&F===58)A!==-1&&(w+=encodeURIComponent(o.substring(A,N)),A=-1),w!==void 0&&(w+=o.charAt(N));else{w===void 0&&(w=o.substr(0,N));const O=d[F];O!==void 0?(A!==-1&&(w+=encodeURIComponent(o.substring(A,N)),A=-1),w+=O):A===-1&&(A=N)}}return A!==-1&&(w+=encodeURIComponent(o.substring(A))),w!==void 0?w:o}function C(o){let v;for(let b=0;b1&&o.scheme==="file"?b=`//${o.authority}${o.path}`:o.path.charCodeAt(0)===47&&(o.path.charCodeAt(1)>=65&&o.path.charCodeAt(1)<=90||o.path.charCodeAt(1)>=97&&o.path.charCodeAt(1)<=122)&&o.path.charCodeAt(2)===58?v?b=o.path.substr(1):b=o.path[1].toLowerCase()+o.path.substr(2):b=o.path,M.isWindows&&(b=b.replace(/\//g,"\\")),b}n.uriToFsPath=R;function S(o,v){const b=v?C:y;let w="",{scheme:A,authority:N,path:F,query:O,fragment:q}=o;if(A&&(w+=A,w+=":"),(N||A==="file")&&(w+=t,w+=t),N){let T=N.indexOf("@");if(T!==-1){const W=N.substr(0,T);N=N.substr(T+1),T=W.lastIndexOf(":"),T===-1?w+=b(W,!1,!1):(w+=b(W.substr(0,T),!1,!1),w+=":",w+=b(W.substr(T+1),!1,!0)),w+="@"}N=N.toLowerCase(),T=N.lastIndexOf(":"),T===-1?w+=b(N,!1,!0):(w+=b(N.substr(0,T),!1,!0),w+=N.substr(T))}if(F){if(F.length>=3&&F.charCodeAt(0)===47&&F.charCodeAt(2)===58){const T=F.charCodeAt(1);T>=65&&T<=90&&(F=`/${String.fromCharCode(T+32)}:${F.substr(3)}`)}else if(F.length>=2&&F.charCodeAt(1)===58){const T=F.charCodeAt(0);T>=65&&T<=90&&(F=`${String.fromCharCode(T+32)}:${F.substr(2)}`)}w+=b(F,!0,!1)}return O&&(w+="?",w+=b(O,!1,!1)),q&&(w+="#",w+=v?q:y(q,!1,!1)),w}function p(o){try{return decodeURIComponent(o)}catch{return o.length>3?o.substr(0,3)+p(o.substr(3)):o}}const r=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function l(o){return o.match(r)?o.replace(r,v=>p(v)):o}}),K(te[62],ie([0,1,3,7,10,11,13,5]),function(U,n,E,M,i,u,f,g){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.create=n.SimpleWorkerServer=n.SimpleWorkerClient=n.logOnceWebWorkerWarning=void 0;const a="$initialize";let s=!1;function _(l){f.isWeb&&(s||(s=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(l.message))}n.logOnceWebWorkerWarning=_;class t{constructor(o,v,b,w){this.vsWorker=o,this.req=v,this.method=b,this.args=w,this.type=0}}class m{constructor(o,v,b,w){this.vsWorker=o,this.seq=v,this.res=b,this.err=w,this.type=1}}class h{constructor(o,v,b,w){this.vsWorker=o,this.req=v,this.eventName=b,this.arg=w,this.type=2}}class c{constructor(o,v,b){this.vsWorker=o,this.req=v,this.event=b,this.type=3}}class L{constructor(o,v){this.vsWorker=o,this.req=v,this.type=4}}class d{constructor(o){this._workerId=-1,this._handler=o,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(o){this._workerId=o}sendMessage(o,v){const b=String(++this._lastSentReq);return new Promise((w,A)=>{this._pendingReplies[b]={resolve:w,reject:A},this._send(new t(this._workerId,b,o,v))})}listen(o,v){let b=null;const w=new M.Emitter({onWillAddFirstListener:()=>{b=String(++this._lastSentReq),this._pendingEmitters.set(b,w),this._send(new h(this._workerId,b,o,v))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(b),this._send(new L(this._workerId,b)),b=null}});return w.event}handleMessage(o){!o||!o.vsWorker||this._workerId!==-1&&o.vsWorker!==this._workerId||this._handleMessage(o)}_handleMessage(o){switch(o.type){case 1:return this._handleReplyMessage(o);case 0:return this._handleRequestMessage(o);case 2:return this._handleSubscribeEventMessage(o);case 3:return this._handleEventMessage(o);case 4:return this._handleUnsubscribeEventMessage(o)}}_handleReplyMessage(o){if(!this._pendingReplies[o.seq]){console.warn("Got reply to unknown seq");return}const v=this._pendingReplies[o.seq];if(delete this._pendingReplies[o.seq],o.err){let b=o.err;o.err.$isError&&(b=new Error,b.name=o.err.name,b.message=o.err.message,b.stack=o.err.stack),v.reject(b);return}v.resolve(o.res)}_handleRequestMessage(o){const v=o.req;this._handler.handleMessage(o.method,o.args).then(w=>{this._send(new m(this._workerId,v,w,void 0))},w=>{w.detail instanceof Error&&(w.detail=(0,E.transformErrorForSerialization)(w.detail)),this._send(new m(this._workerId,v,void 0,(0,E.transformErrorForSerialization)(w)))})}_handleSubscribeEventMessage(o){const v=o.req,b=this._handler.handleEvent(o.eventName,o.arg)(w=>{this._send(new c(this._workerId,v,w))});this._pendingEvents.set(v,b)}_handleEventMessage(o){if(!this._pendingEmitters.has(o.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(o.req).fire(o.event)}_handleUnsubscribeEventMessage(o){if(!this._pendingEvents.has(o.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(o.req).dispose(),this._pendingEvents.delete(o.req)}_send(o){const v=[];if(o.type===0)for(let b=0;b{this._protocol.handleMessage(T)},T=>{w?.(T)})),this._protocol=new d({sendMessage:(T,W)=>{this._worker.postMessage(T,W)},handleMessage:(T,W)=>{if(typeof b[T]!="function")return Promise.reject(new Error("Missing method "+T+" on main thread host."));try{return Promise.resolve(b[T].apply(b,W))}catch(G){return Promise.reject(G)}},handleEvent:(T,W)=>{if(R(T)){const G=b[T].call(b,W);if(typeof G!="function")throw new Error(`Missing dynamic event ${T} on main thread host.`);return G}if(C(T)){const G=b[T];if(typeof G!="function")throw new Error(`Missing event ${T} on main thread host.`);return G}throw new Error(`Malformed event name ${T}`)}}),this._protocol.setWorkerId(this._worker.getId());let A=null;const N=globalThis.require;typeof N<"u"&&typeof N.getConfig=="function"?A=N.getConfig():typeof globalThis.requirejs<"u"&&(A=globalThis.requirejs.s.contexts._.config);const F=(0,u.getAllMethodNames)(b);this._onModuleLoaded=this._protocol.sendMessage(a,[this._worker.getId(),JSON.parse(JSON.stringify(A)),v,F]);const O=(T,W)=>this._request(T,W),q=(T,W)=>this._protocol.listen(T,W);this._lazyProxy=new Promise((T,W)=>{w=W,this._onModuleLoaded.then(G=>{T(S(G,O,q))},G=>{W(G),this._onError("Worker failed to load "+v,G)})})}getProxyObject(){return this._lazyProxy}_request(o,v){return new Promise((b,w)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(o,v).then(b,w)},w)})}_onError(o,v){console.error(o),console.info(v)}}n.SimpleWorkerClient=y;function C(l){return l[0]==="o"&&l[1]==="n"&&g.isUpperAsciiLetter(l.charCodeAt(2))}function R(l){return/^onDynamic/.test(l)&&g.isUpperAsciiLetter(l.charCodeAt(9))}function S(l,o,v){const b=N=>function(){const F=Array.prototype.slice.call(arguments,0);return o(N,F)},w=N=>function(F){return v(N,F)},A={};for(const N of l){if(R(N)){A[N]=w(N);continue}if(C(N)){A[N]=v(N,void 0);continue}A[N]=b(N)}return A}class p{constructor(o,v){this._requestHandlerFactory=v,this._requestHandler=null,this._protocol=new d({sendMessage:(b,w)=>{o(b,w)},handleMessage:(b,w)=>this._handleMessage(b,w),handleEvent:(b,w)=>this._handleEvent(b,w)})}onmessage(o){this._protocol.handleMessage(o)}_handleMessage(o,v){if(o===a)return this.initialize(v[0],v[1],v[2],v[3]);if(!this._requestHandler||typeof this._requestHandler[o]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+o));try{return Promise.resolve(this._requestHandler[o].apply(this._requestHandler,v))}catch(b){return Promise.reject(b)}}_handleEvent(o,v){if(!this._requestHandler)throw new Error("Missing requestHandler");if(R(o)){const b=this._requestHandler[o].call(this._requestHandler,v);if(typeof b!="function")throw new Error(`Missing dynamic event ${o} on request handler.`);return b}if(C(o)){const b=this._requestHandler[o];if(typeof b!="function")throw new Error(`Missing event ${o} on request handler.`);return b}throw new Error(`Malformed event name ${o}`)}initialize(o,v,b,w){this._protocol.setWorkerId(o);const F=S(w,(O,q)=>this._protocol.sendMessage(O,q),(O,q)=>this._protocol.listen(O,q));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(F),Promise.resolve((0,u.getAllMethodNames)(this._requestHandler))):(v&&(typeof v.baseUrl<"u"&&delete v.baseUrl,typeof v.paths<"u"&&typeof v.paths.vs<"u"&&delete v.paths.vs,typeof v.trustedTypesPolicy!==void 0&&delete v.trustedTypesPolicy,v.catchError=!0,globalThis.require.config(v)),new Promise((O,q)=>{(globalThis.require||U)([b],W=>{if(this._requestHandler=W.create(F),!this._requestHandler){q(new Error("No RequestHandler!"));return}O((0,u.getAllMethodNames)(this._requestHandler))},q)}))}}n.SimpleWorkerServer=p;function r(l){return new p(l,null)}n.create=r}),K(te[59],ie([15,56]),function(U,n){return U.create("vs/editor/common/languages",n)}),K(te[60],ie([0,1,35,14,2,54,59]),function(U,n,E,M,i,u,f){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TokenizationRegistry=n.LazyTokenizationSupport=n.InlayHintKind=n.Command=n.FoldingRangeKind=n.TextEdit=n.SymbolKinds=n.getAriaLabelForSymbol=n.symbolKindNames=n.isLocationLink=n.DocumentHighlightKind=n.SignatureHelpTriggerKind=n.SelectedSuggestionInfo=n.InlineCompletionTriggerKind=n.CompletionItemKinds=n.EncodedTokenizationResult=n.TokenizationResult=n.Token=void 0;class g{constructor(o,v,b){this.offset=o,this.type=v,this.language=b,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}n.Token=g;class a{constructor(o,v){this.tokens=o,this.endState=v,this._tokenizationResultBrand=void 0}}n.TokenizationResult=a;class s{constructor(o,v){this.tokens=o,this.endState=v,this._encodedTokenizationResultBrand=void 0}}n.EncodedTokenizationResult=s;var _;(function(l){const o=new Map;o.set(0,E.Codicon.symbolMethod),o.set(1,E.Codicon.symbolFunction),o.set(2,E.Codicon.symbolConstructor),o.set(3,E.Codicon.symbolField),o.set(4,E.Codicon.symbolVariable),o.set(5,E.Codicon.symbolClass),o.set(6,E.Codicon.symbolStruct),o.set(7,E.Codicon.symbolInterface),o.set(8,E.Codicon.symbolModule),o.set(9,E.Codicon.symbolProperty),o.set(10,E.Codicon.symbolEvent),o.set(11,E.Codicon.symbolOperator),o.set(12,E.Codicon.symbolUnit),o.set(13,E.Codicon.symbolValue),o.set(15,E.Codicon.symbolEnum),o.set(14,E.Codicon.symbolConstant),o.set(15,E.Codicon.symbolEnum),o.set(16,E.Codicon.symbolEnumMember),o.set(17,E.Codicon.symbolKeyword),o.set(27,E.Codicon.symbolSnippet),o.set(18,E.Codicon.symbolText),o.set(19,E.Codicon.symbolColor),o.set(20,E.Codicon.symbolFile),o.set(21,E.Codicon.symbolReference),o.set(22,E.Codicon.symbolCustomColor),o.set(23,E.Codicon.symbolFolder),o.set(24,E.Codicon.symbolTypeParameter),o.set(25,E.Codicon.account),o.set(26,E.Codicon.issues);function v(A){let N=o.get(A);return N||(console.info("No codicon found for CompletionItemKind "+A),N=E.Codicon.symbolProperty),N}l.toIcon=v;const b=new Map;b.set("method",0),b.set("function",1),b.set("constructor",2),b.set("field",3),b.set("variable",4),b.set("class",5),b.set("struct",6),b.set("interface",7),b.set("module",8),b.set("property",9),b.set("event",10),b.set("operator",11),b.set("unit",12),b.set("value",13),b.set("constant",14),b.set("enum",15),b.set("enum-member",16),b.set("enumMember",16),b.set("keyword",17),b.set("snippet",27),b.set("text",18),b.set("color",19),b.set("file",20),b.set("reference",21),b.set("customcolor",22),b.set("folder",23),b.set("type-parameter",24),b.set("typeParameter",24),b.set("account",25),b.set("issue",26);function w(A,N){let F=b.get(A);return typeof F>"u"&&!N&&(F=9),F}l.fromString=w})(_||(n.CompletionItemKinds=_={}));var t;(function(l){l[l.Automatic=0]="Automatic",l[l.Explicit=1]="Explicit"})(t||(n.InlineCompletionTriggerKind=t={}));class m{constructor(o,v,b,w){this.range=o,this.text=v,this.completionKind=b,this.isSnippetText=w}equals(o){return i.Range.lift(this.range).equalsRange(o.range)&&this.text===o.text&&this.completionKind===o.completionKind&&this.isSnippetText===o.isSnippetText}}n.SelectedSuggestionInfo=m;var h;(function(l){l[l.Invoke=1]="Invoke",l[l.TriggerCharacter=2]="TriggerCharacter",l[l.ContentChange=3]="ContentChange"})(h||(n.SignatureHelpTriggerKind=h={}));var c;(function(l){l[l.Text=0]="Text",l[l.Read=1]="Read",l[l.Write=2]="Write"})(c||(n.DocumentHighlightKind=c={}));function L(l){return l&&M.URI.isUri(l.uri)&&i.Range.isIRange(l.range)&&(i.Range.isIRange(l.originSelectionRange)||i.Range.isIRange(l.targetSelectionRange))}n.isLocationLink=L,n.symbolKindNames={[17]:(0,f.localize)(0,null),[16]:(0,f.localize)(1,null),[4]:(0,f.localize)(2,null),[13]:(0,f.localize)(3,null),[8]:(0,f.localize)(4,null),[9]:(0,f.localize)(5,null),[21]:(0,f.localize)(6,null),[23]:(0,f.localize)(7,null),[7]:(0,f.localize)(8,null),[0]:(0,f.localize)(9,null),[11]:(0,f.localize)(10,null),[10]:(0,f.localize)(11,null),[19]:(0,f.localize)(12,null),[5]:(0,f.localize)(13,null),[1]:(0,f.localize)(14,null),[2]:(0,f.localize)(15,null),[20]:(0,f.localize)(16,null),[15]:(0,f.localize)(17,null),[18]:(0,f.localize)(18,null),[24]:(0,f.localize)(19,null),[3]:(0,f.localize)(20,null),[6]:(0,f.localize)(21,null),[14]:(0,f.localize)(22,null),[22]:(0,f.localize)(23,null),[25]:(0,f.localize)(24,null),[12]:(0,f.localize)(25,null)};function d(l,o){return(0,f.localize)(26,null,l,n.symbolKindNames[o])}n.getAriaLabelForSymbol=d;var y;(function(l){const o=new Map;o.set(0,E.Codicon.symbolFile),o.set(1,E.Codicon.symbolModule),o.set(2,E.Codicon.symbolNamespace),o.set(3,E.Codicon.symbolPackage),o.set(4,E.Codicon.symbolClass),o.set(5,E.Codicon.symbolMethod),o.set(6,E.Codicon.symbolProperty),o.set(7,E.Codicon.symbolField),o.set(8,E.Codicon.symbolConstructor),o.set(9,E.Codicon.symbolEnum),o.set(10,E.Codicon.symbolInterface),o.set(11,E.Codicon.symbolFunction),o.set(12,E.Codicon.symbolVariable),o.set(13,E.Codicon.symbolConstant),o.set(14,E.Codicon.symbolString),o.set(15,E.Codicon.symbolNumber),o.set(16,E.Codicon.symbolBoolean),o.set(17,E.Codicon.symbolArray),o.set(18,E.Codicon.symbolObject),o.set(19,E.Codicon.symbolKey),o.set(20,E.Codicon.symbolNull),o.set(21,E.Codicon.symbolEnumMember),o.set(22,E.Codicon.symbolStruct),o.set(23,E.Codicon.symbolEvent),o.set(24,E.Codicon.symbolOperator),o.set(25,E.Codicon.symbolTypeParameter);function v(b){let w=o.get(b);return w||(console.info("No codicon found for SymbolKind "+b),w=E.Codicon.symbolProperty),w}l.toIcon=v})(y||(n.SymbolKinds=y={}));class C{}n.TextEdit=C;class R{static fromValue(o){switch(o){case"comment":return R.Comment;case"imports":return R.Imports;case"region":return R.Region}return new R(o)}constructor(o){this.value=o}}n.FoldingRangeKind=R,R.Comment=new R("comment"),R.Imports=new R("imports"),R.Region=new R("region");var S;(function(l){function o(v){return!v||typeof v!="object"?!1:typeof v.id=="string"&&typeof v.title=="string"}l.is=o})(S||(n.Command=S={}));var p;(function(l){l[l.Type=1]="Type",l[l.Parameter=2]="Parameter"})(p||(n.InlayHintKind=p={}));class r{constructor(o){this.createSupport=o,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(o=>{o&&o.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}n.LazyTokenizationSupport=r,n.TokenizationRegistry=new u.TokenizationRegistry}),K(te[61],ie([0,1,33,7,31,14,4,2,36,60,53]),function(U,n,E,M,i,u,f,g,a,s,_){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.createMonacoBaseAPI=n.KeyMod=void 0;class t{static chord(c,L){return(0,i.KeyChord)(c,L)}}n.KeyMod=t,t.CtrlCmd=2048,t.Shift=1024,t.Alt=512,t.WinCtrl=256;function m(){return{editor:void 0,languages:void 0,CancellationTokenSource:E.CancellationTokenSource,Emitter:M.Emitter,KeyCode:_.KeyCode,KeyMod:t,Position:f.Position,Range:g.Range,Selection:a.Selection,SelectionDirection:_.SelectionDirection,MarkerSeverity:_.MarkerSeverity,MarkerTag:_.MarkerTag,Uri:u.URI,Token:s.Token}}n.createMonacoBaseAPI=m}),K(te[63],ie([0,1,21,14,4,2,50,25,46,47,61,20,52,44,11,45]),function(U,n,E,M,i,u,f,g,a,s,_,t,m,h,c,L){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.create=n.EditorSimpleWorker=void 0;class d extends f.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(S){const p=[];for(let r=0;rthis._lines.length)p=this._lines.length,r=this._lines[p-1].length+1,l=!0;else{const o=this._lines[p-1].length+1;r<1?(r=1,l=!0):r>o&&(r=o,l=!0)}return l?{lineNumber:p,column:r}:S}}class y{constructor(S,p){this._host=S,this._models=Object.create(null),this._foreignModuleFactory=p,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(S){return this._models[S]}_getModels(){const S=[];return Object.keys(this._models).forEach(p=>S.push(this._models[p])),S}acceptNewModel(S){this._models[S.url]=new d(M.URI.parse(S.url),S.lines,S.EOL,S.versionId)}acceptModelChanged(S,p){if(!this._models[S])return;this._models[S].onEvents(p)}acceptRemovedModel(S){this._models[S]&&delete this._models[S]}computeUnicodeHighlights(S,p,r){return pe(this,void 0,void 0,function*(){const l=this._getModel(S);return l?m.UnicodeTextModelHighlighter.computeUnicodeHighlights(l,p,r):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}})}computeDiff(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=this._getModel(S),v=this._getModel(p);return!o||!v?null:y.computeDiff(o,v,r,l)})}static computeDiff(S,p,r,l){const o=l==="advanced"?h.linesDiffComputers.getAdvanced():h.linesDiffComputers.getLegacy(),v=S.getLinesContent(),b=p.getLinesContent(),w=o.computeDiff(v,b,r),A=w.changes.length>0?!1:this._modelsAreIdentical(S,p);function N(F){return F.map(O=>{var q;return[O.originalRange.startLineNumber,O.originalRange.endLineNumberExclusive,O.modifiedRange.startLineNumber,O.modifiedRange.endLineNumberExclusive,(q=O.innerChanges)===null||q===void 0?void 0:q.map(T=>[T.originalRange.startLineNumber,T.originalRange.startColumn,T.originalRange.endLineNumber,T.originalRange.endColumn,T.modifiedRange.startLineNumber,T.modifiedRange.startColumn,T.modifiedRange.endLineNumber,T.modifiedRange.endColumn])]})}return{identical:A,quitEarly:w.hitTimeout,changes:N(w.changes),moves:w.moves.map(F=>[F.lineRangeMapping.original.startLineNumber,F.lineRangeMapping.original.endLineNumberExclusive,F.lineRangeMapping.modified.startLineNumber,F.lineRangeMapping.modified.endLineNumberExclusive,N(F.changes)])}}static _modelsAreIdentical(S,p){const r=S.getLineCount(),l=p.getLineCount();if(r!==l)return!1;for(let o=1;o<=r;o++){const v=S.getLineContent(o),b=p.getLineContent(o);if(v!==b)return!1}return!0}computeMoreMinimalEdits(S,p,r){return pe(this,void 0,void 0,function*(){const l=this._getModel(S);if(!l)return p;const o=[];let v;p=p.slice(0).sort((b,w)=>{if(b.range&&w.range)return u.Range.compareRangesUsingStarts(b.range,w.range);const A=b.range?0:1,N=w.range?0:1;return A-N});for(let{range:b,text:w,eol:A}of p){if(typeof A=="number"&&(v=A),u.Range.isEmpty(b)&&!w)continue;const N=l.getValueInRange(b);if(w=w.replace(/\r\n|\n|\r/g,l.eol),N===w)continue;if(Math.max(w.length,N.length)>y._diffLimit){o.push({range:b,text:w});continue}const F=(0,E.stringDiff)(N,w,r),O=l.offsetAt(u.Range.lift(b).getStartPosition());for(const q of F){const T=l.positionAt(O+q.originalStart),W=l.positionAt(O+q.originalStart+q.originalLength),G={text:w.substr(q.modifiedStart,q.modifiedLength),range:{startLineNumber:T.lineNumber,startColumn:T.column,endLineNumber:W.lineNumber,endColumn:W.column}};l.getValueInRange(G.range)!==G.text&&o.push(G)}}return typeof v=="number"&&o.push({eol:v,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o})}computeLinks(S){return pe(this,void 0,void 0,function*(){const p=this._getModel(S);return p?(0,a.computeLinks)(p):null})}computeDefaultDocumentColors(S){return pe(this,void 0,void 0,function*(){const p=this._getModel(S);return p?(0,L.computeDefaultDocumentColors)(p):null})}textualSuggest(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=new t.StopWatch,v=new RegExp(r,l),b=new Set;e:for(const w of S){const A=this._getModel(w);if(A){for(const N of A.words(v))if(!(N===p||!isNaN(Number(N)))&&(b.add(N),b.size>y._suggestionsLimit))break e}}return{words:Array.from(b),duration:o.elapsed()}})}computeWordRanges(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=this._getModel(S);if(!o)return Object.create(null);const v=new RegExp(r,l),b=Object.create(null);for(let w=p.startLineNumber;wthis._host.fhr(b,w),v={host:(0,c.createProxyObject)(r,l),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(v,p),Promise.resolve((0,c.getAllMethodNames)(this._foreignModule))):new Promise((b,w)=>{U([S],A=>{this._foreignModule=A.create(v,p),b((0,c.getAllMethodNames)(this._foreignModule))},w)})}fmr(S,p){if(!this._foreignModule||typeof this._foreignModule[S]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+S));try{return Promise.resolve(this._foreignModule[S].apply(this._foreignModule,p))}catch(r){return Promise.reject(r)}}}n.EditorSimpleWorker=y,y._diffLimit=1e5,y._suggestionsLimit=1e4;function C(R){return new y(R,null)}n.create=C,typeof importScripts=="function"&&(globalThis.monaco=(0,_.createMonacoBaseAPI)())})}).call(this); \ No newline at end of file diff --git a/static/monaco-editor/min/vs/base/worker/workerMain.js.gz b/static/monaco-editor/min/vs/base/worker/workerMain.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..08bf23ed22ae3ba87346956ebd58c4c5b54f664f GIT binary patch literal 108949 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

1O2gp-5G@zk z70Kck0bjiF11ZV~C4-g2-}YGt{srMD$9q%|DY<28mM$!Z0T;?{6)RenN9NjAU&s z$mnL0MYOSlF?G;!7T*M5v&z@$i(TT2nd)G4j~awg^)P4j#Ina+ zjURr4)G=6QAQLq=mFOhn!SEqKkmr#nbqS2r;-?}XZ-a+!hVe=v?%`7}TzL~94Aq?$ zk{&IR_rT`D00$W@QbDh;TwwuIF%M4TcjV~xR!-jKsl3r1WZr>nWjUu&`|B`U<`}8r zGy)LP>oggaRMuG=DhIdmDexLovOK^MhSHbw^Yg87_{@Krw*>uJ{OcRf`5WpM`}A_T-c@+DR!7!Ts@AvJ5nq<+U3;*|9-6)ACcXQZ zPLkR3PDm_ib_0zup+Jh4Lpl0OGk5|sctVIv{dEWPIeJ*zhyyQ`-LS4DRW@SDOJz4S z4>+v{cm-Uj+}oQrgQi$|FG`&TMZ|NHRMe@lJXM^Kf%Vqvr#Ne^jHah=x5*oM^Q zwl1jqXQLO{j#Q8kNg6D8f$~rIm`e&EvZ7G+^wTPtaae0&xS)>tr4EShtCO|zt6+zM zs<(P3bYBlr_40SAFiozu)f{*!TPhb_;?I49WyK9UeZwHg_;$vgl7gchw z(=}kFc^e~z1ikRbAGbQ8dPJ+OV8>BW6`>+)bu0&=i~pTIZXy@9Pn!exN8=$HN3)DxpWZU5S8dxOBl`+8O~W`*F$|Ut7%{o!oIJ84CS}y1&uDObmY%tFgjMnR}3F?#ibomA$ zpyk9qDG`fX>R|TgvaGZnhp>RYbQn1(OJ|av_EqF4#CxJ|lN_FM7FgXGre%O>)^rs6 zKZ)CyoO9JWd42{a4WvAs6rZ5Exutiuwo%X7WL<~xbT?ej+HhT4Ev9#TTdvG>aG#E0 zl89yi`l*Gny-JiXOHp z8mQZpzDF%nl*0PvW~x;G=z};cfezi0v^X51KT+M1zB`%%4I+}+-%sg;KIelvdf&VF zc+@*?N8XyH9Ha*IwCJ_v)K)eXc}nSY(`dM&>zf570#$m#1hfZT%DrQGdIHJ4%g5F?78d7qNvhx3KpDhIC%iuf8OWD{9Al(6v1#@ZaA4RH05z4+vITr zuMpOyHUY=NW*_5vvL{N;AV}Xes*Z=?$ayAz92`lTWjT{KS`&rK>W^MEBA2HFC72r U4$^7#ZxYb|AKcb}Z{l+W03U=Wy#N3J literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/basic-languages/yaml/yaml.js.gz b/static/monaco-editor/min/vs/basic-languages/yaml/yaml.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..260cd385f91d7c564e9ee1bb00c7708d54fa48d8 GIT binary patch literal 1996 zcmV;-2Q&B|iwFp3D{E!|19@R>Y%XeZ0L55sbK5o&{_bBvBR&h1U{Z-a*OWe1&N$B0 zGmVmqa`)j#x&x7*#F_$B5R9#(c)$G?AgLF}YA1J{sb@q2yU#8byNg}WZvXh~kNi8b z`qs5ru4FcwD+|ZA^*)QGC`77&E|)@5l?m=xZ}QwSpu&=@VDbw~94-7$CJO*~*3h~5 z-WlTa*XL=Ho~QAUy<{)x@YTieudk=ClVO@%q~}RIrR=+lWO!j~;ZH1Qv|x!<@`OoC z&6)N7_Oq2|G2;c(h`CbB!gJkOrsn0;iN(TQbOyQ$!D%ecSdu9r-DxhS?t*6A{pt4l zW<0rZ)T06&f2hCu?oqr74C{Ia`QmM3Xo*KmYHOTY(^2m z?a=mrsE$xsFso29ixs;3LZ!73Ntv^oM{v6;e2g{9(ESh7Us$Z1STd@Z!R8&UvFD={ zOD5II@TMJa#?*%g-tpeDB9_?_oMlkU=TT$2V1)t9b^yRtLamnULrT()zU+w3oEAGO zjP!$#ng4_4iqvYi{WnyiQ9Jfp76?7A41=?WW`-H5U`-EmqQD3EHJ8YShpeoyxKLJ6E_JwA(z9#ZYz6H?;~O2h1TmG zTIVig>&0@WEUCA*#N4)zQzxdmURBzsr}EhM)#<63wt<0Fcp&!;!I?jWh)LUCuQO-M z0k^b{XEljiL$zzD86rqvTILGb1QwxK?a^#f?no$~9s9h@^U(s&AkH>;lThvBW2S%3 z&p)%`y*Wjr95ik85I9G9$vpPdb)F)ihOB(ZRf=;A`p{O%MovQkXyTjr6O6A((Vfn@ zU*ZQ-586u9ydb?Yu>Z2?;_J`b1Ud1m`tly1kSZ2DHO?H9u8NrHV~Z3T8Dl|8oM78- zh+`k*7A9N0Du=Uw-ON1n0@Y+HX?)Ls6$Ge)+EYW-2~Yr|$c!+IY!pR=mP%abqR9B{ zBh4fTRB(E^r=?<`GY@2I(h`FWG1?OGhG=hyJ=AN7Fxnt{8)OgF5h+SIUQqP^jI~pd z>vg?Kr0FC}Ol*nZH(W9K31Y5|nKC#N>@#~*p6i80|HLKK92T$2pjC18rkM$6Q~aIV z9Y#B;>!>D=ex<}c;~zz#((KVgPSYW_fok|3Bx{~6GBCqwd5Apgm9OB%uO-!u<{5WI zAUXz=BJ6K>thD5@!sn{kV9~QrcB;~zh+E& zE*^Qqbuc)KM#1px`)FXhE#h4+sCtGEgwScnBbcz@Y!C%6VQz?hd(>(85G$H{?oa^Z zyJ*mne`Jq9eAH-qmcBWAw`JXOXoi_ud9GP8bU=T`)AgEc745o^wG7M2KTAO{D$4HOQn{oB322)Iwvwwq&D=CD6G|70JmyodN>R}FXFP1cB zIv=+5wk`lMaQ_nAS<%4Jxr-J|Q73^02HE*V-$McyE;GQ;{hC6tDz@C>h9?FQI@Ni- zj}fuyk{u#A8+j2P`Ify41J;g7l*e-+_svvv_9Nv<{>1t;7Z2AW&zU(x#Xb|Rck%s1 zt&C9MUhQQe9vuf(sG@#2(fNlOrm^vACmElIIjQFDf=%8X01M6A1w%F-fX>G*&U(@}XIwtF9O!54A(kdDV4k z59!-5pCKrm5ost?U>)i%-VNG=X``>&_rKGEGcX9M>F8*`<6a63l zSpX@U7y?|V+&gRyY-gZLYKsEN9n7`hD&r-58=t&H`{El`tEb=S*_d_m()Uj$ueR&& z+SIlDE6EmA#dAcszMB}o!#y2r)y8f^r`OQuI+P*To8KPWHjEnZqUjA?V1fB0I2sfN zPeW}|rfCq>Q(pU>(W+`gsnsAH+@Uax)?w(_{jL9?>cIs&YuZTlyJTOdnw?nY|?@v@-@|X=?*%vanX*ttF~irEocbMu0!W3eb2ysTg<_T$hLc# zMSobgcO7#}IdS)E>~2PNzHCxj3qS3AepA2$5=LPi{bu(&1U=XR4+=cr1rNdxcEW=a z2fN`xiDx_FL3Gm5Qhs0FKD5~r3<93Bl e?91B5_T^Da+530S?-9sL*k%#UQi6951u;PX)c literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/editor/editor.main.css b/static/monaco-editor/min/vs/editor/editor.main.css deleted file mode 100644 index 9e211dc..0000000 --- a/static/monaco-editor/min/vs/editor/editor.main.css +++ /dev/null @@ -1,6 +0,0 @@ -/*!----------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/vscode/blob/main/LICENSE.txt - *-----------------------------------------------------------*/.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{display:flex;font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px!important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{display:flex;align-items:center;cursor:default}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-aria-container{position:absolute;left:-999em}.monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;border-radius:2px;text-align:center;cursor:pointer;justify-content:center;align-items:center;border:1px solid var(--vscode-button-border,transparent);line-height:18px}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{opacity:.4!important;cursor:default}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;padding:0 4px;overflow:hidden;height:28px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{display:flex;justify-content:center;align-items:center;font-weight:400;font-style:inherit;padding:4px 0}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{padding:4px 0;cursor:default}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,transparent);border-left-width:0!important;border-radius:0 2px 2px 0}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{display:flex;flex-direction:column;align-items:center;margin:4px 5px}.monaco-description-button .monaco-button-description{font-style:italic;font-size:11px;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{display:flex;justify-content:center;align-items:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{margin:0 .2em;color:inherit!important}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{color:var(--vscode-button-foreground);background-color:var(--vscode-button-background)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{color:var(--vscode-button-secondaryForeground);background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-top:1px solid var(--vscode-button-border);border-bottom:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}@font-face{font-family:codicon;font-display:block;src:url(../base/browser/ui/codicons/codicon/codicon.ttf) format("truetype")}.codicon[class*=codicon-]{font:normal normal normal 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.context-view{position:absolute}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;color:inherit}.monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}.monaco-hover{cursor:default;position:absolute;overflow:hidden;user-select:text;-webkit-user-select:text;box-sizing:border-box;animation:fadein .1s linear;line-height:1.5em;white-space:var(--vscode-hover-whiteSpace,normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth,500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0;border-right:0;margin:4px -8px -4px;height:1px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace,pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{pointer-events:none;opacity:.4;cursor:default}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit!important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;border-radius:2px;font-size:inherit}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-mouse-cursor-text{cursor:text}.monaco-progress-container{width:100%;height:5px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:5px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;transform:translateZ(0);animation-timing-function:linear}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}:root{--vscode-sash-size:4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--vscode-sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--vscode-sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";height:calc(var(--vscode-sash-size)*2);width:calc(var(--vscode-sash-size)*2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-0.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--vscode-sash-size)*-0.5);bottom:calc(var(--vscode-sash-size)*-1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--vscode-sash-size)*-0.5);left:calc(var(--vscode-sash-size)*-1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--vscode-sash-size)*-0.5);right:calc(var(--vscode-sash-size)*-1)}.monaco-sash:before{content:"";pointer-events:none;position:absolute;width:100%;height:100%;background:transparent}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{width:var(--vscode-sash-hover-size);left:calc(50% - var(--vscode-sash-hover-size)/2)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:rgba(0,255,255,.2)}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;background:transparent;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box{width:100%;cursor:pointer;border-radius:2px}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{font-size:11px;border-radius:5px}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{display:none;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{line-height:15px;font-family:var(--monaco-monospace-font)}.monaco-select-box-dropdown-container.visible{display:flex;flex-direction:column;text-align:left;width:1px;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{flex:0 0 auto;align-self:flex-start;padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;width:100%;overflow:hidden;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left;opacity:.7}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{text-overflow:ellipsis;overflow:hidden;padding-right:10px;white-space:nowrap;float:right}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{flex:1 1 auto;align-self:flex-start;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{overflow:hidden;max-height:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:"";position:absolute;left:calc(var(--vscode-sash-size)/2);width:0;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{margin-left:2px;float:left;cursor:pointer;overflow:hidden;width:20px;height:20px;border-radius:3px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex!important;align-items:center;justify-content:center;transform:translateX(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{position:absolute;top:0;display:flex;padding:3px;max-width:200px;z-index:100;margin:0 6px;border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{display:flex!important;align-items:center;justify-content:center;cursor:grab;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent;z-index:-10}.monaco-editor .inputarea.ime-input{z-index:10;caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground)}.monaco-editor .blockDecorations-container{position:absolute;top:0;pointer-events:none}.monaco-editor .blockDecorations-block{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .line-numbers{font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background,var(--vscode-editor-background));color:var(--vscode-button-foreground,var(--vscode-editor-foreground));border:1px solid var(--vscode-contrastBorder);border-radius:2px;padding:4px;cursor:pointer}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:initial;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0;box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0;transform:translateY(-10px);font-size:13px;line-height:14px}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{transition:background-color .1s ease-out;height:4px;background-color:transparent;background-clip:padding-box;border-bottom:2px solid transparent;border-top:4px solid transparent;cursor:ns-resize}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{z-index:1;background:var(--vscode-editor-background);display:flex;justify-content:center;align-items:center}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;height:24px}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{position:absolute;pointer-events:none}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{margin-left:-1px;border-left:3px solid var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:rgba(0,0,0,.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0,0%,100%,.01)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0,0%,67.1%,.4)}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{font-size:11px!important;opacity:.7!important;display:flex!important;align-items:center}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-insertedTextBorder)}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-removedTextBorder)}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow);border-left:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block;color:var(--vscode-editorLineNumber-foreground)}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute;box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground)}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-rangeHighlightBorder)}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-symbolHighlightBorder)}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorError-background)}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorWarning-background)}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorInfo-background)}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{box-sizing:border-box;background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border)}.monaco-editor .lightBulbWidget{display:flex;align-items:center;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:100%;opacity:.3;background-color:var(--vscode-editor-background);z-index:1}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*0.5);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault)}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{vertical-align:middle;color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize)}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:.1em solid #000;box-sizing:border-box;margin:.1em .2em 0;width:.8em;height:.8em;line-height:.8em;display:inline-block;cursor:pointer}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:.1em solid #eee}.colorpicker-header{display:flex;height:24px;position:relative;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-header .picked-color{width:240px;display:flex;align-items:center;justify-content:center;line-height:24px;cursor:pointer;color:#fff;flex:1;white-space:nowrap;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.standalone-colorpicker{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{cursor:pointer;background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header .close-button-inner-div{width:100%;height:100%;text-align:center}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #fff;border-radius:100%;box-shadow:0 0 2px rgba(0,0,0,.8);position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{position:relative;margin-left:8px;cursor:grab;background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:grab;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;box-sizing:border-box;border:1px solid hsla(0,0%,100%,.71);box-shadow:0 0 1px rgba(0,0,0,.85)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{display:block;border:1px solid transparent;border-bottom:1px solid var(--vscode-editorHoverWidget-border);overflow:hidden}.colorpicker-body .insert-button{position:absolute;height:20px;width:58px;padding:0;right:8px;bottom:8px;background:var(--vscode-button-background);color:var(--vscode-button-foreground);border-radius:2px;border:none;cursor:pointer}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.post-edit-widget{box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:1px solid var(--vscode-widget-border,transparent);border-radius:4px;background-color:var(--vscode-editorWidget-background);overflow:hidden}.post-edit-widget .monaco-button{padding:2px;border:none;border-radius:0}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform .2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px));border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:50%;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{cursor:pointer;opacity:0;transition:opacity .5s;display:flex;align-items:center;justify-content:center;font-size:140%;margin-left:2px}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;margin:.1em .2em 0;content:"\22EF";display:inline;line-height:1em;cursor:pointer}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;user-select:text;-webkit-user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{opacity:.6;color:inherit}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground);color:var(--vscode-textLink-activeForeground)}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px;background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground)}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;width:100%;height:100%;color:var(--vscode-peekViewResult-fileForeground)}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,transparent);box-sizing:border-box}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:transparent;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{display:inline-block;cursor:pointer;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{color:var(--vscode-editorGhostText-foreground)!important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .inlineSuggestionsHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;min-width:19px;justify-content:center}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.inline-editor-progress-decoration{display:inline-block;width:1em;height:1em}.inline-progress-widget{display:flex!important;justify-content:center;align-items:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{font-size:90%!important;animation:none}.inline-progress-widget:hover .icon:before{content:"\ea76"}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-radius:3px;border:1px solid var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);vertical-align:middle;padding:1px 3px}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:2px 4px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0!important;height:0!important;z-index:1000;border:8px solid transparent;position:absolute;left:2px}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .parameter-hints-widget{z-index:39;display:flex;flex-direction:column;line-height:1.5em;cursor:default;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{max-width:440px;display:flex;flex-direction:row}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{content:"";display:block;height:100%;position:absolute;opacity:.5;border-left:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{content:"";display:block;position:absolute;left:0;width:100%;padding-top:4px;opacity:.5;border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em;background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{display:none;flex-direction:column;align-items:center;min-width:22px;justify-content:flex-end}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{text-align:center;height:12px;line-height:12px;font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;justify-content:space-between;flex-wrap:nowrap}.monaco-editor .peekview-widget .head .peekview-title{display:flex;align-items:baseline;font-size:13px;margin-left:20px;min-width:0;text-overflow:ellipsis;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px;align-self:center}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor .rename-box{z-index:100;color:inherit;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{padding:3px;border-radius:2px}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{min-width:2px;outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,transparent)}.monaco-editor .finish-snippet-placeholder{outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,transparent)}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{float:left;background-color:inherit}.monaco-editor .sticky-widget-lines-scrollable{display:inline-block;position:absolute;overflow:hidden;width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit}.monaco-editor .sticky-widget-lines{position:absolute;background-color:inherit}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute;background-color:inherit}.monaco-editor .sticky-line-number .codicon{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit;white-space:nowrap}.monaco-editor .sticky-line-number-inner{display:block;text-align:right}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;z-index:4;background-color:var(--vscode-editorStickyScroll-background)}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .suggest-widget{width:430px;z-index:40;display:flex;flex-direction:column;border-radius:3px}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{flex:0 1 auto;width:100%;border:1px solid var(--vscode-editorSuggestWidget-border);background-color:var(--vscode-editorSuggestWidget-background)}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{box-sizing:border-box;display:none;flex-flow:row nowrap;justify-content:space-between;width:100%;font-size:80%;padding:0 4px;border-top:1px solid var(--vscode-editorSuggestWidget-border);overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:flex;-mox-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre;justify-content:space-between}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;opacity:1;font-size:14px;cursor:pointer}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis;opacity:.6}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{margin-left:12px;opacity:.4;font-size:85%;line-height:normal;text-overflow:ellipsis;overflow:hidden;align-self:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-shrink:1;flex-grow:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{overflow:hidden;flex-shrink:4;max-width:70%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;position:absolute;right:10px;width:18px;height:18px;visibility:hidden}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:50%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{display:flex;align-items:center;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 .3em;border:.1em solid #000;width:.7em;height:.7em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{display:flex;flex-direction:column;cursor:default;color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;overflow:hidden;text-overflow:ellipsis;opacity:.7;white-space:pre;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:normal;min-height:calc(1rem + 8px)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.editor-banner{box-sizing:border-box;cursor:default;width:100%;font-size:12px;display:flex;overflow:visible;height:26px;background:var(--vscode-banner-background)}.editor-banner .icon-container{display:flex;flex-shrink:0;align-items:center;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-repeat:no-repeat;background-position:50%;background-size:16px;width:16px;padding:0;margin:0 6px 0 10px}.editor-banner .message-container{display:flex;align-items:center;line-height:26px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-banner .message-container p{margin-block-start:0;margin-block-end:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{padding:3px;margin-left:12px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-editor .unicode-highlight{border:1px solid var(--vscode-editorUnicodeHighlight-border);background-color:var(--vscode-editorUnicodeHighlight-background);box-sizing:border-box}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-selectionHighlightBorder)}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightBorder)}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightStrongBorder)}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightTextBorder)}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iIzQyNDI0MiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iI0M1QzVDNSIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{z-index:50;user-select:text;-webkit-user-select:text;padding:10px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{height:1px;border:0;background-color:var(--vscode-editorHoverWidget-border)}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,86.7%,.4);border:1px solid hsla(0,0%,80%,.4);border-bottom-color:hsla(0,0%,73.3%,.4);box-shadow:inset 0 -1px 0 hsla(0,0%,73.3%,.4);color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,50.2%,.17);border:1px solid rgba(51,51,51,.6);border-bottom-color:rgba(68,68,68,.6);box-shadow:inset 0 -1px 0 rgba(68,68,68,.6);color:#ccc}.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif;--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute!important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%)}.action-widget{font-size:13px;border-radius:0;min-width:160px;max-width:80vw;z-index:40;display:block;width:100%;border:1px solid var(--vscode-editorWidget-border)!important;border-radius:2px;background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground)}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{position:fixed;cursor:auto;left:0;top:0;width:100%;height:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{user-select:none;-webkit-user-select:none;border:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{padding:0 10px;white-space:nowrap;cursor:pointer;touch-action:none;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,transparent);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{cursor:default!important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-color:transparent!important;outline:0 solid!important}.action-widget .monaco-list-row.action{display:flex;gap:6px;align-items:center}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{display:block;content:"";width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:transparent!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-action-bar .action-item.menu-entry .action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.quick-input-widget{position:absolute;width:600px;z-index:2550;left:50%;margin-left:-300px;-webkit-app-region:no-drag;border-radius:6px}.quick-input-titlebar{display:flex;align-items:center;border-top-left-radius:5px;border-top-right-radius:5px}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{margin:4px 2px;flex:1}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:25px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{overflow:hidden;max-height:440px;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:flex;align-items:center;justify-content:center}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{font-weight:600;font-size:12px}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)} \ No newline at end of file diff --git a/static/monaco-editor/min/vs/editor/editor.main.css.gz b/static/monaco-editor/min/vs/editor/editor.main.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e338809aa0b95bd3121019f5f44abe6e36a1ef5e GIT binary patch literal 20060 zcmV(wKGlZDDC{E@N|Z0PTJGm)kay@XxbPp5K}wz7**B9(S|ou&p#T&L zg*u*m_n$%g|NTejyUvSjbDyX4McH{g>2|KtNuCwitVHkgO_s-Hnytgmv*ogb3l*I_ zDU$pqnTAmL*Ca1cfwN8&4o}1A@zKfAY&tudO`@cq^y6qSjE+ynC(~#)9nOxXlX09p z9ZsWR7b^dfER(oMrk(A2n&h2wk#w#uKXjJqBv}^;lvtGIrZ{`@WS*9b?Kqrdt0yal z;FFtTl1-B*<7GB}vWnC7led>IUcGz&DlG3xRCy1weD@?=W$Sp71@Q#>AB^LCw@9G> zXZh;nh-7^8To&Z2vk_Y@apI%P=sNz41QaOg&<+A#?`O4o}dPfL-{ zFgYh2Br6jL!z;8x%SBKu5D3awU}(_pktY)(Wn{OQ69gcfoxy(?(;J-VtGeQDzysUj za3K>=L~I-vX<;4h*1$;t(gb4qw}|hlJtOlhI%u=K2k1jBTgQS=dB0596e6!~$*2ya z$SQeO>#!3klb`dlonyt@>eNc8N_nOG<~1Jljf>pYv`SLWn>kzVH3VVf2mTdV$6Or3 zO&ZfSz*sj7H{GD4dcd7p`lyV}Yr52f#k-+&X4G~@KN@h*54Rn{o~)Bp*({?D+J5lA zk=N>IFr<7p?nE8j42L;Qib&9Kzb5|)8v)vNwyQPUWMEK7PWal$RwZ`I;Y(ym zB|>W=&7DEiww<1TEwaVbk;Kdx+aY(M9j`sHyl5#1XxxXaQ*yc~lv$?9Fj8UtaAaI4 zyioVtUTS7Ipf*C4$ZBqcsXXU}HZJvA6Mz}{){rk^CF*|ZS&>hFnodz3(1o)66cE~f3i)V&>{uwjG*_p>}+B?aqsP;Aom zuFQ57_IXyuW%9URZu52bYXx|o#5sRhp}(^fa6t8Y{Pi-6K}4u4w$93AoMqQYzCcX{ z$z3wpmLBzr`}M?JW*4v1RZL}~s%M>kI4U|tnQV&3M^U$vu4m~wEd_FMDEzonN%mjW zepQ&1d6Ezf5&c9}#uXmHbW5jAzYxTL>U){4KqWfcuBj}y9jB9EoP0spJPt=ky>QS+ z|DN{316fc)&&~Y^N&LsgwTCLJMA_*RWs)sd! zVR6k?HZPvPV%>7M#ji7D!$1YPcld~MJ$HG|4H&2M`PA}J+ZMn1G zl=3oMYDwV7DG;yKn@ULHFsg~K-#5X{f6|9~ z0g}nCn^itKI{F$eCczS0B=Cbo@Y5>3sfrvQiXoefq5C{ov83cr|*eQ zzbQI>13Kd+BAh>U>?5%UnE;}ZR`tmBnC+veNH-H0CEB89*d5o+a=H(Evy~3S#U7 z{P{h6?GcHnD|as>DDdMLIiH9nIx$f|pikvv&M>>mHHA_qB&}1CrXY0}Nbdx}eEYpik z4Omo!&n#o_@EFTSkt5O2rxOkZH9T97^cE+(PS!};L~?Dm%_qsOh9Qztzg28;lP7rT ztCNQ=aCFiMLG!UKuaL?%XPhD42>B(okFj!6Lb0m-d! zDuWs2Kr0(C9XCW-htJ+nYe@NYWmtGJLsqvOi?xTKzhG~ec^y?dtk8zIRQEs?cuZJ5 z8vg5^cS*_CkhbpM4pUk&HNm6Dj~Y~tXC-c$*6lW^dx6%{+G=AcNKU3(6p&HgA|T=| zm8Pr3R@bnU$QS-t9dGfghA7)jJ2_G?;cgPs&5qX`vv2x#fv1D1X;iJrTvVI!493p9 zZL#%2s}BTy1wTrg0UDNKyt6599JL==XG`+OH9Ap>-$-G2tLz)1Sb;=_hiaAmuI?SVEdtCT z;eKc@1d8o!mfqEC+H>!hQu-EA@DT0-w0aD zhb0mx!l`LCghZ-*fQEaAXw0$jG|AZ1yJ><3dlHx8CE)R~CR$*oTP_e&nlJ1`qT-QP z!$p~=*9isrCsDU;n+_s3B$PxUSeK{Kx6e_IrFo9FAyH2!p7jiMjvFNr5j`#HR%xHM zUs_u)&eo)KHsXf@WH_T%w~jm78Rt zxfb-<851r!AhR;K9#ojDHs!r>PxP2z4QvqD{i~)n$I7Mio3u#B=@J$lb3Kq{1g!57 zhS075Wk?Ics=&ptyzVHgU62N=q$px+htbC9Lc6JcTHRDb_rYr4>Qn-HG?4`ZAsf@d z;8|CDeLFO843~!<_Ei(5zCjBBl?uppn5%J*y-x1O=^Ch4YuqdiOJsy`p}&Hk2IVJx zL!=R`YGJP`Pe>mF9qITWTHC{fl%qHWS%leO6ZhOV7f?I~(u2&W~dV|hKG$pThD z1&+F33S$X-e%%JAF+kIH0f5kNBy6Bl*9PQ~T>}e30SNC4Vc>8Q4^Yt+sEPzcHBqN% zzE5ME5sA_-z}}X$MMS)g4qU$TqR>Dz)DW?7!unfMFRE&&se0@(+fEjghv?Mp*r|IF z@-375XmeR=6Qk(|R(;j*Y|xg3Uk!M1$Jm*m@4g`BHw8t>P?uc!U`YG7Mb-^zD*=^v zC7G7Wv%p7J+hv(;9(-$0R>pFQ%qOt9qGd*# zdT~aiEu*YP766&&Sli9!JpAURHhDHjGOZYwgXt>`GK2v&9Y81K@5X5ug6XArC~GJ?5>572Omx~f3-qFl(#ot4T48|7gk zSSF(ymB5>Y6V?Z57&D5x+vM$HJ&~A`?ejIguaOXb)u+Rc7B2-s2_hFU6s>gua?+CXJ)^Pv+xZnLcvXvT)&;am~N7&fNSa5hM7DOPwp5<9q z?zpHc`PT){4zowVW^dqMkd@~5i+SbDv+0jU-cA^Y8hm;oT=vqm{^m&w5~07 zJnf687Wz^&Q|Fs$-`QHaX6-S+k<%i_2_pn+`JD-`6YV@@Bl@=qcYq1-3j^H?L=_7h5rrUKk2$iO0(p1#LlrtRL5-=zwC%Xcj6M|rnKiW{3Fp$*Mf(h4IpO>$nn@_iI6yJUwz)nnM;kIw;nhhl6Rm{sq$YTRsh zTLzaA$&Yw&M8gpgv+a0Ne=$`@_t8cTu<9f>#by_1uUH6;bHk^~me=4d=V+#<`ysYK z>d1-Iu%^e=(7UfuCeLuJLojDtJhaU;D4Zz`5!wF!pUm5nI+ z9zeVcBIBML!n!>;nvJ}6zH>N{)_hvn|fx{`;m4L|F(8ah)w;!uw#h*Z{y|iKA55mg%XCg5MG+=;*rxVAAPM>mbcJh7z1TI49F@SJl;3iE8 zr#W2wIVebsM4_0p!iL&zgxwn*Gq5taXm08vR7O1nMVEFdAXPSyax4MYvJgV$Zyv%p7c8lpyM_xTXD822ScSm)0 zB6zr|SC5|A3%!K4b{^+1v6t4pydlTIjhjsKd>oxEP_Stz+0Nw>L7B__G%X-naX6bNHR=35xJ^P`u@)q@N*S;BB2`=5)Y4>7c{0^JbIlo}6y<>giut=yR zF25^AYlnIVg5xHPc&kZhL~k?)h8xYvwgBZvna$^1Ut%Gr$r9ZoFNttsVs?I!5<<^p zR47<>`o~XYR)V65z0^amh{@QC;71~Q>Uwxh%V220pa(UgQIUI!Mlw+X8Do7Nzaw_H z+dBwezIa#H3X%XLmE|uN$>bXAu?@cQS|oq(xhJXMMF#^p`pBu^W!TpfM2X>4M3p>4 zIuN~1YP>wW0bTgfOX|n40iqYxTbkZQGMe@qE*ilCo|0u;az!)q@^@5&!p;e z%}h`u)N+AESPZZaxfAjTK{r&-K9e={?~jjg&^X;$Oz0~MXkpW-RDD!L9d`2?$#7}m zZ~{X5rbwoeARq<<4^E?LGVhuz`$oi8BXbWdp}AQb08nsJ&}9s1&qJh}C#4$g-*AC5 zbYI{M)e9W%?RG5X(;G;4wo;sI%P~*1JM~;DDhY%&f?#*TqrytAibr7=PVg}?XTs#J@IvalV?7fPLu0<@m}63eHUmK zc^*raHs@RqUE|*^cop*HdUP19jbA~CP%qt@_m0b_!YXX-;&|{5dL5Z?@71%C&>hQ7 zFM>?)FDfeARc7LXnYrHV)(gzsQ{Bj`u=9);wdD_kf5bgB98_O53r%zNQ+jQj%6qyg&)86AqFP;7Fa5x*?k1^g2lEghA;F zR~-}pu$s;}^l=A3lCnCP75JdqupS`_6LA_=#+@WI*7KhojU<(aZ})BRj{1$^VG|-Vw85Y;G)f{1 zz@aa^PV5YSY|0$!0%l{N+{D<>n8;2|rpWeS(0(Wprv{HLfaS4h84%h5n1rvladrgy z1^V$E*oV=v!~wYqp#jMv;iUm2^yYj+k zaU+11to> z-{x@2g2?FALSa=LWouk3tUhOco&S%&7|}(qMI5AufK)KOgAI2fWo9=}8_E||g!0MM zV!dXi?|gZ`S;_4$qjjAq6O|8d@)>zJPy!@ z9{i_UOLNo;zv8Nk!qj%c<9V^(uEq&u+NMcK{E{`X$6ysMDlJL6zu9aiUAdIkOt;W9<8{xZ^bt0G zewZ-;!x+a!`P`_35zZ0LxR5@%;*D4e!_-wRe1rhN5_t}i8J@Hst~1ftM`0eln!MR!J^w#e6s;ht6k z=L|?HceFYLNm4$rCjWk!CBS84QHKgSJ}RFd(Bif@&DWr{QqXF0&%r@MxUhIbed0;z zLz=vYd5448y%|%eT7W+o02%O<5EX`2QwR)4}8Z?Ol@Ytc#Jl3Q**cN4QHQ@UW z@I*+Y6CE}au!E~vaic=7LifJfHL%m&F<1%8UWg8)*flzn(w!>bE?Hm!GWLBuw(yUE z{rv)^#VvuxX7O#3%q4;Q?;Ea$a@1p2pj9&}>S3)|8bZ5kwP*<8Dh&tm3HI4K0v<`& zwK!YAP1j`2zpsb?m%sd_ig-gLZKg<2UP~(Ls+g!2^dheeeuvmFL>unmZ)H<(TFf%Jn9ixdz^PYW*%`!4#nH;BF!1d3zyrpzkQ z#FSZ{g4itLBGDn7`a?+W(BX8-KvbGj99#Mm#FjoGz_d?M_v=@A1`GBirk;X4MI65n z+0m@*L`7#1bz(3CUB|Fkq+Z#8;jiAXNdNfw+JKT`^-xt=?{?AtG;UxQXJ?=(nJg1q ziX+xAl_7}UyhAO(j9Gh0$sK1^RAM&RAu;6&R@Z_#PY_Q*y-yClUe;nttI9!BIL`Tr zNUq}_nvV124cYUKVI-b*=z4Yz_A9UIwBn+N$kO?Vrewr-;W0u|ByF zdcPWH%Z4;jDm5mGTE87t6exDGXnpjc3!D4Fd>iM}opsmN+_Q`~klvDnNuzWzO>f*6 zoKT{f4zl>?Hl5Fx_d!Cll!<0ckPL5{ZPAK1jovG$q1n5c0oR2SmLLkVNU&_O-^==R z?>5dMS3{!?{zmH5caZ}3>m-Nz5Zz4Iv#e1cFHwd14gy%e-Vt~Y(KRG*l}gtJxNER% zjh1q#f~9L=vB+*euIaI!wXj{UlL=&>$?r`K8JwF5w2xK27x*^F-sVf5)>Wb|mMDdk zudeK+szs55Jqy=ibZ4)S0xMc19IVT5n$BimngXFu{GHU9hU)Z`gT#Q?xQS5hM;jv+ zQsu^XrJ}uc-Ho!G-OvM>V!K+w^pN8SN}l>2K$t6pzZxts=)v})DmeMrQcHVOmxG(& zCpm`fw@s0eV8I&`Q}7`!bjM;#V6;)-?KB)j+|C8h!6>8-HhMRDfMk|qW@mCs3Q7{b zj(FD@-8=moR($5f%#qZC1^8fO@(i{#f(_ov=lFKq7RXUz7(}Wfx1jWZVha6at)oU` zu3U^nR|_ylHrV-mdK>^X^?gulhAEgr2&O;BF@x)?KumD|@-&1$E#GA=8n4)Ws>2lV zF=a6N2hlLeglroSX})TbIKo$u6aQjTkWYlkJssHLvlif4zLL9unX z21?c8Vvi0B@LP4&x4y@y+Pb%H*FWs>U}A{FM(ofG14I@JkS*&V<=(cl1r&ZoWLjPY zTb(;}JnQTVn}AM;$;pr8h-|V+b)RUY(~OV#D&K^C2uJEP>NuGUvaW?ol2|kZfpJ7~ zAa{bNsuQCf=6fP<_85>oV3<^X_DZh}GP`t291IQKkjahRqzA!Iq9PI7cEBC($i0mSZQ;_8X6-$GEPWPu9Vd8MyEA^|sD zgAoi-B@WE0L}6AzHLEg1YLVI40}pk#E|zSD$unZ>tKuV_l5tZ+!Y?SzH*vX;8ZF8^ zyH2c2Y0suq{|>6+CyjbT3UN%R-7H-$orpF@kpPzHQQJsMYLKP^aM+1))@QvT$JIg& zbU!zmW+R93!+<=d2zM4GW!c52e(kx4^I)1Rak5{0mIFQ=kZjCi*si16MUW>L^ACtk zi@TNRn-mytf&m5CgYt4;6bKXz2ZN2za$0RlHb$u{xX92D8*uE}d83dW#BiQ8QL(mbLP=8}O%(Qm zNlV)4R)eA!c3z0NaB^7wQe|(9r0;1U-u`~c3~sIb$_U!m%kQjr91H-Hb>N5-kZsR! zacp4Z4glWnqJ27e4QSrzDxljTNnZw!^Q z?mjt}txyk@XW8Ds!E!5C&|{Kc9<);8`bbwX5)Fy-DTGy?rsyp4IKV-ktaF+{dyRl~ zJN-d8`nLBCL^hCqLs$+!2>vCH1^D7`P$P83J8FDhI#FT`8W<1>1T=>rv{6mk8M`s5 z0WSM{37UPkE8^3_7Z5g5d$zm~KO+QiVozRkN?u)O!h zuM>(kWr~AE&oLQN`65w;)0H!0%+ivzyEjZj z^zNNxuJaHr@Zed-klwZTz-~!hnkaINlPVJ81C!9uK`BZ5z7aeBL{u%Y+#w@v$8>*? zC*Y+;#5R(z`+8jGG;*EXLu62sTopzZV=~egGu)hzh!kQ}uC|lUOq;NU z5x!`He>hA!Av!T70lv{UEqWnMz=Jf}3CpwuYlrF*XsE=d9}FI-!?f+{e6RP}V&(Nf z=#c2DQjXH&DAI^gaYSr>UtN=p4v81@2jE#Bq@!ko1_(F&312MxF(}(o{!@1)g7yn8 zpDSsV_!TmXffB^)$s#itxT6#N(|9sD=g$5P>)3IQY9sk*6_=BRmly1FQsW9LG|o&R zS8kxor#D^Cx63h!1=RAqSO?bcQctPGqp;%l0bIu!)Wwb}_yP}1A+8Z;a@ZPD5H$ff z>l%XaOtbW^J&Fv12dd9d$=B&!O{hv^&-}Z_&;nf?m^0O5m0A(P0GnXJ97XNPN_49; z6@-66hUU(uG-woO+DDBtap{+P8Qc=A#rTGHf`ifeTPR%XrHHqnS-eV@_cegle$mWbgL^^K7V?`e54sZCwg_mHGo+Du(Fpxhf=tZPez zL@xsLoY=O;zY9m*J?zE}V|@|pw{V71*rvhXyH+_?7u#`b^fYH;V@wcZRX^VEsOm+U z!&%Aupr$rMEsI~kgBCW~cLo0$OTf<=!H2+%K`Y}bg!v&EopwT8py*u4noMoPzY1Z3 z`d@ue2`OM_?kG(9O^U=K7Ndr{qMk-g5~<6e@NWSZF-^Fu9J9&@`^k#Rad0E#mp9&( zuQ)tOR?5FI4+drOduReT!6~|BdP~pwT z<*T26{rS_cgP%U#{JuT<+q3lP_HFv?D*p8Bk7qx8`1$!ypWgm_{VaYGeNJXa|NN!6 z#i+jj`0J0q{P*a^r_0Ol^^3q$B;=o}>3T)yB}}V;=tW`9Y|=Xri;}77)=#H@C&Z6b z5He=P<$>O9lTbXgSuT&HgRaTvO5cUpscMKF=<6_-pMp)E6sTn~8%4)}k(#pvUYNGP z`UYiwPXl3`%j%ALI7CF<@dIUKuEI1Kbexotpt=2qf~!6cxmBQjXBsavmS>0nK0s2k zHu=Pws!rC80{y`HVC(EqTM;{$>BE<4Vq%7p|gdLjl*HuEp2+zAUfG>~{Tux^>6j}d7E8+)bo z8w|X%U)D4vkbCBbr)M!Ne~BA)1LlG1g1TCGVMe?M5n0Je+pJK z=*Q6!{xQS$IEabPI^d@9%?$lGL7z~Su9V$f+!4H|8Wl-(ME@UL43)p+1> z2m$gKBCrW9!LzXjaSGBFo$A!}wBJ=1Twh&qBa1p!33tAz79zN4nX9%?=exCFJ6(=z|*E47%H2H@bK*1f$10p`v2%@(c7Ni;qaRQQn zCOi{ejBMTs&1!iUq!e>QXWWo}^61zk+uS$oRb3UoQhI;X8mu$${%eR9N{Q<-C612} z-}n%7EApP6z{O04cgkJ?Mh1hL6z>}QQoF_N*%@}$a|0bi%r0BVwVtVodfjt1xc zjlwTP)o4w7)j65nZR<|*=*0Tt2H#23D@S)c3?EaTY2-eXG|DYW`L#?2Eu38QP8jpno>)s+kvA$ zVo0%jS<%uVArLihbOv!3YvlzP*bVx?(N6x9vsfW!w z(R>Jt`*pcU%5)M~l4^ID)*gQk;GjX)^*-6Q8{r5N8HB!f#vKHm1PdbR1s&d90$c`O zj!5Z(aX}tn)QtR)7qgD&N+yaG9XHZ{!?!pG=ljfrB&StbR3N8P;i2}2-7jB zkTwu~b(P|<Mup7TjxnnpWIzx&miB~RbzflypgY}>-@R3TYHhP{xt#oY`ToF&Bz#P-UX zMCcWfXtq?5@bZn(k!TtT{~QTt=K5X}l$ zlT&YLty5Jox{i}?uXVkYSx4X_8q}dASG(}xmpG%c-LqA<{cF6w>yU!b>p1_pDX9wA zAmOpCnW*$6Fb(V+(pwZ?lejqI>0uS$v1_f-Q>X2*2#C9wSYY*^M*G3y6M2nzv1^;I zslI_=@7dP5)7OBY1HC^4G`W_|p_rsNVgKdR%zqNVrc$7_S}4=Vq*(yz%M~dV0Aus; z%4#Z@(i=*&(yEv1c$F}70x{{Fj}a|z#FWcPx9lP|bFVpO&Dt=eiLz*rw3<#Ggs{aJ zsrY`9ZR$dI2rd3%OZep_z!h=fM;EG8B4N8p2Tg{&@+C``S}|K0fS_MDtQTeh$h_SR z{F?fC`D}$W*8ttQx)#$<4^d_>^9DO9W-aHb$JifmDVVT+pc&hcBDz-9y>C;V%*L4N z53!+%b*moIt=e>!Gvz`Prckz=Qsoh0?Rq?Culgj5W9#axc)cZNUwdIe!7yZuhJLPN ziD1=+WL}TM$UyL4b0jivraWysVuyvVjp$*)TSxpsn&C4-7$SQ9Y_?#+7>9RxzsPQ1 zqb4pVCM}H{!hx3FVb+l9Jy08B6Ix5A)WwJ}y?LJ8SI$HKZ!mcE`jOj|TfXEl+HLDh z5;xp9kttMjN@L4u-ePE+)vV0WS*v#Zd}{NFZlwqfsz&R*AmX{7L&zpcuJP<)f(V#F z3a_y{GPso9fE0aC>>`au{E{YQs7J!U8ZNY>nHHzu+0fn>NrH0$);`>c8%GIA(Tj9a zxw##?Auu;^bMi4szi!#1MOf3MnB*zGzpdiy2u7owKG6majAogViw981=;DDt*mBr4 zzzY?Ej|gZ~_P7@2HQoS_9urh#TB8*pdOVi$Cfl4Q4A^9xuiv#R~=JsIlYX-dz$~>t% z(86X6aVmeoDm2BvyRJ0QL!4yl^;A<_g#udc@0!RY&07F}ed8)pItj&0DYKY>D_oA& zrB|*+j+TcAU1!+*f(6`w6vjr(H5KGR8WmnacG%)VeZ$cr>Zk=%gCx^#vkAx5QO_IA zJYLOD5^Xpu;CurbWbx>Z?_eZ3v~RlF^KS{OggO=Jn$d0Ltv|M4w5ig@vhSj=suwQA zbjprPjl$Utrcrp7x=w0`)6EteiiPPa3CtEA4M9qe{>M&*1}?Q)DYI z6x|J%ls#H~Q;sc$i+XA|Pv2)L9s*f?c~_>@)X?5&zf1C|JvW+I`>X`4pn2oTROoD# z>$sQ+ee}6HAXN_SEvrZCZ0fh?++4dGcyHar z%PquP`h^%dU~@udPfg~m=FvcEn}W;f;q$h0bo46&x@kko6nx-D2T6L6^-xCE0wHD; z2~0zP!`P6h;iyyPd9+~;Uu!%qA4)?qUw~f?u0xK6g28tcWK3sNLOn5VOHH4lyjWLP z__l1wSc)~<94((k_5&1$tR;Skl+q9&{C;t)w zIV#7OQ_miD^e|?&f_6E=#qTZ9!YbIfy!DF*-Juv`RcHD2pgDuCUcpacsh%i?$|hBj zt)2KLPO)Kj^$DAM330An2^%VLrhn?u>U*{yL706UpnWIl08AVh zH)^5$+HP8&oiZ0|xGRV>_!r+6V9Na;-4A%ztQ&z)VxJwL0&_UlZ-jYBo(~Op@m*oE zLH2mShu?NSh=*I@ZA)>cnv|`;1Q;Xx5k-{F{%EF)D{)Z!nSUh zSJR}#mle3aA;q)sm1<=U#{7-I4|TC>I~h}IQKKzpaG^LIo(OUAAWer=y<>zHq9vK# zsxTwTjZtqwiF$e|M?I|xaq2{ef|FyNUP7$X5lvSHxyqFGf83TL0(}vIs09K5PsZR! z@M-7^7&L)d*~&cJwukRNennhvO2mzHJBF7)vm0|AgcQ%aqV+L+lMAm@W zTen*W{{Tu~;r_y_QTtVe=gbllTbWKXZZIqf1es$eMq?W0(J!zu-4#NKzb6(p<`Qax zUWk~HVjyA|BF9Q-*DB$Vf&t0{HcA?ko7PR#9015YKCai5=;rjpYJidmi$rGMFh)aU9#vThDXNG=sm5Eh1DBT~=C0_;?+V*%!R7vW|> z;~F^ck@D>Jyz-1r1xtvsUt~t>^iWfxj3lAi9Hhx%RA%cJ^hC&J1wouhE^hViCoobSV#rc%;)$bN-sLNUyO0yyK9`vWaa}*EQ)JMe3}cB; z>s=v6SU3b_NFx#eTHf4)QjHWYv+HD?enF>WVpPA|Yi4rSafi-^XiB^c2yiK|A`l~G zH{ZJqF6~lKZychf#V)4BYS&_{m?Ny>xGA^xASl*7LJmN%W1)*or#c%9EFfm_l;-^N znVCHDt{Upj7}%yc(-(?_b=nz`%X7Ofk(0Ph)0~T9yJDFc0$%E(s-RlE$(E=fGx~X7 z`9>eYE05)zP*(;SpK(&&CW-E(zj#XgP>EFo5|DP4RIbEJpxW#XLu*=3VPu1l>0Z5&iW6owJDuD`&DPYCT;7ZsT+G5 z^7}a9HE2~NuI8;2JQ6p&qZZ_4=1o+{RU+caoC&{d+X6SduM)T$FEtJbzwuz(L0yDe zuKAr)?3Y`*2!-(JaxP>adEalgFe5&~kPsu9DUSQx>9oED`W>7kG#`o(yHc(4#ENzJ7wL%mId(j7x{8q4C66RpP&~$|`_6Svd-`7!6*JgH}cJ4cFa1~c2w&XpA;OO4OmRm4W5KDgy8lTT^H=hJ6yRwDX@Wf9=6#U zmQ8{u`PAkiJIJKM;)xhasBUa2oF54n{lF_)2U#2yJISrN3J*2c1fq}}ZD#A9TFF~p z?G2Q?64q7&f1PGtTd>{));7ov+3w?~(y@lk+44Bl4j;+mK*A4W--w_}Z6;;&9=b8c z;&dZ-MH~87X9ju91x2aHB^|xKI*J6NmZ2^%%T4iXc7w#IUz1sZ(MTp%8_*_0PO4Zh zNWE*yHX`DNE8QnT3a~JDMK80Ps(h^hr+7oMrt^H7wf6nA%U`G zjf=^IpgC&HYmFWi{1yT+RCQii?STm}45G?f#;8O#3(EUV(p4~(6cx2B>EP|F5qo-_ zM~Zsdq++YX%14)i^Z$W=C!le`oZdhag^r*XA#NQaTgTHYG(I)#vl$Att+{VU-A&UN zuh|401=1qZ&DJmBb z`nzk8kKP}uL04hOX)qx2jWe%7utMzG%(5G$uosm-%xOBpQCqi@1=X;U{x|R!ZK9_1 zWPbsR1LJaIZ_~c2CiO-HLTnxinQBd`DU`8kk9pVRkzNnfG+EAW=Qj6t?s4Pdash6G z?gieaYdCHz4%MIq0=BxOaU9_u0`S>P|YMh6G!euytUr=%XU z2CNW0!1S2D2kLTd3K5fC%7NOp#LGV{(TT#Ro{oF9CJS-=Qsn6a@bQbvUPf*1xUKEQ zA+Y-AHeRN)6fAf#R{9;Ta0(uMD;W?G^E}DYqA!ML4~PFVJu{B3+zkn5h=JW^$3K9q z=!ZOCshYK)tiSy;=-A*)<|8|Z$4^awFr!d+2<3-9zrFCG@St!P*=@l%Zp|swwma91 zgxAVmG6U+m!*iVY1R0arsk zfj%kRsv;jkJjgySwJ;PMWuEFM%!lESn!?KHEPrBjOAs^@IH7U6gsqcqLbvu5f9;rF zGo72mqUwMXXAiC4L+CjDj04-?;pCV6?Ij;9=-f#>@Yl;Sp!jY9bBi7-0>y6i5SHG#Eqt&+Z0-}uFp*>mn#HTZV>EHuX- za=#yNu~wx8TT**2Mt&ugaFtD@+&!QRR&i`!1a`?Th&Gq~*~ zeHc`$YcM3a#Vb|GQ>z65DT?zCjhI_R`vQ5jle~5?`**@P8qz z?Ew(Lvxt%GT=iD=@^duIP3TUu#+gqFR_uBnCz|zAae)e%Y!lmmNKLYkPY=?n zw~O$BS|?u2M*m~NA+SFrVG!{AK%HiH-b!|%Vmscy!OfY6*S>kP)$Ao}{KZu$nO)t; zifosPQHd!`h+1hw@bh&h*5Ikh5sUlPI739w^SFwK!4r(S%bTPe@*OM^NEw%yV}U)+ zvSkvl8(>3g)Zjx)wZLeCSV7SMA6&i$8(gLZE~}(mWQJU@H5F>GA%)tI2EaBU4V14V z4Sa2d%enyNS0i*tm0FBQv9?I%+ez7wOuUv4YNTWf?2`3%rDst!m&IuU8uUSeU0)o7 zujwp+O!ByWU(rMdZ;FP!ptZb_yTZlWpm>usn!dPv9a>PP1unBRSvKJ_xO@#RxJ)Zt zmQ7}!EzO;T$N;A7Ov^nh8~>3^nrvF6LJc~kP#bhM zWDjnF5Uo;&(x$cOfu`KG7`e6{Ct9NhC0eQtMmcn+Y{C&)l{%bgu@*@2Oo9!ts?z7W z(c9i)ZoN?{aav!Z^)YD{)O3Z!;qXFeZc3{UzPVWgt=fKc!VnHXr4QoC!A&F5R}Tt( z$w(+R2(F^rlUMO8T@|GVVe^wyycj~#&@U`%u#lR?P#9jblJ(I>)1Tt$`$cy9-^u+r zi}R@{L2vWr<7r&RXXy&VCKcy@dB;`GaOHAyeuOgEq3{F43j{<42{e>snT_;vGn zu!zv}mv`yq{PSvAj9*6Scy+q{{QmNtCD{V*>nZUgf7T}Gde#~jD!nOcV7XNL7of%T5Ty02jIGMDdO0!>kw_t8Cm_u=Cl z_v7WSm-z4R6#oIn|MuN_L)*E8HswAJI1Z@ISNE7Mh*t57NG(U7H|5obOFZrfH=%!X zJkHZJ;^p3cxB__hl)ks`J`#FP{~&aV>DVEf@HrE|yu8I@QH{afJD}Hx&j`OuTp#dz z|MF)j_eFz+)(Tx0_tW3*mS|lpr>kGL(9S^{(}DgG5%qB z`;n}b&1bZ}KEc|0^L#P=Vb0gw<>2$`Gps@M`@@H4K*K)5@5{UE`7LVi=BGbyZ*ZHh zaXn~*!oR(l9DQE@H2?nlZU>zuJHpA4>;Xf*2YfR-hJTc3vcu{$eIy=&#C$7}GjMu! z@-#U6B>2=yqK@GDBi*+ryeWcdoL~Q6JN` zUKa`I_TkF0@u)~aDAA_H93mRvvLYtN?Ttul00+xtJueqhwBAYqejI%(WsMmcBKp`H zfJ_&#jRqyw`a4`eJYW!$Gw;MawQ+Xq=t6u;ys7@rZ92K;$p`TKlQYDaiZlrg^i32U zACG5Wkp$Cmfzl(DHE82>I-SmN8&pc#8|Txfv$2>Ya!-J>qmxnpK|7lcVWOL=el}Y?NRQX?Z>mjszJy8xn(4_(zz_ zhZy1!j9>q$VT|+nIDS0p_sIXlWAhl}QpYDf@_$mwHpY5c+Ox@IqOdcGQ3dg4vxFPf zqD)r3=Wu6n6;Iyd$JeM_?|m}QlFn~Gy`aB7UiRK3%bNszI^HGQBzTLJv;;t~O?w~5 z+jY6^z05Pz(f4RbdIkCq+8Oh7c5dN`XOG^$?p&c)k9t@5d+#b)FSFi@Y>fyO7rjRW zDlPNqZ8}cKg%W%7GWjF^b&K0$uU=%^JWcY>yX5v!kGE%+BN%4MddnZG{68V{W8s%X zP>@8G#oSX4BwL%y`eB+;=kI}A@dgKw{9x~jGDmwTi;WVBvKMx_<+rbbdlp>!8}cw! zY64glO%wt`if-(F#xAQNrOh(koPitjWAxM${_WyV!6wG{rf4-jMhm`@six^{R(bo} zuge9j8REa(GZp$fl6o`pdga}}lM1A74gfVP2HDMGm)4`t`d*&=$G^K#j2hDMprEx+t6bfz~r zskJ<$$)^ZmI?GzMNO>Ocv|DzVrsN_dV1bs_kOllXiEeHM-CX}TvZPT!OB$9j$lo~o z7>3KE76g6M=brqIMt;Qp@hqz$4$d!nl+!%LeBIB|yJRXab$ryYLuNP)ltGn4I`F@Gu>Bg?AAdm_KncjbQ)xQ>fLm?+Tr zCLjR=OvWP91Wkc-qxgRa9Tm^-$8dgk4T;!V&skC#m_~)U4Me+Ibj>uX%p=W8hJON? z*b*i)90@*4G+Hz#p5s^|K;TQ5Ob!EVjc+vJ7s3*$HKm)!G)k=(xF%!is3sUz)p0$0 zII-p!(ddhLwh54kfWCIwn|O}o#(7t3jKqDRq5o)H_O2XmTSdUQ^5{3oM$3zGX4Ym& zz3B<+EY5%Zh z@M7dYL!>|0eQ=x_RB9Ks&u~A7=?guQM<9xfv4qJ4J&wc#i-XZ9;=+Br*&s5^iFg-) z^r=V~$Lb{@7T91HHzn+rs;XIaNpcwx79cMQ2AXdXk_p9r4vomD*@Z>Fk4_|Bs!}v< zVxUrjoMnQF40nrUuOd8->36~^1F14g!i+7aQj&Q##wSjGPB z_tgsIDBiIGk;sSbO|&+t?!cJ1{e(8GRifco$uuDEIwq(}w6#k1k-}#-5e4FJ^Vr@2=LFv)c3ff(z+L^3l^8 zRK^v~W74IU8s(3}(gvSG;>m^hbz3JKBrBCbq-S^q8^Q3HyIdn77TV<5JVyl?o!GN@ zD08nOtY%kFQ4QGvZ$g=v%6)Z-^Lf z39u{8Igi|brb*{&R)5Wn;iv*Y$R6x=QqeXxOJYk^C*x7+@7O-9x;#B(Z^$XzgI;pl z7*VoujEfg!whMUgX%;w`511rPgM1UUm-5BAh_xZATt=Ifk2UHM(4#+SxuA=_xk zp{zp_FK^@ff}OSfTOtGl=L4Ko?7@0ObfxX5ux&4{<0tZ^u+J#hjINVCI1Z<6&=s$& zyw`Abl!yy*gQw{I#RLq#BCZCs6Ozpi1d5$z*s~8rQK!f^cQ+$vdXYQ{g({})},n=>{typeof g.error=="function"&&g.error("Could not find "+i+".")})}e.load=L;function k(f,_,g,C){if(y(f,_)){g();return}D(f,_,g,C)}function y(f,_){const g=document.getElementsByTagName("link");for(let C=0,s=g.length;C{_.removeEventListener("load",i),_.removeEventListener("error",n)},i=t=>{s(),g()},n=t=>{s(),C(t)};_.addEventListener("load",i),_.addEventListener("error",n)}});var we=this&&this.__awaiter||function(Q,e,L,k){function y(D){return D instanceof L?D:new L(function(S){S(D)})}return new(L||(L=Promise))(function(D,S){function f(C){try{g(k.next(C))}catch(s){S(s)}}function _(C){try{g(k.throw(C))}catch(s){S(s)}}function g(C){C.done?D(C.value):y(C.value).then(f,_)}g((k=k.apply(Q,e||[])).next())})};define(ne[3],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.load=e.create=e.setPseudoTranslation=e.getConfiguredDefaultLocale=e.localize=void 0;let L=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;const k="i-default";function y(t,a){let u;return a.length===0?u=t:u=t.replace(/\{(\d+)\}/g,(h,r)=>{const c=r[0],o=a[c];let d=h;return typeof o=="string"?d=o:(typeof o=="number"||typeof o=="boolean"||o===void 0||o===null)&&(d=String(o)),d}),L&&(u="\uFF3B"+u.replace(/[aouei]/g,"$&$&")+"\uFF3D"),u}function D(t,a){let u=t[a];return u||(u=t["*"],u)?u:null}function S(t){return t.charAt(t.length-1)==="/"?t:t+"/"}function f(t,a,u){return we(this,void 0,void 0,function*(){const h=S(t)+S(a)+"vscode/"+S(u),r=yield fetch(h);if(r.ok)return yield r.json();throw new Error(`${r.status} - ${r.statusText}`)})}function _(t){return function(a,u){const h=Array.prototype.slice.call(arguments,2);return y(t[a],h)}}function g(t,a,...u){return y(a,u)}e.localize=g;function C(t){}e.getConfiguredDefaultLocale=C;function s(t){L=t}e.setPseudoTranslation=s;function i(t,a){var u;return{localize:_(a[t]),getConfiguredDefaultLocale:(u=a.getConfiguredDefaultLocale)!==null&&u!==void 0?u:h=>{}}}e.create=i;function n(t,a,u,h){var r;const c=(r=h["vs/nls"])!==null&&r!==void 0?r:{};if(!t||t.length===0)return u({localize:g,getConfiguredDefaultLocale:()=>{var m;return(m=c.availableLanguages)===null||m===void 0?void 0:m["*"]}});const o=c.availableLanguages?D(c.availableLanguages,t):null,d=o===null||o===k;let l=".nls";d||(l=l+"."+o);const p=m=>{Array.isArray(m)?m.localize=_(m):m.localize=_(m[t]),m.getConfiguredDefaultLocale=()=>{var v;return(v=c.availableLanguages)===null||v===void 0?void 0:v["*"]},u(m)};typeof c.loadBundle=="function"?c.loadBundle(t,o,(m,v)=>{m?a([t+".nls"],p):p(v)}):c.translationServiceUrl&&!d?we(this,void 0,void 0,function*(){var m;try{const v=yield f(c.translationServiceUrl,o,t);return p(v)}catch(v){if(!o.includes("-"))return console.error(v),a([t+".nls"],p);try{const b=o.split("-")[0],w=yield f(c.translationServiceUrl,b,t);return(m=c.availableLanguages)!==null&&m!==void 0||(c.availableLanguages={}),c.availableLanguages["*"]=b,p(w)}catch(b){return console.error(b),a([t+".nls"],p)}}}):a([t+l],p,m=>{if(l===".nls"){console.error("Failed trying to load default language strings",m);return}console.error(`Failed to load message bundle for language ${o}. Falling back to the default language:`,m),a([t+".nls"],p)})}e.load=n});/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:Wt,setPrototypeOf:Vt,isFrozen:Yt,getPrototypeOf:Qt,getOwnPropertyDescriptor:Xt}=Object;let{freeze:pt,seal:bt,create:Jt}=Object,{apply:At,construct:Rt}=typeof Reflect<"u"&&Reflect;At||(At=function(e,L,k){return e.apply(L,k)}),pt||(pt=function(e){return e}),bt||(bt=function(e){return e}),Rt||(Rt=function(e,L){return new e(...L)});const ei=Ct(Array.prototype.forEach),zt=Ct(Array.prototype.pop),It=Ct(Array.prototype.push),Tt=Ct(String.prototype.toLowerCase),Pt=Ct(String.prototype.toString),ti=Ct(String.prototype.match),_t=Ct(String.prototype.replace),ii=Ct(String.prototype.indexOf),ni=Ct(String.prototype.trim),vt=Ct(RegExp.prototype.test),kt=si(TypeError);function Ct(Q){return function(e){for(var L=arguments.length,k=new Array(L>1?L-1:0),y=1;y/gm),di=bt(/\${[\w\W]*}/gm),ci=bt(/^data-[\-\w.\u00B7-\uFFFF]/),ui=bt(/^aria-[\-\w]+$/),jt=bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),hi=bt(/^(?:\w+script|data):/i),gi=bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),$t=bt(/^html$/i);var Gt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ai,ERB_EXPR:li,TMPLIT_EXPR:di,DATA_ATTR:ci,ARIA_ATTR:ui,IS_ALLOWED_URI:jt,IS_SCRIPT_OR_DATA:hi,ATTR_WHITESPACE:gi,DOCTYPE_NAME:$t});const fi=()=>typeof window>"u"?null:window,mi=function(e,L){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let k=null;const y="data-tt-policy-suffix";L&&L.hasAttribute(y)&&(k=L.getAttribute(y));const D="dompurify"+(k?"#"+k:"");try{return e.createPolicy(D,{createHTML(S){return S},createScriptURL(S){return S}})}catch{return console.warn("TrustedTypes policy "+D+" could not be created."),null}};function Zt(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:fi();const e=Be=>Zt(Be);if(e.version="3.0.5",e.removed=[],!Q||!Q.document||Q.document.nodeType!==9)return e.isSupported=!1,e;const L=Q.document,k=L.currentScript;let{document:y}=Q;const{DocumentFragment:D,HTMLTemplateElement:S,Node:f,Element:_,NodeFilter:g,NamedNodeMap:C=Q.NamedNodeMap||Q.MozNamedAttrMap,HTMLFormElement:s,DOMParser:i,trustedTypes:n}=Q,t=_.prototype,a=Nt(t,"cloneNode"),u=Nt(t,"nextSibling"),h=Nt(t,"childNodes"),r=Nt(t,"parentNode");if(typeof S=="function"){const Be=y.createElement("template");Be.content&&Be.content.ownerDocument&&(y=Be.content.ownerDocument)}let c,o="";const{implementation:d,createNodeIterator:l,createDocumentFragment:p,getElementsByTagName:m}=y,{importNode:v}=L;let b={};e.isSupported=typeof Wt=="function"&&typeof r=="function"&&d&&d.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:w,ERB_EXPR:E,TMPLIT_EXPR:I,DATA_ATTR:M,ARIA_ATTR:P,IS_SCRIPT_OR_DATA:x,ATTR_WHITESPACE:T}=Gt;let{IS_ALLOWED_URI:A}=Gt,N=null;const F=Je({},[...Ht,...Ot,...Ft,...xt,...Ut]);let O=null;const W=Je({},[...Kt,...Bt,...qt,...Mt]);let U=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),j=null,R=null,K=!0,G=!0,Z=!1,J=!0,X=!1,H=!1,B=!1,V=!1,Y=!1,ie=!1,ae=!1,ce=!0,de=!1;const he="user-content-";let ue=!0,te=!1,q={},z=null;const ee=Je({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $=null;const re=Je({},["audio","video","img","source","image","track"]);let oe=null;const ge=Je({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ve="http://www.w3.org/1998/Math/MathML",Se="http://www.w3.org/2000/svg",Le="http://www.w3.org/1999/xhtml";let De=Le,ye=!1,Ee=null;const Me=Je({},[ve,Se,Le],Pt);let Pe;const Fe=["application/xhtml+xml","text/html"],_e="text/html";let me,le=null;const pe=y.createElement("form"),Ce=function(Te){return Te instanceof RegExp||Te instanceof Function},be=function(Te){if(!(le&&le===Te)){if((!Te||typeof Te!="object")&&(Te={}),Te=Et(Te),Pe=Fe.indexOf(Te.PARSER_MEDIA_TYPE)===-1?Pe=_e:Pe=Te.PARSER_MEDIA_TYPE,me=Pe==="application/xhtml+xml"?Pt:Tt,N="ALLOWED_TAGS"in Te?Je({},Te.ALLOWED_TAGS,me):F,O="ALLOWED_ATTR"in Te?Je({},Te.ALLOWED_ATTR,me):W,Ee="ALLOWED_NAMESPACES"in Te?Je({},Te.ALLOWED_NAMESPACES,Pt):Me,oe="ADD_URI_SAFE_ATTR"in Te?Je(Et(ge),Te.ADD_URI_SAFE_ATTR,me):ge,$="ADD_DATA_URI_TAGS"in Te?Je(Et(re),Te.ADD_DATA_URI_TAGS,me):re,z="FORBID_CONTENTS"in Te?Je({},Te.FORBID_CONTENTS,me):ee,j="FORBID_TAGS"in Te?Je({},Te.FORBID_TAGS,me):{},R="FORBID_ATTR"in Te?Je({},Te.FORBID_ATTR,me):{},q="USE_PROFILES"in Te?Te.USE_PROFILES:!1,K=Te.ALLOW_ARIA_ATTR!==!1,G=Te.ALLOW_DATA_ATTR!==!1,Z=Te.ALLOW_UNKNOWN_PROTOCOLS||!1,J=Te.ALLOW_SELF_CLOSE_IN_ATTR!==!1,X=Te.SAFE_FOR_TEMPLATES||!1,H=Te.WHOLE_DOCUMENT||!1,Y=Te.RETURN_DOM||!1,ie=Te.RETURN_DOM_FRAGMENT||!1,ae=Te.RETURN_TRUSTED_TYPE||!1,V=Te.FORCE_BODY||!1,ce=Te.SANITIZE_DOM!==!1,de=Te.SANITIZE_NAMED_PROPS||!1,ue=Te.KEEP_CONTENT!==!1,te=Te.IN_PLACE||!1,A=Te.ALLOWED_URI_REGEXP||jt,De=Te.NAMESPACE||Le,U=Te.CUSTOM_ELEMENT_HANDLING||{},Te.CUSTOM_ELEMENT_HANDLING&&Ce(Te.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=Te.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Te.CUSTOM_ELEMENT_HANDLING&&Ce(Te.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=Te.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Te.CUSTOM_ELEMENT_HANDLING&&typeof Te.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(U.allowCustomizedBuiltInElements=Te.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(G=!1),ie&&(Y=!0),q&&(N=Je({},[...Ut]),O=[],q.html===!0&&(Je(N,Ht),Je(O,Kt)),q.svg===!0&&(Je(N,Ot),Je(O,Bt),Je(O,Mt)),q.svgFilters===!0&&(Je(N,Ft),Je(O,Bt),Je(O,Mt)),q.mathMl===!0&&(Je(N,xt),Je(O,qt),Je(O,Mt))),Te.ADD_TAGS&&(N===F&&(N=Et(N)),Je(N,Te.ADD_TAGS,me)),Te.ADD_ATTR&&(O===W&&(O=Et(O)),Je(O,Te.ADD_ATTR,me)),Te.ADD_URI_SAFE_ATTR&&Je(oe,Te.ADD_URI_SAFE_ATTR,me),Te.FORBID_CONTENTS&&(z===ee&&(z=Et(z)),Je(z,Te.FORBID_CONTENTS,me)),ue&&(N["#text"]=!0),H&&Je(N,["html","head","body"]),N.table&&(Je(N,["tbody"]),delete j.tbody),Te.TRUSTED_TYPES_POLICY){if(typeof Te.TRUSTED_TYPES_POLICY.createHTML!="function")throw kt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Te.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw kt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');c=Te.TRUSTED_TYPES_POLICY,o=c.createHTML("")}else c===void 0&&(c=mi(n,k)),c!==null&&typeof o=="string"&&(o=c.createHTML(""));pt&&pt(Te),le=Te}},Ie=Je({},["mi","mo","mn","ms","mtext"]),Ne=Je({},["foreignobject","desc","title","annotation-xml"]),Re=Je({},["title","style","font","a","script"]),Ve=Je({},Ot);Je(Ve,Ft),Je(Ve,oi);const ze=Je({},xt);Je(ze,ri);const We=function(Te){let xe=r(Te);(!xe||!xe.tagName)&&(xe={namespaceURI:De,tagName:"template"});const He=Tt(Te.tagName),Ye=Tt(xe.tagName);return Ee[Te.namespaceURI]?Te.namespaceURI===Se?xe.namespaceURI===Le?He==="svg":xe.namespaceURI===ve?He==="svg"&&(Ye==="annotation-xml"||Ie[Ye]):!!Ve[He]:Te.namespaceURI===ve?xe.namespaceURI===Le?He==="math":xe.namespaceURI===Se?He==="math"&&Ne[Ye]:!!ze[He]:Te.namespaceURI===Le?xe.namespaceURI===Se&&!Ne[Ye]||xe.namespaceURI===ve&&!Ie[Ye]?!1:!ze[He]&&(Re[He]||!Ve[He]):!!(Pe==="application/xhtml+xml"&&Ee[Te.namespaceURI]):!1},qe=function(Te){It(e.removed,{element:Te});try{Te.parentNode.removeChild(Te)}catch{Te.remove()}},Oe=function(Te,xe){try{It(e.removed,{attribute:xe.getAttributeNode(Te),from:xe})}catch{It(e.removed,{attribute:null,from:xe})}if(xe.removeAttribute(Te),Te==="is"&&!O[Te])if(Y||ie)try{qe(xe)}catch{}else try{xe.setAttribute(Te,"")}catch{}},Ge=function(Te){let xe,He;if(V)Te=""+Te;else{const Xe=ti(Te,/^[\r\n\t ]+/);He=Xe&&Xe[0]}Pe==="application/xhtml+xml"&&De===Le&&(Te=''+Te+"");const Ye=c?c.createHTML(Te):Te;if(De===Le)try{xe=new i().parseFromString(Ye,Pe)}catch{}if(!xe||!xe.documentElement){xe=d.createDocument(De,"template",null);try{xe.documentElement.innerHTML=ye?o:Ye}catch{}}const Ze=xe.body||xe.documentElement;return Te&&He&&Ze.insertBefore(y.createTextNode(He),Ze.childNodes[0]||null),De===Le?m.call(xe,H?"html":"body")[0]:H?xe.documentElement:Ze},Qe=function(Te){return l.call(Te.ownerDocument||Te,Te,g.SHOW_ELEMENT|g.SHOW_COMMENT|g.SHOW_TEXT,null,!1)},st=function(Te){return Te instanceof s&&(typeof Te.nodeName!="string"||typeof Te.textContent!="string"||typeof Te.removeChild!="function"||!(Te.attributes instanceof C)||typeof Te.removeAttribute!="function"||typeof Te.setAttribute!="function"||typeof Te.namespaceURI!="string"||typeof Te.insertBefore!="function"||typeof Te.hasChildNodes!="function")},nt=function(Te){return typeof f=="object"?Te instanceof f:Te&&typeof Te=="object"&&typeof Te.nodeType=="number"&&typeof Te.nodeName=="string"},ot=function(Te,xe,He){b[Te]&&ei(b[Te],Ye=>{Ye.call(e,xe,He,le)})},ct=function(Te){let xe;if(ot("beforeSanitizeElements",Te,null),st(Te))return qe(Te),!0;const He=me(Te.nodeName);if(ot("uponSanitizeElement",Te,{tagName:He,allowedTags:N}),Te.hasChildNodes()&&!nt(Te.firstElementChild)&&(!nt(Te.content)||!nt(Te.content.firstElementChild))&&vt(/<[/\w]/g,Te.innerHTML)&&vt(/<[/\w]/g,Te.textContent))return qe(Te),!0;if(!N[He]||j[He]){if(!j[He]&>(He)&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,He)||U.tagNameCheck instanceof Function&&U.tagNameCheck(He)))return!1;if(ue&&!z[He]){const Ye=r(Te)||Te.parentNode,Ze=h(Te)||Te.childNodes;if(Ze&&Ye){const Xe=Ze.length;for(let je=Xe-1;je>=0;--je)Ye.insertBefore(a(Ze[je],!0),u(Te))}}return qe(Te),!0}return Te instanceof _&&!We(Te)||(He==="noscript"||He==="noembed"||He==="noframes")&&vt(/<\/no(script|embed|frames)/i,Te.innerHTML)?(qe(Te),!0):(X&&Te.nodeType===3&&(xe=Te.textContent,xe=_t(xe,w," "),xe=_t(xe,E," "),xe=_t(xe,I," "),Te.textContent!==xe&&(It(e.removed,{element:Te.cloneNode()}),Te.textContent=xe)),ot("afterSanitizeElements",Te,null),!1)},lt=function(Te,xe,He){if(ce&&(xe==="id"||xe==="name")&&(He in y||He in pe))return!1;if(!(G&&!R[xe]&&vt(M,xe))){if(!(K&&vt(P,xe))){if(!O[xe]||R[xe]){if(!(gt(Te)&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,Te)||U.tagNameCheck instanceof Function&&U.tagNameCheck(Te))&&(U.attributeNameCheck instanceof RegExp&&vt(U.attributeNameCheck,xe)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(xe))||xe==="is"&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,He)||U.tagNameCheck instanceof Function&&U.tagNameCheck(He))))return!1}else if(!oe[xe]){if(!vt(A,_t(He,T,""))){if(!((xe==="src"||xe==="xlink:href"||xe==="href")&&Te!=="script"&&ii(He,"data:")===0&&$[Te])){if(!(Z&&!vt(x,_t(He,T,"")))){if(He)return!1}}}}}}return!0},gt=function(Te){return Te.indexOf("-")>0},at=function(Te){let xe,He,Ye,Ze;ot("beforeSanitizeAttributes",Te,null);const{attributes:Xe}=Te;if(!Xe)return;const je={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:O};for(Ze=Xe.length;Ze--;){xe=Xe[Ze];const{name:Ae,namespaceURI:Ue}=xe;if(He=Ae==="value"?xe.value:ni(xe.value),Ye=me(Ae),je.attrName=Ye,je.attrValue=He,je.keepAttr=!0,je.forceKeepAttr=void 0,ot("uponSanitizeAttribute",Te,je),He=je.attrValue,je.forceKeepAttr||(Oe(Ae,Te),!je.keepAttr))continue;if(!J&&vt(/\/>/i,He)){Oe(Ae,Te);continue}X&&(He=_t(He,w," "),He=_t(He,E," "),He=_t(He,I," "));const Ke=me(Te.nodeName);if(lt(Ke,Ye,He)){if(de&&(Ye==="id"||Ye==="name")&&(Oe(Ae,Te),He=he+He),c&&typeof n=="object"&&typeof n.getAttributeType=="function"&&!Ue)switch(n.getAttributeType(Ke,Ye)){case"TrustedHTML":{He=c.createHTML(He);break}case"TrustedScriptURL":{He=c.createScriptURL(He);break}}try{Ue?Te.setAttributeNS(Ue,Ae,He):Te.setAttribute(Ae,He),zt(e.removed)}catch{}}}ot("afterSanitizeAttributes",Te,null)},ht=function Be(Te){let xe;const He=Qe(Te);for(ot("beforeSanitizeShadowDOM",Te,null);xe=He.nextNode();)ot("uponSanitizeShadowNode",xe,null),!ct(xe)&&(xe.content instanceof D&&Be(xe.content),at(xe));ot("afterSanitizeShadowDOM",Te,null)};return e.sanitize=function(Be){let Te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},xe,He,Ye,Ze;if(ye=!Be,ye&&(Be=""),typeof Be!="string"&&!nt(Be))if(typeof Be.toString=="function"){if(Be=Be.toString(),typeof Be!="string")throw kt("dirty is not a string, aborting")}else throw kt("toString is not a function");if(!e.isSupported)return Be;if(B||be(Te),e.removed=[],typeof Be=="string"&&(te=!1),te){if(Be.nodeName){const Ae=me(Be.nodeName);if(!N[Ae]||j[Ae])throw kt("root node is forbidden and cannot be sanitized in-place")}}else if(Be instanceof f)xe=Ge(""),He=xe.ownerDocument.importNode(Be,!0),He.nodeType===1&&He.nodeName==="BODY"||He.nodeName==="HTML"?xe=He:xe.appendChild(He);else{if(!Y&&!X&&!H&&Be.indexOf("<")===-1)return c&&ae?c.createHTML(Be):Be;if(xe=Ge(Be),!xe)return Y?null:ae?o:""}xe&&V&&qe(xe.firstChild);const Xe=Qe(te?Be:xe);for(;Ye=Xe.nextNode();)ct(Ye)||(Ye.content instanceof D&&ht(Ye.content),at(Ye));if(te)return Be;if(Y){if(ie)for(Ze=p.call(xe.ownerDocument);xe.firstChild;)Ze.appendChild(xe.firstChild);else Ze=xe;return(O.shadowroot||O.shadowrootmode)&&(Ze=v.call(L,Ze,!0)),Ze}let je=H?xe.outerHTML:xe.innerHTML;return H&&N["!doctype"]&&xe.ownerDocument&&xe.ownerDocument.doctype&&xe.ownerDocument.doctype.name&&vt($t,xe.ownerDocument.doctype.name)&&(je=" -`+je),X&&(je=_t(je,w," "),je=_t(je,E," "),je=_t(je,I," ")),c&&ae?c.createHTML(je):je},e.setConfig=function(Be){be(Be),B=!0},e.clearConfig=function(){le=null,B=!1},e.isValidAttribute=function(Be,Te,xe){le||be({});const He=me(Be),Ye=me(Te);return lt(He,Ye,xe)},e.addHook=function(Be,Te){typeof Te=="function"&&(b[Be]=b[Be]||[],It(b[Be],Te))},e.removeHook=function(Be){if(b[Be])return zt(b[Be])},e.removeHooks=function(Be){b[Be]&&(b[Be]=[])},e.removeAllHooks=function(){b={}},e}var pi=Zt();define("vs/base/browser/dompurify/dompurify",function(){return pi}),define(ne[35],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createFastDomNode=e.FastDomNode=void 0;class L{constructor(S){this.domNode=S,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(S){const f=k(S);this._maxWidth!==f&&(this._maxWidth=f,this.domNode.style.maxWidth=this._maxWidth)}setWidth(S){const f=k(S);this._width!==f&&(this._width=f,this.domNode.style.width=this._width)}setHeight(S){const f=k(S);this._height!==f&&(this._height=f,this.domNode.style.height=this._height)}setTop(S){const f=k(S);this._top!==f&&(this._top=f,this.domNode.style.top=this._top)}setLeft(S){const f=k(S);this._left!==f&&(this._left=f,this.domNode.style.left=this._left)}setBottom(S){const f=k(S);this._bottom!==f&&(this._bottom=f,this.domNode.style.bottom=this._bottom)}setRight(S){const f=k(S);this._right!==f&&(this._right=f,this.domNode.style.right=this._right)}setPaddingLeft(S){const f=k(S);this._paddingLeft!==f&&(this._paddingLeft=f,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(S){this._fontFamily!==S&&(this._fontFamily=S,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(S){this._fontWeight!==S&&(this._fontWeight=S,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(S){const f=k(S);this._fontSize!==f&&(this._fontSize=f,this.domNode.style.fontSize=this._fontSize)}setFontStyle(S){this._fontStyle!==S&&(this._fontStyle=S,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(S){this._fontFeatureSettings!==S&&(this._fontFeatureSettings=S,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(S){this._fontVariationSettings!==S&&(this._fontVariationSettings=S,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(S){this._textDecoration!==S&&(this._textDecoration=S,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(S){const f=k(S);this._lineHeight!==f&&(this._lineHeight=f,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(S){const f=k(S);this._letterSpacing!==f&&(this._letterSpacing=f,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(S){this._className!==S&&(this._className=S,this.domNode.className=this._className)}toggleClassName(S,f){this.domNode.classList.toggle(S,f),this._className=this.domNode.className}setDisplay(S){this._display!==S&&(this._display=S,this.domNode.style.display=this._display)}setPosition(S){this._position!==S&&(this._position=S,this.domNode.style.position=this._position)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this.domNode.style.visibility=this._visibility)}setColor(S){this._color!==S&&(this._color=S,this.domNode.style.color=this._color)}setBackgroundColor(S){this._backgroundColor!==S&&(this._backgroundColor=S,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(S){this._layerHint!==S&&(this._layerHint=S,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(S){this._boxShadow!==S&&(this._boxShadow=S,this.domNode.style.boxShadow=S)}setContain(S){this._contain!==S&&(this._contain=S,this.domNode.style.contain=this._contain)}setAttribute(S,f){this.domNode.setAttribute(S,f)}removeAttribute(S){this.domNode.removeAttribute(S)}appendChild(S){this.domNode.appendChild(S.domNode)}removeChild(S){this.domNode.removeChild(S.domNode)}}e.FastDomNode=L;function k(D){return typeof D=="number"?`${D}px`:D}function y(D){return new L(D)}e.createFastDomNode=y}),define(ne[380],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IframeUtils=void 0;let L=!1,k=null;function y(S){if(!S.parent||S.parent===S)return null;try{const f=S.location,_=S.parent.location;if(f.origin!=="null"&&_.origin!=="null"&&f.origin!==_.origin)return L=!0,null}catch{return L=!0,null}return S.parent}class D{static getSameOriginWindowChain(){if(!k){k=[];let f=window,_;do _=y(f),_?k.push({window:f,iframeElement:f.frameElement||null}):k.push({window:f,iframeElement:null}),f=_;while(f)}return k.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(f,_){if(!_||f===_)return{top:0,left:0};let g=0,C=0;const s=this.getSameOriginWindowChain();for(const i of s){if(g+=i.window.scrollY,C+=i.window.scrollX,i.window===_||!i.iframeElement)break;const n=i.iframeElement.getBoundingClientRect();g+=n.top,C+=n.left}return{top:g,left:C}}}e.IframeUtils=D}),define(ne[260],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.inputLatency=void 0;var L;(function(k){const y={total:0,min:Number.MAX_VALUE,max:0},D=Object.assign({},y),S=Object.assign({},y),f=Object.assign({},y);let _=0;const g={keydown:0,input:0,render:0};function C(){o(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),g.keydown=1,queueMicrotask(s)}k.onKeyDown=C;function s(){g.keydown===1&&(performance.mark("keydown/end"),g.keydown=2)}function i(){performance.mark("input/start"),g.input=1,c()}k.onBeforeInput=i;function n(){g.input===0&&i(),queueMicrotask(t)}k.onInput=n;function t(){g.input===1&&(performance.mark("input/end"),g.input=2)}function a(){o()}k.onKeyUp=a;function u(){o()}k.onSelectionChange=u;function h(){g.keydown===2&&g.input===2&&g.render===0&&(performance.mark("render/start"),g.render=1,queueMicrotask(r),c())}k.onRenderStart=h;function r(){g.render===1&&(performance.mark("render/end"),g.render=2)}function c(){setTimeout(o)}function o(){g.keydown===2&&g.input===2&&g.render===2&&(performance.mark("inputlatency/end"),performance.measure("keydown","keydown/start","keydown/end"),performance.measure("input","input/start","input/end"),performance.measure("render","render/start","render/end"),performance.measure("inputlatency","inputlatency/start","inputlatency/end"),d("keydown",y),d("input",D),d("render",S),d("inputlatency",f),_++,l())}function d(b,w){const E=performance.getEntriesByName(b)[0].duration;w.total+=E,w.min=Math.min(w.min,E),w.max=Math.max(w.max,E)}function l(){performance.clearMarks("keydown/start"),performance.clearMarks("keydown/end"),performance.clearMarks("input/start"),performance.clearMarks("input/end"),performance.clearMarks("render/start"),performance.clearMarks("render/end"),performance.clearMarks("inputlatency/start"),performance.clearMarks("inputlatency/end"),performance.clearMeasures("keydown"),performance.clearMeasures("input"),performance.clearMeasures("render"),performance.clearMeasures("inputlatency"),g.keydown=0,g.input=0,g.render=0}function p(){if(_===0)return;const b={keydown:m(y),input:m(D),render:m(S),total:m(f),sampleCount:_};return v(y),v(D),v(S),v(f),_=0,b}k.getAndClearMeasurements=p;function m(b){return{average:b.total/_,max:b.max,min:b.min}}function v(b){b.total=0,b.min=Number.MAX_VALUE,b.max=0}})(L||(e.inputLatency=L={}))}),define(ne[381],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ListError=void 0;class L extends Error{constructor(y,D){super(`ListError [${y}] ${D}`)}}e.ListError=L}),define(ne[382],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CombinedSpliceable=void 0;class L{constructor(y){this.spliceables=y}splice(y,D,S){this.spliceables.forEach(f=>f.splice(y,D,S))}}e.CombinedSpliceable=L}),define(ne[195],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarState=void 0;const L=20;class k{constructor(D,S,f,_,g,C){this._scrollbarSize=Math.round(S),this._oppositeScrollbarSize=Math.round(f),this._arrowSize=Math.round(D),this._visibleSize=_,this._scrollSize=g,this._scrollPosition=C,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new k(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(D){const S=Math.round(D);return this._visibleSize!==S?(this._visibleSize=S,this._refreshComputedValues(),!0):!1}setScrollSize(D){const S=Math.round(D);return this._scrollSize!==S?(this._scrollSize=S,this._refreshComputedValues(),!0):!1}setScrollPosition(D){const S=Math.round(D);return this._scrollPosition!==S?(this._scrollPosition=S,this._refreshComputedValues(),!0):!1}setScrollbarSize(D){this._scrollbarSize=Math.round(D)}setOppositeScrollbarSize(D){this._oppositeScrollbarSize=Math.round(D)}static _computeValues(D,S,f,_,g){const C=Math.max(0,f-D),s=Math.max(0,C-2*S),i=_>0&&_>f;if(!i)return{computedAvailableSize:Math.round(C),computedIsNeeded:i,computedSliderSize:Math.round(s),computedSliderRatio:0,computedSliderPosition:0};const n=Math.round(Math.max(L,Math.floor(f*s/_))),t=(s-n)/(_-f),a=g*t;return{computedAvailableSize:Math.round(C),computedIsNeeded:i,computedSliderSize:Math.round(n),computedSliderRatio:t,computedSliderPosition:Math.round(a)}}_refreshComputedValues(){const D=k._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=D.computedAvailableSize,this._computedIsNeeded=D.computedIsNeeded,this._computedSliderSize=D.computedSliderSize,this._computedSliderRatio=D.computedSliderRatio,this._computedSliderPosition=D.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize-this._computedSliderSize/2;return Math.round(S/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize;let f=this._scrollPosition;return SZ===J){if(R===K)return!0;if(!R||!K||R.length!==K.length)return!1;for(let Z=0,J=R.length;ZG(R[Z],K))}e.binarySearch=S;function f(R,K){let G=0,Z=R-1;for(;G<=Z;){const J=(G+Z)/2|0,X=K(J);if(X<0)G=J+1;else if(X>0)Z=J-1;else return J}return-(G+1)}e.binarySearch2=f;function _(R,K){let G=0,Z=R.length;if(Z===0)return 0;for(;G=K.length)throw new TypeError("invalid index");const Z=K[Math.floor(K.length*Math.random())],J=[],X=[],H=[];for(const B of K){const V=G(B,Z);V<0?J.push(B):V>0?X.push(B):H.push(B)}return R!!K)}e.coalesce=s;function i(R){let K=0;for(let G=0;G0}e.isNonEmptyArray=t;function a(R,K=G=>G){const G=new Set;return R.filter(Z=>{const J=K(Z);return G.has(J)?!1:(G.add(J),!0)})}e.distinct=a;function u(R,K){const G=h(R,K);if(G!==-1)return R[G]}e.findLast=u;function h(R,K){for(let G=R.length-1;G>=0;G--){const Z=R[G];if(K(Z))return G}return-1}e.findLastIndex=h;function r(R,K){return R.length>0?R[0]:K}e.firstOrDefault=r;function c(R,K){let G=typeof K=="number"?R:0;typeof K=="number"?G=R:(G=0,K=R);const Z=[];if(G<=K)for(let J=G;JK;J--)Z.push(J);return Z}e.range=c;function o(R,K,G){const Z=R.slice(0,K),J=R.slice(K);return Z.concat(G,J)}e.arrayInsert=o;function d(R,K){const G=R.indexOf(K);G>-1&&(R.splice(G,1),R.unshift(K))}e.pushToStart=d;function l(R,K){const G=R.indexOf(K);G>-1&&(R.splice(G,1),R.push(K))}e.pushToEnd=l;function p(R,K){for(const G of K)R.push(G)}e.pushMany=p;function m(R){return Array.isArray(R)?R:[R]}e.asArray=m;function v(R,K){for(const G of R){const Z=K(G);if(Z!==void 0)return Z}}e.mapFind=v;function b(R,K,G){const Z=E(R,K),J=R.length,X=G.length;R.length=J+X;for(let H=J-1;H>=Z;H--)R[H+X]=R[H];for(let H=0;H0}R.isGreaterThan=Z;function J(X){return X===0}R.isNeitherLessOrGreaterThan=J,R.greaterThan=1,R.lessThan=-1,R.neitherLessOrGreaterThan=0})(I||(e.CompareResult=I={}));function M(R,K){return(G,Z)=>K(R(G),R(Z))}e.compareBy=M;function P(...R){return(K,G)=>{for(const Z of R){const J=Z(K,G);if(!I.isNeitherLessOrGreaterThan(J))return J}return I.neitherLessOrGreaterThan}}e.tieBreakComparators=P;const x=(R,K)=>R-K;e.numberComparator=x;const T=(R,K)=>(0,e.numberComparator)(R?1:0,K?1:0);e.booleanComparator=T;function A(R){return(K,G)=>-R(K,G)}e.reverseOrder=A;function N(R,K){if(R.length===0)return;let G=R[0];for(let Z=1;Z0&&(G=J)}return G}e.findMaxBy=N;function F(R,K){if(R.length===0)return;let G=R[0];for(let Z=1;Z=0&&(G=J)}return G}e.findLastMaxBy=F;function O(R,K){return N(R,(G,Z)=>-K(G,Z))}e.findMinBy=O;function W(R,K){if(R.length===0)return-1;let G=0;for(let Z=1;Z0&&(G=Z)}return G}e.findMaxIdxBy=W;class U{constructor(K){this.items=K,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(K){let G=this.firstIdx;for(;G=0&&K(this.items[G]);)G--;const Z=G===this.lastIdx?null:this.items.slice(G+1,this.lastIdx+1);return this.lastIdx=G,Z}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const K=this.items[this.firstIdx];return this.firstIdx++,K}takeCount(K){const G=this.items.slice(this.firstIdx,this.firstIdx+K);return this.firstIdx+=K,G}}e.ArrayQueue=U;class j{constructor(K){this.iterate=K}toArray(){const K=[];return this.iterate(G=>(K.push(G),!0)),K}filter(K){return new j(G=>this.iterate(Z=>K(Z)?G(Z):!0))}map(K){return new j(G=>this.iterate(Z=>G(K(Z))))}findLast(K){let G;return this.iterate(Z=>(K(Z)&&(G=Z),!0)),G}findLastMaxBy(K){let G,Z=!0;return this.iterate(J=>((Z||I.isGreaterThan(K(J,G)))&&(Z=!1,G=J),!0)),G}}e.CallbackIterable=j,j.empty=new j(R=>{})}),define(ne[261],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CachedFunction=e.LRUCachedFunction=void 0;class L{constructor(D){this.fn=D,this.lastCache=void 0,this.lastArgKey=void 0}get(D){const S=JSON.stringify(D);return this.lastArgKey!==S&&(this.lastArgKey=S,this.lastCache=this.fn(D)),this.lastCache}}e.LRUCachedFunction=L;class k{get cachedValues(){return this._map}constructor(D){this.fn=D,this._map=new Map}get(D){if(this._map.has(D))return this._map.get(D);const S=this.fn(D);return this._map.set(D,S),S}}e.CachedFunction=k}),define(ne[196],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SetMap=void 0;class L{constructor(){this.map=new Map}add(y,D){let S=this.map.get(y);S||(S=new Set,this.map.set(y,S)),S.add(D)}delete(y,D){const S=this.map.get(y);S&&(S.delete(D),S.size===0&&this.map.delete(y))}forEach(y,D){const S=this.map.get(y);S&&S.forEach(D)}get(y){const D=this.map.get(y);return D||new Set}}e.SetMap=L}),define(ne[38],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Color=e.HSVA=e.HSLA=e.RGBA=void 0;function L(f,_){const g=Math.pow(10,_);return Math.round(f*g)/g}class k{constructor(_,g,C,s=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,_))|0,this.g=Math.min(255,Math.max(0,g))|0,this.b=Math.min(255,Math.max(0,C))|0,this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.r===g.r&&_.g===g.g&&_.b===g.b&&_.a===g.a}}e.RGBA=k;class y{constructor(_,g,C,s){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,_),0)|0,this.s=L(Math.max(Math.min(1,g),0),3),this.l=L(Math.max(Math.min(1,C),0),3),this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.h===g.h&&_.s===g.s&&_.l===g.l&&_.a===g.a}static fromRGBA(_){const g=_.r/255,C=_.g/255,s=_.b/255,i=_.a,n=Math.max(g,C,s),t=Math.min(g,C,s);let a=0,u=0;const h=(t+n)/2,r=n-t;if(r>0){switch(u=Math.min(h<=.5?r/(2*h):r/(2-2*h),1),n){case g:a=(C-s)/r+(C1&&(C-=1),C<1/6?_+(g-_)*6*C:C<1/2?g:C<2/3?_+(g-_)*(2/3-C)*6:_}static toRGBA(_){const g=_.h/360,{s:C,l:s,a:i}=_;let n,t,a;if(C===0)n=t=a=s;else{const u=s<.5?s*(1+C):s+C-s*C,h=2*s-u;n=y._hue2rgb(h,u,g+1/3),t=y._hue2rgb(h,u,g),a=y._hue2rgb(h,u,g-1/3)}return new k(Math.round(n*255),Math.round(t*255),Math.round(a*255),i)}}e.HSLA=y;class D{constructor(_,g,C,s){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,_),0)|0,this.s=L(Math.max(Math.min(1,g),0),3),this.v=L(Math.max(Math.min(1,C),0),3),this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.h===g.h&&_.s===g.s&&_.v===g.v&&_.a===g.a}static fromRGBA(_){const g=_.r/255,C=_.g/255,s=_.b/255,i=Math.max(g,C,s),n=Math.min(g,C,s),t=i-n,a=i===0?0:t/i;let u;return t===0?u=0:i===g?u=((C-s)/t%6+6)%6:i===C?u=(s-g)/t+2:u=(g-C)/t+4,new D(Math.round(u*60),a,i,_.a)}static toRGBA(_){const{h:g,s:C,v:s,a:i}=_,n=s*C,t=n*(1-Math.abs(g/60%2-1)),a=s-n;let[u,h,r]=[0,0,0];return g<60?(u=n,h=t):g<120?(u=t,h=n):g<180?(h=n,r=t):g<240?(h=t,r=n):g<300?(u=t,r=n):g<=360&&(u=n,r=t),u=Math.round((u+a)*255),h=Math.round((h+a)*255),r=Math.round((r+a)*255),new k(u,h,r,i)}}e.HSVA=D;class S{static fromHex(_){return S.Format.CSS.parseHex(_)||S.red}static equals(_,g){return!_&&!g?!0:!_||!g?!1:_.equals(g)}get hsla(){return this._hsla?this._hsla:y.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:D.fromRGBA(this.rgba)}constructor(_){if(_)if(_ instanceof k)this.rgba=_;else if(_ instanceof y)this._hsla=_,this.rgba=y.toRGBA(_);else if(_ instanceof D)this._hsva=_,this.rgba=D.toRGBA(_);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(_){return!!_&&k.equals(this.rgba,_.rgba)&&y.equals(this.hsla,_.hsla)&&D.equals(this.hsva,_.hsva)}getRelativeLuminance(){const _=S._relativeLuminanceForComponent(this.rgba.r),g=S._relativeLuminanceForComponent(this.rgba.g),C=S._relativeLuminanceForComponent(this.rgba.b),s=.2126*_+.7152*g+.0722*C;return L(s,4)}static _relativeLuminanceForComponent(_){const g=_/255;return g<=.03928?g/12.92:Math.pow((g+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(_){const g=this.getRelativeLuminance(),C=_.getRelativeLuminance();return g>C}isDarkerThan(_){const g=this.getRelativeLuminance(),C=_.getRelativeLuminance();return g{throw u.stack?n.isErrorNoTelemetry(u)?new n(u.message+` - -`+u.stack):new Error(u.message+` - -`+u.stack):u},0)}}emit(u){this.listeners.forEach(h=>{h(u)})}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}e.ErrorHandler=L,e.errorHandler=new L;function k(a){f(a)||e.errorHandler.onUnexpectedError(a)}e.onUnexpectedError=k;function y(a){f(a)||e.errorHandler.onUnexpectedExternalError(a)}e.onUnexpectedExternalError=y;function D(a){if(a instanceof Error){const{name:u,message:h}=a,r=a.stacktrace||a.stack;return{$isError:!0,name:u,message:h,stack:r,noTelemetry:n.isErrorNoTelemetry(a)}}return a}e.transformErrorForSerialization=D;const S="Canceled";function f(a){return a instanceof _?!0:a instanceof Error&&a.name===S&&a.message===S}e.isCancellationError=f;class _ extends Error{constructor(){super(S),this.name=this.message}}e.CancellationError=_;function g(){const a=new Error(S);return a.name=a.message,a}e.canceled=g;function C(a){return a?new Error(`Illegal argument: ${a}`):new Error("Illegal argument")}e.illegalArgument=C;function s(a){return a?new Error(`Illegal state: ${a}`):new Error("Illegal state")}e.illegalState=s;class i extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}e.NotSupportedError=i;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;const h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}e.ErrorNoTelemetry=n;class t extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,t.prototype)}}e.BugIndicatingError=t}),define(ne[89],se([1,0,9]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createTrustedTypesPolicy=void 0;function k(y,D){var S;const f=globalThis.MonacoEnvironment;if(f?.createTrustedTypesPolicy)try{return f.createTrustedTypesPolicy(y,D)}catch(_){(0,L.onUnexpectedError)(_);return}try{return(S=window.trustedTypes)===null||S===void 0?void 0:S.createPolicy(y,D)}catch(_){(0,L.onUnexpectedError)(_);return}}e.createTrustedTypesPolicy=k}),define(ne[85],se([1,0,9]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.checkAdjacentItems=e.assertFn=e.assertNever=e.ok=void 0;function k(f,_){if(!f)throw new Error(_?`Assertion failed (${_})`:"Assertion Failed")}e.ok=k;function y(f,_="Unreachable"){throw new Error(_)}e.assertNever=y;function D(f){if(!f()){debugger;f(),(0,L.onUnexpectedError)(new L.BugIndicatingError("Assertion Failed"))}}e.assertFn=D;function S(f,_){let g=0;for(;go.length&&(l=o.length);d=98&&r<=113)return null;switch(r){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return k.keyCodeToStr(r)}s.toElectronAccelerator=h})(g||(e.KeyCodeUtils=g={}));function C(s,i){const n=(i&65535)<<16>>>0;return(s|n)>>>0}e.KeyChord=C}),define(ne[119],se([1,0,9]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResolvedKeybinding=e.ResolvedChord=e.Keybinding=e.ScanCodeChord=e.KeyCodeChord=e.createSimpleKeybinding=e.decodeKeybinding=void 0;function k(C,s){if(typeof C=="number"){if(C===0)return null;const i=(C&65535)>>>0,n=(C&4294901760)>>>16;return n!==0?new f([y(i,s),y(n,s)]):new f([y(i,s)])}else{const i=[];for(let n=0;nnew Uint8Array(256));let D;class S{static wrap(t){return k&&!Buffer.isBuffer(t)&&(t=Buffer.from(t.buffer,t.byteOffset,t.byteLength)),new S(t)}constructor(t){this.buffer=t,this.byteLength=this.buffer.byteLength}toString(){return k?this.buffer.toString():(D||(D=new TextDecoder),D.decode(this.buffer))}}e.VSBuffer=S;function f(n,t){return n[t+0]<<0>>>0|n[t+1]<<8>>>0}e.readUInt16LE=f;function _(n,t,a){n[a+0]=t&255,t=t>>>8,n[a+1]=t&255}e.writeUInt16LE=_;function g(n,t){return n[t]*Math.pow(2,24)+n[t+1]*Math.pow(2,16)+n[t+2]*Math.pow(2,8)+n[t+3]}e.readUInt32BE=g;function C(n,t,a){n[a+3]=t,t=t>>>8,n[a+2]=t,t=t>>>8,n[a+1]=t,t=t>>>8,n[a]=t}e.writeUInt32BE=C;function s(n,t){return n[t]}e.readUInt8=s;function i(n,t,a){n[a]=t}e.writeUInt8=i}),define(ne[384],se([1,0,100]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compareByPrefix=e.compareAnything=e.compareFileNames=void 0;const k=new L.Lazy(()=>{const g=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:g,collatorIsNumeric:g.resolvedOptions().numeric}}),y=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0})})),D=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"})}));function S(g,C,s=!1){const i=g||"",n=C||"",t=k.value.collator.compare(i,n);return k.value.collatorIsNumeric&&t===0&&i!==n?in.length)return 1}return 0}e.compareByPrefix=_}),define(ne[2],se([1,0,99,46]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DisposableMap=e.ImmortalReference=e.RefCountedDisposable=e.MutableDisposable=e.Disposable=e.DisposableStore=e.toDisposable=e.combinedDisposable=e.dispose=e.isDisposable=e.markAsSingleton=e.setDisposableTracker=void 0;const y=!1;let D=null;function S(l){D=l}if(e.setDisposableTracker=S,y){const l="__is_disposable_tracked__";S(new class{trackDisposable(p){const m=new Error("Potentially leaked disposable").stack;setTimeout(()=>{p[l]||console.log(m)},3e3)}setParent(p,m){if(p&&p!==h.None)try{p[l]=!0}catch{}}markAsDisposed(p){if(p&&p!==h.None)try{p[l]=!0}catch{}}markAsSingleton(p){}})}function f(l){return D?.trackDisposable(l),l}function _(l){D?.markAsDisposed(l)}function g(l,p){D?.setParent(l,p)}function C(l,p){if(D)for(const m of l)D.setParent(m,p)}function s(l){return D?.markAsSingleton(l),l}e.markAsSingleton=s;function i(l){return typeof l.dispose=="function"&&l.dispose.length===0}e.isDisposable=i;function n(l){if(k.Iterable.is(l)){const p=[];for(const m of l)if(m)try{m.dispose()}catch(v){p.push(v)}if(p.length===1)throw p[0];if(p.length>1)throw new AggregateError(p,"Encountered errors while disposing of store");return Array.isArray(l)?[]:l}else if(l)return l.dispose(),l}e.dispose=n;function t(...l){const p=a(()=>n(l));return C(l,p),p}e.combinedDisposable=t;function a(l){const p=f({dispose:(0,L.once)(()=>{_(p),l()})});return p}e.toDisposable=a;class u{constructor(){this._toDispose=new Set,this._isDisposed=!1,f(this)}dispose(){this._isDisposed||(_(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{n(this._toDispose)}finally{this._toDispose.clear()}}add(p){if(!p)return p;if(p===this)throw new Error("Cannot register a disposable on itself!");return g(p,this),this._isDisposed?u.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(p),p}}e.DisposableStore=u,u.DISABLE_DISPOSED_WARNING=!1;class h{constructor(){this._store=new u,f(this),g(this._store,this)}dispose(){_(this),this._store.dispose()}_register(p){if(p===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(p)}}e.Disposable=h,h.None=Object.freeze({dispose(){}});class r{constructor(){this._isDisposed=!1,f(this)}get value(){return this._isDisposed?void 0:this._value}set value(p){var m;this._isDisposed||p===this._value||((m=this._value)===null||m===void 0||m.dispose(),p&&g(p,this),this._value=p)}clear(){this.value=void 0}dispose(){var p;this._isDisposed=!0,_(this),(p=this._value)===null||p===void 0||p.dispose(),this._value=void 0}}e.MutableDisposable=r;class c{constructor(p){this._disposable=p,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}e.RefCountedDisposable=c;class o{constructor(p){this.object=p}dispose(){}}e.ImmortalReference=o;class d{constructor(){this._store=new Map,this._isDisposed=!1,f(this)}dispose(){_(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{n(this._store.values())}finally{this._store.clear()}}get(p){return this._store.get(p)}set(p,m,v=!1){var b;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),v||(b=this._store.get(p))===null||b===void 0||b.dispose(),this._store.set(p,m)}deleteAndDispose(p){var m;(m=this._store.get(p))===null||m===void 0||m.dispose(),this._store.delete(p)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}e.DisposableMap=d}),define(ne[64],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedList=void 0;class L{constructor(D){this.element=D,this.next=L.Undefined,this.prev=L.Undefined}}L.Undefined=new L(void 0);class k{constructor(){this._first=L.Undefined,this._last=L.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===L.Undefined}clear(){let D=this._first;for(;D!==L.Undefined;){const S=D.next;D.prev=L.Undefined,D.next=L.Undefined,D=S}this._first=L.Undefined,this._last=L.Undefined,this._size=0}unshift(D){return this._insert(D,!1)}push(D){return this._insert(D,!0)}_insert(D,S){const f=new L(D);if(this._first===L.Undefined)this._first=f,this._last=f;else if(S){const g=this._last;this._last=f,f.prev=g,g.next=f}else{const g=this._first;this._first=f,f.next=g,g.prev=f}this._size+=1;let _=!1;return()=>{_||(_=!0,this._remove(f))}}shift(){if(this._first!==L.Undefined){const D=this._first.element;return this._remove(this._first),D}}pop(){if(this._last!==L.Undefined){const D=this._last.element;return this._remove(this._last),D}}_remove(D){if(D.prev!==L.Undefined&&D.next!==L.Undefined){const S=D.prev;S.next=D.next,D.next.prev=S}else D.prev===L.Undefined&&D.next===L.Undefined?(this._first=L.Undefined,this._last=L.Undefined):D.next===L.Undefined?(this._last=this._last.prev,this._last.next=L.Undefined):D.prev===L.Undefined&&(this._first=this._first.next,this._first.prev=L.Undefined);this._size-=1}*[Symbol.iterator](){let D=this._first;for(;D!==L.Undefined;)yield D.element,D=D.next}}e.LinkedList=k});var ke=this&&this.__decorate||function(Q,e,L,k){var y=arguments.length,D=y<3?e:k===null?k=Object.getOwnPropertyDescriptor(e,L):k,S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")D=Reflect.decorate(Q,e,L,k);else for(var f=Q.length-1;f>=0;f--)(S=Q[f])&&(D=(y<3?S(D):y>3?S(e,L,D):S(e,L))||D);return y>3&&D&&Object.defineProperty(e,L,D),D};define(ne[385],se([1,0,106]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseLinkedText=e.LinkedText=void 0;class k{constructor(f){this.nodes=f}toString(){return this.nodes.map(f=>typeof f=="string"?f:f.label).join("")}}e.LinkedText=k,ke([L.memoize],k.prototype,"toString",null);const y=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function D(S){const f=[];let _=0,g;for(;g=y.exec(S);){g.index-_>0&&f.push(S.substring(_,g.index));const[,C,s,,i]=g;i?f.push({label:C,href:s,title:i}):f.push({label:C,href:s}),_=g.index+g[0].length}return __.toString();class S{constructor(){this[k]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var g;return(g=this._head)===null||g===void 0?void 0:g.value}get last(){var g;return(g=this._tail)===null||g===void 0?void 0:g.value}has(g){return this._map.has(g)}get(g,C=0){const s=this._map.get(g);if(s)return C!==0&&this.touch(s,C),s.value}set(g,C,s=0){let i=this._map.get(g);if(i)i.value=C,s!==0&&this.touch(i,s);else{switch(i={key:g,value:C,next:void 0,previous:void 0},s){case 0:this.addItemLast(i);break;case 1:this.addItemFirst(i);break;case 2:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(g,i),this._size++}return this}delete(g){return!!this.remove(g)}remove(g){const C=this._map.get(g);if(C)return this._map.delete(g),this.removeItem(C),this._size--,C.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const g=this._head;return this._map.delete(g.key),this.removeItem(g),this._size--,g.value}forEach(g,C){const s=this._state;let i=this._head;for(;i;){if(C?g.bind(C)(i.value,i.key,this):g(i.value,i.key,this),this._state!==s)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error("LinkedMap got modified during iteration.");if(s){const n={value:s.key,done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}values(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error("LinkedMap got modified during iteration.");if(s){const n={value:s.value,done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}entries(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error("LinkedMap got modified during iteration.");if(s){const n={value:[s.key,s.value],done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}[(k=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(g){if(g>=this.size)return;if(g===0){this.clear();return}let C=this._head,s=this.size;for(;C&&s>g;)this._map.delete(C.key),C=C.next,s--;this._head=C,this._size=s,C&&(C.previous=void 0),this._state++}addItemFirst(g){if(!this._head&&!this._tail)this._tail=g;else if(this._head)g.next=this._head,this._head.previous=g;else throw new Error("Invalid list");this._head=g,this._state++}addItemLast(g){if(!this._head&&!this._tail)this._head=g;else if(this._tail)g.previous=this._tail,this._tail.next=g;else throw new Error("Invalid list");this._tail=g,this._state++}removeItem(g){if(g===this._head&&g===this._tail)this._head=void 0,this._tail=void 0;else if(g===this._head){if(!g.next)throw new Error("Invalid list");g.next.previous=void 0,this._head=g.next}else if(g===this._tail){if(!g.previous)throw new Error("Invalid list");g.previous.next=void 0,this._tail=g.previous}else{const C=g.next,s=g.previous;if(!C||!s)throw new Error("Invalid list");C.previous=s,s.next=C}g.next=void 0,g.previous=void 0,this._state++}touch(g,C){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(C!==1&&C!==2)){if(C===1){if(g===this._head)return;const s=g.next,i=g.previous;g===this._tail?(i.next=void 0,this._tail=i):(s.previous=i,i.next=s),g.previous=void 0,g.next=this._head,this._head.previous=g,this._head=g,this._state++}else if(C===2){if(g===this._tail)return;const s=g.next,i=g.previous;g===this._head?(s.previous=void 0,this._head=s):(s.previous=i,i.next=s),g.next=void 0,g.previous=this._tail,this._tail.next=g,this._tail=g,this._state++}}}toJSON(){const g=[];return this.forEach((C,s)=>{g.push([s,C])}),g}fromJSON(g){this.clear();for(const[C,s]of g)this.set(C,s)}}e.LinkedMap=S;class f extends S{constructor(g,C=1){super(),this._limit=g,this._ratio=Math.min(Math.max(0,C),1)}get limit(){return this._limit}set limit(g){this._limit=g,this.checkTrim()}get(g,C=2){return super.get(g,C)}peek(g){return super.get(g,0)}set(g,C){return super.set(g,C,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}e.LRUCache=f}),function(Q,e){typeof define=="function"&&define.amd?define(ne[386],se([0]),e):typeof exports=="object"&&typeof module<"u"?e(exports):(Q=typeof globalThis<"u"?globalThis:Q||self,e(Q.marked={}))}(this,function(Q){"use strict";function e(he,ue){for(var te=0;tehe.length)&&(ue=he.length);for(var te=0,q=new Array(ue);te=he.length?{done:!0}:{done:!1,value:he[q++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}Q.defaults=S();function f(he){Q.defaults=he}var _=/[&<>"']/,g=/[&<>"']/g,C=/[<>"']|&(?!#?\w+;)/,s=/[<>"']|&(?!#?\w+;)/g,i={"&":"&","<":"<",">":">",'"':""","'":"'"},n=function(ue){return i[ue]};function t(he,ue){if(ue){if(_.test(he))return he.replace(g,n)}else if(C.test(he))return he.replace(s,n);return he}var a=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function u(he){return he.replace(a,function(ue,te){return te=te.toLowerCase(),te==="colon"?":":te.charAt(0)==="#"?te.charAt(1)==="x"?String.fromCharCode(parseInt(te.substring(2),16)):String.fromCharCode(+te.substring(1)):""})}var h=/(^|[^\[])\^/g;function r(he,ue){he=typeof he=="string"?he:he.source,ue=ue||"";var te={replace:function(z,ee){return ee=ee.source||ee,ee=ee.replace(h,"$1"),he=he.replace(z,ee),te},getRegex:function(){return new RegExp(he,ue)}};return te}var c=/[^\w:]/g,o=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(he,ue,te){if(he){var q;try{q=decodeURIComponent(u(te)).replace(c,"").toLowerCase()}catch{return null}if(q.indexOf("javascript:")===0||q.indexOf("vbscript:")===0||q.indexOf("data:")===0)return null}ue&&!o.test(te)&&(te=b(ue,te));try{te=encodeURI(te).replace(/%25/g,"%")}catch{return null}return te}var l={},p=/^[^:]+:\/*[^/]*$/,m=/^([^:]+:)[\s\S]*$/,v=/^([^:]+:\/*[^/]*)[\s\S]*$/;function b(he,ue){l[" "+he]||(p.test(he)?l[" "+he]=he+"/":l[" "+he]=M(he,"/",!0)),he=l[" "+he];var te=he.indexOf(":")===-1;return ue.substring(0,2)==="//"?te?ue:he.replace(m,"$1")+ue:ue.charAt(0)==="/"?te?ue:he.replace(v,"$1")+ue:he+ue}var w={exec:function(){}};function E(he){for(var ue=1,te,q;ue=0&&re[ge]==="\\";)oe=!oe;return oe?"|":" |"}),q=te.split(/ \|/),z=0;if(q[0].trim()||q.shift(),q.length>0&&!q[q.length-1].trim()&&q.pop(),q.length>ue)q.splice(ue);else for(;q.length1;)ue&1&&(te+=he),ue>>=1,he+=he;return te+he}function A(he,ue,te,q){var z=ue.href,ee=ue.title?t(ue.title):null,$=he[1].replace(/\\([\[\]])/g,"$1");if(he[0].charAt(0)!=="!"){q.state.inLink=!0;var re={type:"link",raw:te,href:z,title:ee,text:$,tokens:q.inlineTokens($)};return q.state.inLink=!1,re}return{type:"image",raw:te,href:z,title:ee,text:t($)}}function N(he,ue){var te=he.match(/^(\s+)(?:```)/);if(te===null)return ue;var q=te[1];return ue.split(` -`).map(function(z){var ee=z.match(/^\s+/);if(ee===null)return z;var $=ee[0];return $.length>=q.length?z.slice(q.length):z}).join(` -`)}var F=function(){function he(te){this.options=te||Q.defaults}var ue=he.prototype;return ue.space=function(q){var z=this.rules.block.newline.exec(q);if(z&&z[0].length>0)return{type:"space",raw:z[0]}},ue.code=function(q){var z=this.rules.block.code.exec(q);if(z){var ee=z[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:z[0],codeBlockStyle:"indented",text:this.options.pedantic?ee:M(ee,` -`)}}},ue.fences=function(q){var z=this.rules.block.fences.exec(q);if(z){var ee=z[0],$=N(ee,z[3]||"");return{type:"code",raw:ee,lang:z[2]?z[2].trim():z[2],text:$}}},ue.heading=function(q){var z=this.rules.block.heading.exec(q);if(z){var ee=z[2].trim();if(/#$/.test(ee)){var $=M(ee,"#");(this.options.pedantic||!$||/ $/.test($))&&(ee=$.trim())}return{type:"heading",raw:z[0],depth:z[1].length,text:ee,tokens:this.lexer.inline(ee)}}},ue.hr=function(q){var z=this.rules.block.hr.exec(q);if(z)return{type:"hr",raw:z[0]}},ue.blockquote=function(q){var z=this.rules.block.blockquote.exec(q);if(z){var ee=z[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:z[0],tokens:this.lexer.blockTokens(ee,[]),text:ee}}},ue.list=function(q){var z=this.rules.block.list.exec(q);if(z){var ee,$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe=z[1].trim(),Fe=Pe.length>1,_e={type:"list",raw:"",ordered:Fe,start:Fe?+Pe.slice(0,-1):"",loose:!1,items:[]};Pe=Fe?"\\d{1,9}\\"+Pe.slice(-1):"\\"+Pe,this.options.pedantic&&(Pe=Fe?Pe:"[*+-]");for(var me=new RegExp("^( {0,3}"+Pe+")((?:[ ][^\\n]*)?(?:\\n|$))");q&&(Me=!1,!(!(z=me.exec(q))||this.rules.block.hr.test(q)));){if(ee=z[0],q=q.substring(ee.length),Le=z[2].split(` -`,1)[0],De=q.split(` -`,1)[0],this.options.pedantic?(oe=2,Ee=Le.trimLeft()):(oe=z[2].search(/[^ ]/),oe=oe>4?1:oe,Ee=Le.slice(oe),oe+=z[1].length),ve=!1,!Le&&/^ *$/.test(De)&&(ee+=De+` -`,q=q.substring(De.length+1),Me=!0),!Me)for(var le=new RegExp("^ {0,"+Math.min(3,oe-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),pe=new RegExp("^ {0,"+Math.min(3,oe-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),Ce=new RegExp("^ {0,"+Math.min(3,oe-1)+"}(?:```|~~~)"),be=new RegExp("^ {0,"+Math.min(3,oe-1)+"}#");q&&(ye=q.split(` -`,1)[0],Le=ye,this.options.pedantic&&(Le=Le.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(Ce.test(Le)||be.test(Le)||le.test(Le)||pe.test(q)));){if(Le.search(/[^ ]/)>=oe||!Le.trim())Ee+=` -`+Le.slice(oe);else if(!ve)Ee+=` -`+Le;else break;!ve&&!Le.trim()&&(ve=!0),ee+=ye+` -`,q=q.substring(ye.length+1)}_e.loose||(Se?_e.loose=!0:/\n *\n *$/.test(ee)&&(Se=!0)),this.options.gfm&&($=/^\[[ xX]\] /.exec(Ee),$&&(re=$[0]!=="[ ] ",Ee=Ee.replace(/^\[[ xX]\] +/,""))),_e.items.push({type:"list_item",raw:ee,task:!!$,checked:re,loose:!1,text:Ee}),_e.raw+=ee}_e.items[_e.items.length-1].raw=ee.trimRight(),_e.items[_e.items.length-1].text=Ee.trimRight(),_e.raw=_e.raw.trimRight();var Ie=_e.items.length;for(ge=0;ge1)return!0}return!1});!_e.loose&&Ne.length&&Re&&(_e.loose=!0,_e.items[ge].loose=!0)}return _e}},ue.html=function(q){var z=this.rules.block.html.exec(q);if(z){var ee={type:"html",raw:z[0],pre:!this.options.sanitizer&&(z[1]==="pre"||z[1]==="script"||z[1]==="style"),text:z[0]};if(this.options.sanitize){var $=this.options.sanitizer?this.options.sanitizer(z[0]):t(z[0]);ee.type="paragraph",ee.text=$,ee.tokens=this.lexer.inline($)}return ee}},ue.def=function(q){var z=this.rules.block.def.exec(q);if(z){z[3]&&(z[3]=z[3].substring(1,z[3].length-1));var ee=z[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:ee,raw:z[0],href:z[2],title:z[3]}}},ue.table=function(q){var z=this.rules.block.table.exec(q);if(z){var ee={type:"table",header:I(z[1]).map(function(Se){return{text:Se}}),align:z[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:z[3]&&z[3].trim()?z[3].replace(/\n[ \t]*$/,"").split(` -`):[]};if(ee.header.length===ee.align.length){ee.raw=z[0];var $=ee.align.length,re,oe,ge,ve;for(re=0;re<$;re++)/^ *-+: *$/.test(ee.align[re])?ee.align[re]="right":/^ *:-+: *$/.test(ee.align[re])?ee.align[re]="center":/^ *:-+ *$/.test(ee.align[re])?ee.align[re]="left":ee.align[re]=null;for($=ee.rows.length,re=0;re<$;re++)ee.rows[re]=I(ee.rows[re],ee.header.length).map(function(Se){return{text:Se}});for($=ee.header.length,oe=0;oe<$;oe++)ee.header[oe].tokens=this.lexer.inline(ee.header[oe].text);for($=ee.rows.length,oe=0;oe<$;oe++)for(ve=ee.rows[oe],ge=0;ge/i.test(z[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(z[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(z[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:z[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(z[0]):t(z[0]):z[0]}},ue.link=function(q){var z=this.rules.inline.link.exec(q);if(z){var ee=z[2].trim();if(!this.options.pedantic&&/^$/.test(ee))return;var $=M(ee.slice(0,-1),"\\");if((ee.length-$.length)%2===0)return}else{var re=P(z[2],"()");if(re>-1){var oe=z[0].indexOf("!")===0?5:4,ge=oe+z[1].length+re;z[2]=z[2].substring(0,re),z[0]=z[0].substring(0,ge).trim(),z[3]=""}}var ve=z[2],Se="";if(this.options.pedantic){var Le=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(ve);Le&&(ve=Le[1],Se=Le[3])}else Se=z[3]?z[3].slice(1,-1):"";return ve=ve.trim(),/^$/.test(ee)?ve=ve.slice(1):ve=ve.slice(1,-1)),A(z,{href:ve&&ve.replace(this.rules.inline._escapes,"$1"),title:Se&&Se.replace(this.rules.inline._escapes,"$1")},z[0],this.lexer)}},ue.reflink=function(q,z){var ee;if((ee=this.rules.inline.reflink.exec(q))||(ee=this.rules.inline.nolink.exec(q))){var $=(ee[2]||ee[1]).replace(/\s+/g," ");if($=z[$.toLowerCase()],!$||!$.href){var re=ee[0].charAt(0);return{type:"text",raw:re,text:re}}return A(ee,$,ee[0],this.lexer)}},ue.emStrong=function(q,z,ee){ee===void 0&&(ee="");var $=this.rules.inline.emStrong.lDelim.exec(q);if($&&!($[3]&&ee.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var re=$[1]||$[2]||"";if(!re||re&&(ee===""||this.rules.inline.punctuation.exec(ee))){var oe=$[0].length-1,ge,ve,Se=oe,Le=0,De=$[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(De.lastIndex=0,z=z.slice(-1*q.length+oe);($=De.exec(z))!=null;)if(ge=$[1]||$[2]||$[3]||$[4]||$[5]||$[6],!!ge){if(ve=ge.length,$[3]||$[4]){Se+=ve;continue}else if(($[5]||$[6])&&oe%3&&!((oe+ve)%3)){Le+=ve;continue}if(Se-=ve,!(Se>0)){if(ve=Math.min(ve,ve+Se+Le),Math.min(oe,ve)%2){var ye=q.slice(1,oe+$.index+ve);return{type:"em",raw:q.slice(0,oe+$.index+ve+1),text:ye,tokens:this.lexer.inlineTokens(ye)}}var Ee=q.slice(2,oe+$.index+ve-1);return{type:"strong",raw:q.slice(0,oe+$.index+ve+1),text:Ee,tokens:this.lexer.inlineTokens(Ee)}}}}}},ue.codespan=function(q){var z=this.rules.inline.code.exec(q);if(z){var ee=z[2].replace(/\n/g," "),$=/[^ ]/.test(ee),re=/^ /.test(ee)&&/ $/.test(ee);return $&&re&&(ee=ee.substring(1,ee.length-1)),ee=t(ee,!0),{type:"codespan",raw:z[0],text:ee}}},ue.br=function(q){var z=this.rules.inline.br.exec(q);if(z)return{type:"br",raw:z[0]}},ue.del=function(q){var z=this.rules.inline.del.exec(q);if(z)return{type:"del",raw:z[0],text:z[2],tokens:this.lexer.inlineTokens(z[2])}},ue.autolink=function(q,z){var ee=this.rules.inline.autolink.exec(q);if(ee){var $,re;return ee[2]==="@"?($=t(this.options.mangle?z(ee[1]):ee[1]),re="mailto:"+$):($=t(ee[1]),re=$),{type:"link",raw:ee[0],text:$,href:re,tokens:[{type:"text",raw:$,text:$}]}}},ue.url=function(q,z){var ee;if(ee=this.rules.inline.url.exec(q)){var $,re;if(ee[2]==="@")$=t(this.options.mangle?z(ee[0]):ee[0]),re="mailto:"+$;else{var oe;do oe=ee[0],ee[0]=this.rules.inline._backpedal.exec(ee[0])[0];while(oe!==ee[0]);$=t(ee[0]),ee[1]==="www."?re="http://"+$:re=$}return{type:"link",raw:ee[0],text:$,href:re,tokens:[{type:"text",raw:$,text:$}]}}},ue.inlineText=function(q,z){var ee=this.rules.inline.text.exec(q);if(ee){var $;return this.lexer.state.inRawBlock?$=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(ee[0]):t(ee[0]):ee[0]:$=t(this.options.smartypants?z(ee[0]):ee[0]),{type:"text",raw:ee[0],text:$}}},he}(),O={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:w,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};O._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/,O._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,O.def=r(O.def).replace("label",O._label).replace("title",O._title).getRegex(),O.bullet=/(?:[*+-]|\d{1,9}[.)])/,O.listItemStart=r(/^( *)(bull) */).replace("bull",O.bullet).getRegex(),O.list=r(O.list).replace(/bull/g,O.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+O.def.source+")").getRegex(),O._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",O._comment=/|$)/,O.html=r(O.html,"i").replace("comment",O._comment).replace("tag",O._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),O.paragraph=r(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.blockquote=r(O.blockquote).replace("paragraph",O.paragraph).getRegex(),O.normal=E({},O),O.gfm=E({},O.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),O.gfm.table=r(O.gfm.table).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.gfm.paragraph=r(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",O.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.pedantic=E({},O.normal,{html:r(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",O._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:w,paragraph:r(O.normal._paragraph).replace("hr",O.hr).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",O.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var W={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:w,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:w,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~",W.punctuation=r(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,W.escapedEmSt=/\\\*|\\_/g,W._comment=r(O._comment).replace("(?:-->|$)","-->").getRegex(),W.emStrong.lDelim=r(W.emStrong.lDelim).replace(/punct/g,W._punctuation).getRegex(),W.emStrong.rDelimAst=r(W.emStrong.rDelimAst,"g").replace(/punct/g,W._punctuation).getRegex(),W.emStrong.rDelimUnd=r(W.emStrong.rDelimUnd,"g").replace(/punct/g,W._punctuation).getRegex(),W._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=r(W.autolink).replace("scheme",W._scheme).replace("email",W._email).getRegex(),W._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,W.tag=r(W.tag).replace("comment",W._comment).replace("attribute",W._attribute).getRegex(),W._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,W._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,W._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,W.link=r(W.link).replace("label",W._label).replace("href",W._href).replace("title",W._title).getRegex(),W.reflink=r(W.reflink).replace("label",W._label).replace("ref",O._label).getRegex(),W.nolink=r(W.nolink).replace("ref",O._label).getRegex(),W.reflinkSearch=r(W.reflinkSearch,"g").replace("reflink",W.reflink).replace("nolink",W.nolink).getRegex(),W.normal=E({},W),W.pedantic=E({},W.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:r(/^!?\[(label)\]\((.*?)\)/).replace("label",W._label).getRegex(),reflink:r(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W._label).getRegex()}),W.gfm=E({},W.normal,{escape:r(W.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(q="x"+q.toString(16)),ue+="&#"+q+";";return ue}var R=function(){function he(te){this.tokens=[],this.tokens.links=Object.create(null),this.options=te||Q.defaults,this.options.tokenizer=this.options.tokenizer||new F,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var q={block:O.normal,inline:W.normal};this.options.pedantic?(q.block=O.pedantic,q.inline=W.pedantic):this.options.gfm&&(q.block=O.gfm,this.options.breaks?q.inline=W.breaks:q.inline=W.gfm),this.tokenizer.rules=q}he.lex=function(q,z){var ee=new he(z);return ee.lex(q)},he.lexInline=function(q,z){var ee=new he(z);return ee.inlineTokens(q)};var ue=he.prototype;return ue.lex=function(q){q=q.replace(/\r\n|\r/g,` -`),this.blockTokens(q,this.tokens);for(var z;z=this.inlineQueue.shift();)this.inlineTokens(z.src,z.tokens);return this.tokens},ue.blockTokens=function(q,z){var ee=this;z===void 0&&(z=[]),this.options.pedantic?q=q.replace(/\t/g," ").replace(/^ +$/gm,""):q=q.replace(/^( *)(\t+)/gm,function(Se,Le,De){return Le+" ".repeat(De.length)});for(var $,re,oe,ge;q;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(Se){return($=Se.call({lexer:ee},q,z))?(q=q.substring($.raw.length),z.push($),!0):!1}))){if($=this.tokenizer.space(q)){q=q.substring($.raw.length),$.raw.length===1&&z.length>0?z[z.length-1].raw+=` -`:z.push($);continue}if($=this.tokenizer.code(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&(re.type==="paragraph"||re.type==="text")?(re.raw+=` -`+$.raw,re.text+=` -`+$.text,this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($);continue}if($=this.tokenizer.fences(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.heading(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.hr(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.blockquote(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.list(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.html(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.def(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&(re.type==="paragraph"||re.type==="text")?(re.raw+=` -`+$.raw,re.text+=` -`+$.raw,this.inlineQueue[this.inlineQueue.length-1].src=re.text):this.tokens.links[$.tag]||(this.tokens.links[$.tag]={href:$.href,title:$.title});continue}if($=this.tokenizer.table(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.lheading(q)){q=q.substring($.raw.length),z.push($);continue}if(oe=q,this.options.extensions&&this.options.extensions.startBlock&&function(){var Se=1/0,Le=q.slice(1),De=void 0;ee.options.extensions.startBlock.forEach(function(ye){De=ye.call({lexer:this},Le),typeof De=="number"&&De>=0&&(Se=Math.min(Se,De))}),Se<1/0&&Se>=0&&(oe=q.substring(0,Se+1))}(),this.state.top&&($=this.tokenizer.paragraph(oe))){re=z[z.length-1],ge&&re.type==="paragraph"?(re.raw+=` -`+$.raw,re.text+=` -`+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($),ge=oe.length!==q.length,q=q.substring($.raw.length);continue}if($=this.tokenizer.text(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&re.type==="text"?(re.raw+=` -`+$.raw,re.text+=` -`+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($);continue}if(q){var ve="Infinite loop on byte: "+q.charCodeAt(0);if(this.options.silent){console.error(ve);break}else throw new Error(ve)}}return this.state.top=!0,z},ue.inline=function(q,z){return z===void 0&&(z=[]),this.inlineQueue.push({src:q,tokens:z}),z},ue.inlineTokens=function(q,z){var ee=this;z===void 0&&(z=[]);var $,re,oe,ge=q,ve,Se,Le;if(this.tokens.links){var De=Object.keys(this.tokens.links);if(De.length>0)for(;(ve=this.tokenizer.rules.inline.reflinkSearch.exec(ge))!=null;)De.includes(ve[0].slice(ve[0].lastIndexOf("[")+1,-1))&&(ge=ge.slice(0,ve.index)+"["+T("a",ve[0].length-2)+"]"+ge.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(ve=this.tokenizer.rules.inline.blockSkip.exec(ge))!=null;)ge=ge.slice(0,ve.index)+"["+T("a",ve[0].length-2)+"]"+ge.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(ve=this.tokenizer.rules.inline.escapedEmSt.exec(ge))!=null;)ge=ge.slice(0,ve.index)+"++"+ge.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;q;)if(Se||(Le=""),Se=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(Ee){return($=Ee.call({lexer:ee},q,z))?(q=q.substring($.raw.length),z.push($),!0):!1}))){if($=this.tokenizer.escape(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.tag(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&$.type==="text"&&re.type==="text"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if($=this.tokenizer.link(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.reflink(q,this.tokens.links)){q=q.substring($.raw.length),re=z[z.length-1],re&&$.type==="text"&&re.type==="text"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if($=this.tokenizer.emStrong(q,ge,Le)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.codespan(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.br(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.del(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.autolink(q,j)){q=q.substring($.raw.length),z.push($);continue}if(!this.state.inLink&&($=this.tokenizer.url(q,j))){q=q.substring($.raw.length),z.push($);continue}if(oe=q,this.options.extensions&&this.options.extensions.startInline&&function(){var Ee=1/0,Me=q.slice(1),Pe=void 0;ee.options.extensions.startInline.forEach(function(Fe){Pe=Fe.call({lexer:this},Me),typeof Pe=="number"&&Pe>=0&&(Ee=Math.min(Ee,Pe))}),Ee<1/0&&Ee>=0&&(oe=q.substring(0,Ee+1))}(),$=this.tokenizer.inlineText(oe,U)){q=q.substring($.raw.length),$.raw.slice(-1)!=="_"&&(Le=$.raw.slice(-1)),Se=!0,re=z[z.length-1],re&&re.type==="text"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if(q){var ye="Infinite loop on byte: "+q.charCodeAt(0);if(this.options.silent){console.error(ye);break}else throw new Error(ye)}}return z},L(he,null,[{key:"rules",get:function(){return{block:O,inline:W}}}]),he}(),K=function(){function he(te){this.options=te||Q.defaults}var ue=he.prototype;return ue.code=function(q,z,ee){var $=(z||"").match(/\S*/)[0];if(this.options.highlight){var re=this.options.highlight(q,$);re!=null&&re!==q&&(ee=!0,q=re)}return q=q.replace(/\n$/,"")+` -`,$?'

'+(ee?q:t(q,!0))+`
-`:"
"+(ee?q:t(q,!0))+`
-`},ue.blockquote=function(q){return`
-`+q+`
-`},ue.html=function(q){return q},ue.heading=function(q,z,ee,$){if(this.options.headerIds){var re=this.options.headerPrefix+$.slug(ee);return"'+q+" -`}return""+q+" -`},ue.hr=function(){return this.options.xhtml?`
-`:`
-`},ue.list=function(q,z,ee){var $=z?"ol":"ul",re=z&&ee!==1?' start="'+ee+'"':"";return"<"+$+re+`> -`+q+" -`},ue.listitem=function(q){return"
  • "+q+`
  • -`},ue.checkbox=function(q){return" "},ue.paragraph=function(q){return"

    "+q+`

    -`},ue.table=function(q,z){return z&&(z=""+z+""),` - -`+q+` -`+z+`
    -`},ue.tablerow=function(q){return` -`+q+` -`},ue.tablecell=function(q,z){var ee=z.header?"th":"td",$=z.align?"<"+ee+' align="'+z.align+'">':"<"+ee+">";return $+q+(" -`)},ue.strong=function(q){return""+q+""},ue.em=function(q){return""+q+""},ue.codespan=function(q){return""+q+""},ue.br=function(){return this.options.xhtml?"
    ":"
    "},ue.del=function(q){return""+q+""},ue.link=function(q,z,ee){if(q=d(this.options.sanitize,this.options.baseUrl,q),q===null)return ee;var $='
    ",$},ue.image=function(q,z,ee){if(q=d(this.options.sanitize,this.options.baseUrl,q),q===null)return ee;var $=''+ee+'":">",$},ue.text=function(q){return q},he}(),G=function(){function he(){}var ue=he.prototype;return ue.strong=function(q){return q},ue.em=function(q){return q},ue.codespan=function(q){return q},ue.del=function(q){return q},ue.html=function(q){return q},ue.text=function(q){return q},ue.link=function(q,z,ee){return""+ee},ue.image=function(q,z,ee){return""+ee},ue.br=function(){return""},he}(),Z=function(){function he(){this.seen={}}var ue=he.prototype;return ue.serialize=function(q){return q.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},ue.getNextSafeSlug=function(q,z){var ee=q,$=0;if(this.seen.hasOwnProperty(ee)){$=this.seen[q];do $++,ee=q+"-"+$;while(this.seen.hasOwnProperty(ee))}return z||(this.seen[q]=$,this.seen[ee]=0),ee},ue.slug=function(q,z){z===void 0&&(z={});var ee=this.serialize(q);return this.getNextSafeSlug(ee,z.dryrun)},he}(),J=function(){function he(te){this.options=te||Q.defaults,this.options.renderer=this.options.renderer||new K,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new G,this.slugger=new Z}he.parse=function(q,z){var ee=new he(z);return ee.parse(q)},he.parseInline=function(q,z){var ee=new he(z);return ee.parseInline(q)};var ue=he.prototype;return ue.parse=function(q,z){z===void 0&&(z=!0);var ee="",$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe,_e,me,le,pe,Ce,be,Ie=q.length;for($=0;$0&&me.tokens[0].type==="paragraph"?(me.tokens[0].text=Ce+" "+me.tokens[0].text,me.tokens[0].tokens&&me.tokens[0].tokens.length>0&&me.tokens[0].tokens[0].type==="text"&&(me.tokens[0].tokens[0].text=Ce+" "+me.tokens[0].tokens[0].text)):me.tokens.unshift({type:"text",text:Ce}):_e+=Ce),_e+=this.parse(me.tokens,Fe),ye+=this.renderer.listitem(_e,pe,le);ee+=this.renderer.list(ye,Me,Pe);continue}case"html":{ee+=this.renderer.html(Ee.text);continue}case"paragraph":{ee+=this.renderer.paragraph(this.parseInline(Ee.tokens));continue}case"text":{for(ye=Ee.tokens?this.parseInline(Ee.tokens):Ee.text;$+1"u"||he===null)throw new Error("marked(): input parameter is undefined or null");if(typeof he!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(he)+", string expected");if(typeof ue=="function"&&(te=ue,ue=null),ue=E({},X.defaults,ue||{}),x(ue),te){var q=ue.highlight,z;try{z=R.lex(he,ue)}catch(ge){return te(ge)}var ee=function(ve){var Se;if(!ve)try{ue.walkTokens&&X.walkTokens(z,ue.walkTokens),Se=J.parse(z,ue)}catch(Le){ve=Le}return ue.highlight=q,ve?te(ve):te(null,Se)};if(!q||q.length<3||(delete ue.highlight,!z.length))return ee();var $=0;X.walkTokens(z,function(ge){ge.type==="code"&&($++,setTimeout(function(){q(ge.text,ge.lang,function(ve,Se){if(ve)return ee(ve);Se!=null&&Se!==ge.text&&(ge.text=Se,ge.escaped=!0),$--,$===0&&ee()})},0))}),$===0&&ee();return}function re(ge){if(ge.message+=` -Please report this to https://github.com/markedjs/marked.`,ue.silent)return"

    An error occurred:

    "+t(ge.message+"",!0)+"
    ";throw ge}try{var oe=R.lex(he,ue);if(ue.walkTokens){if(ue.async)return Promise.all(X.walkTokens(oe,ue.walkTokens)).then(function(){return J.parse(oe,ue)}).catch(re);X.walkTokens(oe,ue.walkTokens)}return J.parse(oe,ue)}catch(ge){re(ge)}}X.options=X.setOptions=function(he){return E(X.defaults,he),f(X.defaults),X},X.getDefaults=S,X.defaults=Q.defaults,X.use=function(){for(var he=arguments.length,ue=new Array(he),te=0;te"u"||he===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof he!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(he)+", string expected");ue=E({},X.defaults,ue||{}),x(ue);try{var te=R.lexInline(he,ue);return ue.walkTokens&&X.walkTokens(te,ue.walkTokens),J.parseInline(te,ue)}catch(q){if(q.message+=` -Please report this to https://github.com/markedjs/marked.`,ue.silent)return"

    An error occurred:

    "+t(q.message+"",!0)+"
    ";throw q}},X.Parser=J,X.parser=J.parse,X.Renderer=K,X.TextRenderer=G,X.Lexer=R,X.lexer=R.lex,X.Tokenizer=F,X.Slugger=Z,X.parse=X;var H=X.options,B=X.setOptions,V=X.use,Y=X.walkTokens,ie=X.parseInline,ae=X,ce=J.parse,de=R.lex;Q.Lexer=R,Q.Parser=J,Q.Renderer=K,Q.Slugger=Z,Q.TextRenderer=G,Q.Tokenizer=F,Q.getDefaults=S,Q.lexer=de,Q.marked=X,Q.options=H,Q.parse=ae,Q.parseInline=ie,Q.parser=ce,Q.setOptions=B,Q.use=V,Q.walkTokens=Y,Object.defineProperty(Q,"__esModule",{value:!0})}),define(ne[107],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Mimes=void 0,e.Mimes=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"})}),define(ne[197],se([1,0,107]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataTransfers=void 0,e.DataTransfers={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:L.Mimes.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"}}),define(ne[387],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ArrayNavigator=void 0;class L{constructor(y,D=0,S=y.length,f=D-1){this.items=y,this.start=D,this.end=S,this.index=f}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}e.ArrayNavigator=L}),define(ne[388],se([1,0,387]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HistoryNavigator=void 0;class k{constructor(D=[],S=10){this._initialize(D),this._limit=S,this._onChange()}getHistory(){return this._elements}add(D){this._history.delete(D),this._history.add(D),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(D){return this._history.has(D)}_onChange(){this._reduceToLimit();const D=this._elements;this._navigator=new L.ArrayNavigator(D,0,D.length,D.length)}_reduceToLimit(){const D=this._elements;D.length>this._limit&&this._initialize(D.slice(D.length-this._limit))}_currentPosition(){const D=this._navigator.current();return D?this._elements.indexOf(D):-1}_initialize(D){this._history=new Set;for(const S of D)this._history.add(S)}get _elements(){const D=[];return this._history.forEach(S=>D.push(S)),D}}e.HistoryNavigator=k}),define(ne[141],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SlidingWindowAverage=e.MovingAverage=e.clamp=void 0;function L(D,S,f){return Math.min(Math.max(D,S),f)}e.clamp=L;class k{constructor(){this._n=1,this._val=0}update(S){return this._val=this._val+(S-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}e.MovingAverage=k;class y{constructor(S){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(S),this._values.fill(0,0,S)}update(S){const f=this._values[this._index];return this._values[this._index]=S,this._index=(this._index+1)%this._values.length,this._sum-=f,this._sum+=S,this._nh.debugName).join(", ")+")",{color:"gray"})}handleDerivedCreated(u){const h=u.handleChange;this.changedObservablesSets.set(u,new Set),u.handleChange=(r,c)=>(this.changedObservablesSets.get(u).add(r),h.apply(u,[r,c]))}handleDerivedRecomputed(u,h){const r=this.changedObservablesSets.get(u);console.log(...this.textToConsoleArgs([_("derived recomputed"),g(u.debugName,{color:"BlueViolet"}),...this.formatInfo(h),this.formatChanges(r),{data:[{fn:u._computeFn}]}])),r.clear()}handleFromEventObservableTriggered(u,h){console.log(...this.textToConsoleArgs([_("observable from event triggered"),g(u.debugName,{color:"BlueViolet"}),...this.formatInfo(h),{data:[{fn:u._getValue}]}]))}handleAutorunCreated(u){const h=u.handleChange;this.changedObservablesSets.set(u,new Set),u.handleChange=(r,c)=>(this.changedObservablesSets.get(u).add(r),h.apply(u,[r,c]))}handleAutorunTriggered(u){const h=this.changedObservablesSets.get(u);console.log(...this.textToConsoleArgs([_("autorun"),g(u.debugName,{color:"BlueViolet"}),this.formatChanges(h),{data:[{fn:u._runFn}]}])),h.clear(),this.indentation++}handleAutorunFinished(u){this.indentation--}handleBeginTransaction(u){let h=u.getDebugName();h===void 0&&(h=""),console.log(...this.textToConsoleArgs([_("transaction"),g(h,{color:"BlueViolet"}),{data:[{fn:u._fn}]}])),this.indentation++}handleEndTransaction(){this.indentation--}}e.ConsoleObservableLogger=D;function S(a){const u=new Array,h=[];let r="";function c(d){if("length"in d)for(const l of d)l&&c(l);else"text"in d?(r+=`%c${d.text}`,u.push(d.style),d.data&&h.push(...d.data)):"data"in d&&h.push(...d.data)}c(a);const o=[r,...u];return o.push(...h),o}function f(a){return g(a,{color:"black"})}function _(a){return g(t(`${a}: `,10),{color:"black",bold:!0})}function g(a,u={color:"black"}){function h(c){return Object.entries(c).reduce((o,[d,l])=>`${o}${d}:${l};`,"")}const r={color:u.color};return u.strikeThrough&&(r["text-decoration"]="line-through"),u.bold&&(r["font-weight"]="bold"),{text:a,style:h(r)}}function C(a,u){switch(typeof a){case"number":return""+a;case"string":return a.length+2<=u?`"${a}"`:`"${a.substr(0,u-7)}"+...`;case"boolean":return a?"true":"false";case"undefined":return"undefined";case"object":return a===null?"null":Array.isArray(a)?s(a,u):i(a,u);case"symbol":return a.toString();case"function":return`[[Function${a.name?" "+a.name:""}]]`;default:return""+a}}function s(a,u){let h="[ ",r=!0;for(const c of a){if(r||(h+=", "),h.length-5>u){h+="...";break}r=!1,h+=`${C(c,u-h.length)}`}return h+=" ]",h}function i(a,u){let h="{ ",r=!0;for(const[c,o]of Object.entries(a)){if(r||(h+=", "),h.length-5>u){h+="...";break}r=!1,h+=`${c}: ${C(o,u-h.length)}`}return h+=" }",h}function n(a,u){let h="";for(let r=1;r<=u;r++)h+=a;return h}function t(a,u){for(;a.lengthu(this.read(h),h),()=>{const h=C(u);if(h!==void 0)return h;const c=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(u.toString());return c?`${this.debugName}.${c[2]}`:`${this.debugName} (mapped)`})}}e.ConvenientObservable=D;class S extends D{constructor(){super(...arguments),this.observers=new Set}addObserver(u){const h=this.observers.size;this.observers.add(u),h===0&&this.onFirstObserverAdded()}removeObserver(u){this.observers.delete(u)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}e.BaseObservable=S;function f(a,u){const h=new g(a,u);try{a(h)}finally{h.finish()}}e.transaction=f;function _(a,u,h){a?u(a):f(u,h)}e.subtransaction=_;class g{constructor(u,h){var r;this._fn=u,this._getDebugName=h,this.updatingObservers=[],(r=(0,L.getLogger)())===null||r===void 0||r.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():C(this._fn)}updateObserver(u,h){this.updatingObservers.push({observer:u,observable:h}),u.beginUpdate(h)}finish(){var u;const h=this.updatingObservers;this.updatingObservers=null;for(const{observer:r,observable:c}of h)r.endUpdate(c);(u=(0,L.getLogger)())===null||u===void 0||u.handleEndTransaction()}}e.TransactionImpl=g;function C(a){const u=a.toString(),r=/\/\*\*\s*@description\s*([^*]*)\*\//.exec(u),c=r?r[1]:void 0;return c?.trim()}e.getFunctionName=C;function s(a,u){return new i(a,u)}e.observableValue=s;class i extends S{constructor(u,h){super(),this.debugName=u,this._value=h}get(){return this._value}set(u,h,r){var c;if(this._value===u)return;let o;h||(h=o=new g(()=>{},()=>`Setting ${this.debugName}`));try{const d=this._value;this._setValue(u),(c=(0,L.getLogger)())===null||c===void 0||c.handleObservableChanged(this,{oldValue:d,newValue:u,change:r,didChange:!0,hadValue:!0});for(const l of this.observers)h.updateObserver(l,this),l.handleChange(this,r)}finally{o&&o.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(u){this._value=u}}e.ObservableValue=i;function n(a,u){return new t(a,u)}e.disposableObservableValue=n;class t extends i{_setValue(u){this._value!==u&&(this._value&&this._value.dispose(),this._value=u)}dispose(){var u;(u=this._value)===null||u===void 0||u.dispose()}}e.DisposableObservableValue=t}),define(ne[262],se([1,0,85,2,165,142]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AutorunObserver=e.autorunWithStore=e.autorunHandleChanges=e.autorun=e.autorunOpts=void 0;function S(s,i){return new C(s.debugName,i,void 0,void 0)}e.autorunOpts=S;function f(s){return new C(void 0,s,void 0,void 0)}e.autorun=f;function _(s,i){return new C(s.debugName,i,s.createEmptyChangeSummary,s.handleChange)}e.autorunHandleChanges=_;function g(s){const i=new k.DisposableStore,n=S({debugName:()=>(0,y.getFunctionName)(s)||"(anonymous)"},t=>{i.clear(),s(t,i)});return(0,k.toDisposable)(()=>{n.dispose(),i.dispose()})}e.autorunWithStore=g;class C{get debugName(){if(typeof this._debugName=="string")return this._debugName;if(typeof this._debugName=="function"){const n=this._debugName();if(n!==void 0)return n}const i=(0,y.getFunctionName)(this._runFn);return i!==void 0?i:"(anonymous)"}constructor(i,n,t,a){var u,h;this._debugName=i,this._runFn=n,this.createChangeSummary=t,this._handleChange=a,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(u=this.createChangeSummary)===null||u===void 0?void 0:u.call(this),(h=(0,D.getLogger)())===null||h===void 0||h.handleAutorunCreated(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const i of this.dependencies)i.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var i,n,t;if(this.state===3)return;const a=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=a,this.state=3;try{if(!this.disposed){(i=(0,D.getLogger)())===null||i===void 0||i.handleAutorunTriggered(this);const u=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this),this._runFn(this,u)}}finally{(t=(0,D.getLogger)())===null||t===void 0||t.handleAutorunFinished(this);for(const u of this.dependenciesToBeRemoved)u.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const i of this.dependencies)if(i.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,(0,L.assertFn)(()=>this.updateCount>=0)}handlePossibleChange(i){this.state===3&&this.dependencies.has(i)&&!this.dependenciesToBeRemoved.has(i)&&(this.state=1)}handleChange(i,n){this.dependencies.has(i)&&!this.dependenciesToBeRemoved.has(i)&&(!this._handleChange||this._handleChange({changedObservable:i,change:n,didChange:a=>a===i},this.changeSummary))&&(this.state=2)}readObservable(i){if(this.disposed)return i.get();i.addObserver(this);const n=i.get();return this.dependencies.add(i),this.dependenciesToBeRemoved.delete(i),n}}e.AutorunObserver=C,function(s){s.Observer=C}(f||(e.autorun=f={}))}),define(ne[389],se([1,0,9,2,165,142]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Derived=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=void 0;const S=(i,n)=>i===n;function f(i,n){return new s(n,i,void 0,void 0,void 0,S)}e.derived=f;function _(i,n){var t;return new s(i.debugName,n,void 0,void 0,void 0,(t=i.equalityComparer)!==null&&t!==void 0?t:S)}e.derivedOpts=_;function g(i,n,t){return new s(i,t,n.createEmptyChangeSummary,n.handleChange,void 0,S)}e.derivedHandleChanges=g;function C(i,n){const t=new k.DisposableStore;return new s(i,a=>(t.clear(),n(a,t)),void 0,void 0,()=>t.dispose(),S)}e.derivedWithStore=C,(0,y._setDerived)(f);class s extends y.BaseObservable{get debugName(){return this._debugName?typeof this._debugName=="function"?this._debugName():this._debugName:(0,y.getFunctionName)(this._computeFn)||"(anonymous)"}constructor(n,t,a,u,h=void 0,r){var c,o;super(),this._debugName=n,this._computeFn=t,this.createChangeSummary=a,this._handleChange=u,this._handleLastObserverRemoved=h,this._equalityComparator=r,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=(c=this.createChangeSummary)===null||c===void 0?void 0:c.call(this),(o=(0,D.getLogger)())===null||o===void 0||o.handleDerivedCreated(this)}onLastObserverRemoved(){var n;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),(n=this._handleLastObserverRemoved)===null||n===void 0||n.call(this)}get(){var n;if(this.observers.size===0){const t=this._computeFn(this,(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this));return this.onLastObserverRemoved(),t}else{do{if(this.state===1){for(const t of this.dependencies)if(t.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var n,t;if(this.state===3)return;const a=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=a;const u=this.state!==0,h=this.value;this.state=3;const r=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this);try{this.value=this._computeFn(this,r)}finally{for(const o of this.dependenciesToBeRemoved)o.removeObserver(this);this.dependenciesToBeRemoved.clear()}const c=u&&!this._equalityComparator(h,this.value);if((t=(0,D.getLogger)())===null||t===void 0||t.handleDerivedRecomputed(this,{oldValue:h,newValue:this.value,change:void 0,didChange:c,hadValue:u}),c)for(const o of this.observers)o.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(n){this.updateCount++;const t=this.updateCount===1;if(this.state===3&&(this.state=1,!t))for(const a of this.observers)a.handlePossibleChange(this);if(t)for(const a of this.observers)a.beginUpdate(this)}endUpdate(n){if(this.updateCount--,this.updateCount===0){const t=[...this.observers];for(const a of t)a.endUpdate(this)}if(this.updateCount<0)throw new L.BugIndicatingError}handlePossibleChange(n){if(this.state===3&&this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)){this.state=1;for(const t of this.observers)t.handlePossibleChange(this)}}handleChange(n,t){if(this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)){const a=this._handleChange?this._handleChange({changedObservable:n,change:t,didChange:h=>h===n},this.changeSummary):!0,u=this.state===3;if(a&&(this.state===1||u)&&(this.state=2,u))for(const h of this.observers)h.handlePossibleChange(this)}}readObservable(n){n.addObserver(this);const t=n.get();return this.dependencies.add(n),this.dependenciesToBeRemoved.delete(n),t}addObserver(n){const t=!this.observers.has(n)&&this.updateCount>0;super.addObserver(n),t&&n.beginUpdate(this)}removeObserver(n){const t=this.observers.has(n)&&this.updateCount>0;super.removeObserver(n),t&&n.endUpdate(this)}}e.Derived=s}),define(ne[390],se([1,0,2,262,165,142]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.keepAlive=e.observableSignal=e.observableSignalFromEvent=e.FromEventObservable=e.observableFromEvent=e.waitForState=e.constObservable=void 0;function S(h){return new f(h)}e.constObservable=S;class f extends y.ConvenientObservable{constructor(r){super(),this.value=r}get debugName(){return this.toString()}get(){return this.value}addObserver(r){}removeObserver(r){}toString(){return`Const: ${this.value}`}}function _(h,r){return new Promise(c=>{let o=!1,d=!1;const l=(0,k.autorun)(p=>{const m=h.read(p);r(m)&&(o?l.dispose():d=!0,c(m))});o=!0,d&&l.dispose()})}e.waitForState=_;function g(h,r){return new C(h,r)}e.observableFromEvent=g;class C extends y.BaseObservable{constructor(r,c){super(),this.event=r,this._getValue=c,this.hasValue=!1,this.handleEvent=o=>{var d;const l=this._getValue(o),p=!this.hasValue||this.value!==l;(d=(0,D.getLogger)())===null||d===void 0||d.handleFromEventObservableTriggered(this,{oldValue:this.value,newValue:l,change:void 0,didChange:p,hadValue:this.hasValue}),p&&(this.value=l,this.hasValue&&(0,y.transaction)(m=>{for(const v of this.observers)m.updateObserver(v,this),v.handleChange(this,void 0)},()=>{const m=this.getDebugName();return"Event fired"+(m?`: ${m}`:"")}),this.hasValue=!0)}}getDebugName(){return(0,y.getFunctionName)(this._getValue)}get debugName(){const r=this.getDebugName();return"From Event"+(r?`: ${r}`:"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}e.FromEventObservable=C,function(h){h.Observer=C}(g||(e.observableFromEvent=g={}));function s(h,r){return new i(h,r)}e.observableSignalFromEvent=s;class i extends y.BaseObservable{constructor(r,c){super(),this.debugName=r,this.event=c,this.handleEvent=()=>{(0,y.transaction)(o=>{for(const d of this.observers)o.updateObserver(d,this),d.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function n(h){return new t(h)}e.observableSignal=n;class t extends y.BaseObservable{constructor(r){super(),this.debugName=r}trigger(r,c){if(!r){(0,y.transaction)(o=>{this.trigger(o,c)},()=>`Trigger signal ${this.debugName}`);return}for(const o of this.observers)r.updateObserver(o,this),o.handleChange(this,c)}get(){}}function a(h,r){const c=new u(r??!1);return h.addObserver(c),r&&h.reportChanges(),(0,L.toDisposable)(()=>{h.removeObserver(c)})}e.keepAlive=a;class u{constructor(r){this.forceRecompute=r,this.counter=0}beginUpdate(r){this.counter++}endUpdate(r){this.counter--,this.counter===0&&this.forceRecompute&&r.reportChanges()}handlePossibleChange(r){}handleChange(r,c){}}}),define(ne[42],se([1,0,165,389,262,390,142]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.waitForState=e.observableSignalFromEvent=e.observableSignal=e.observableFromEvent=e.keepAlive=e.constObservable=e.autorunOpts=e.autorunWithStore=e.autorunHandleChanges=e.autorun=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=e.subtransaction=e.transaction=e.disposableObservableValue=e.observableValue=void 0,Object.defineProperty(e,"observableValue",{enumerable:!0,get:function(){return L.observableValue}}),Object.defineProperty(e,"disposableObservableValue",{enumerable:!0,get:function(){return L.disposableObservableValue}}),Object.defineProperty(e,"transaction",{enumerable:!0,get:function(){return L.transaction}}),Object.defineProperty(e,"subtransaction",{enumerable:!0,get:function(){return L.subtransaction}}),Object.defineProperty(e,"derived",{enumerable:!0,get:function(){return k.derived}}),Object.defineProperty(e,"derivedOpts",{enumerable:!0,get:function(){return k.derivedOpts}}),Object.defineProperty(e,"derivedHandleChanges",{enumerable:!0,get:function(){return k.derivedHandleChanges}}),Object.defineProperty(e,"derivedWithStore",{enumerable:!0,get:function(){return k.derivedWithStore}}),Object.defineProperty(e,"autorun",{enumerable:!0,get:function(){return y.autorun}}),Object.defineProperty(e,"autorunHandleChanges",{enumerable:!0,get:function(){return y.autorunHandleChanges}}),Object.defineProperty(e,"autorunWithStore",{enumerable:!0,get:function(){return y.autorunWithStore}}),Object.defineProperty(e,"autorunOpts",{enumerable:!0,get:function(){return y.autorunOpts}}),Object.defineProperty(e,"constObservable",{enumerable:!0,get:function(){return D.constObservable}}),Object.defineProperty(e,"keepAlive",{enumerable:!0,get:function(){return D.keepAlive}}),Object.defineProperty(e,"observableFromEvent",{enumerable:!0,get:function(){return D.observableFromEvent}}),Object.defineProperty(e,"observableSignal",{enumerable:!0,get:function(){return D.observableSignal}}),Object.defineProperty(e,"observableSignalFromEvent",{enumerable:!0,get:function(){return D.observableSignalFromEvent}}),Object.defineProperty(e,"waitForState",{enumerable:!0,get:function(){return D.waitForState}}),!1&&(0,S.setLogger)(new S.ConsoleObservableLogger)}),define(ne[166],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Range=void 0;var L;(function(k){function y(_,g){if(_.start>=g.end||g.start>=_.end)return{start:0,end:0};const C=Math.max(_.start,g.start),s=Math.min(_.end,g.end);return s-C<=0?{start:0,end:0}:{start:C,end:s}}k.intersect=y;function D(_){return _.end-_.start<=0}k.isEmpty=D;function S(_,g){return!D(y(_,g))}k.intersects=S;function f(_,g){const C=[],s={start:_.start,end:Math.min(g.start,_.end)},i={start:Math.max(g.end,_.start),end:_.end};return D(s)||C.push(s),D(i)||C.push(i),C}k.relativeComplement=f})(L||(e.Range=L={}))}),define(ne[391],se([1,0,166]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RangeMap=e.consolidate=e.shift=e.groupIntersect=void 0;function k(_,g){const C=[];for(const s of g){if(_.start>=s.range.end)continue;if(_.endg.concat(C),[]))}class f{get paddingTop(){return this._paddingTop}set paddingTop(g){this._size=this._size+g-this._paddingTop,this._paddingTop=g}constructor(g){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=g??0,this._size=this._paddingTop}splice(g,C,s=[]){const i=s.length-C,n=k({start:0,end:g},this.groups),t=k({start:g+C,end:Number.POSITIVE_INFINITY},this.groups).map(u=>({range:y(u.range,i),size:u.size})),a=s.map((u,h)=>({range:{start:g+h,end:g+h+1},size:u.size}));this.groups=S(n,a,t),this._size=this._paddingTop+this.groups.reduce((u,h)=>u+h.size*(h.range.end-h.range.start),0)}get count(){const g=this.groups.length;return g?this.groups[g-1].range.end:0}get size(){return this._size}indexAt(g){if(g<0)return-1;if(gy.Disposable.None;function w(ce){if(_){const{onDidAddListener:de}=ce,he=n.create();let ue=0;ce.onDidAddListener=()=>{++ue===2&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),he.print()),de?.()}}}function E(ce,de){return O(ce,()=>{},0,void 0,!0,void 0,de)}b.defer=E;function I(ce){return(de,he=null,ue)=>{let te=!1,q;return q=ce(z=>{if(!te)return q?q.dispose():te=!0,de.call(he,z)},null,ue),te&&q.dispose(),q}}b.once=I;function M(ce,de,he){return F((ue,te=null,q)=>ce(z=>ue.call(te,de(z)),null,q),he)}b.map=M;function P(ce,de,he){return F((ue,te=null,q)=>ce(z=>{de(z),ue.call(te,z)},null,q),he)}b.forEach=P;function x(ce,de,he){return F((ue,te=null,q)=>ce(z=>de(z)&&ue.call(te,z),null,q),he)}b.filter=x;function T(ce){return ce}b.signal=T;function A(...ce){return(de,he=null,ue)=>(0,y.combinedDisposable)(...ce.map(te=>te(q=>de.call(he,q),null,ue)))}b.any=A;function N(ce,de,he,ue){let te=he;return M(ce,q=>(te=de(te,q),te),ue)}b.reduce=N;function F(ce,de){let he;const ue={onWillAddFirstListener(){he=ce(te.fire,te)},onDidRemoveLastListener(){he?.dispose()}};de||w(ue);const te=new h(ue);return de?.add(te),te.event}function O(ce,de,he=100,ue=!1,te=!1,q,z){let ee,$,re,oe=0,ge;const ve={leakWarningThreshold:q,onWillAddFirstListener(){ee=ce(Le=>{oe++,$=de($,Le),ue&&!re&&(Se.fire($),$=void 0),ge=()=>{const De=$;$=void 0,re=void 0,(!ue||oe>1)&&Se.fire(De),oe=0},typeof he=="number"?(clearTimeout(re),re=setTimeout(ge,he)):re===void 0&&(re=0,queueMicrotask(ge))})},onWillRemoveListener(){te&&oe>0&&ge?.()},onDidRemoveLastListener(){ge=void 0,ee.dispose()}};z||w(ve);const Se=new h(ve);return z?.add(Se),Se.event}b.debounce=O;function W(ce,de=0,he){return b.debounce(ce,(ue,te)=>ue?(ue.push(te),ue):[te],de,void 0,!0,void 0,he)}b.accumulate=W;function U(ce,de=(ue,te)=>ue===te,he){let ue=!0,te;return x(ce,q=>{const z=ue||!de(q,te);return ue=!1,te=q,z},he)}b.latch=U;function j(ce,de,he){return[b.filter(ce,de,he),b.filter(ce,ue=>!de(ue),he)]}b.split=j;function R(ce,de=!1,he=[]){let ue=he.slice(),te=ce(ee=>{ue?ue.push(ee):z.fire(ee)});const q=()=>{ue?.forEach(ee=>z.fire(ee)),ue=null},z=new h({onWillAddFirstListener(){te||(te=ce(ee=>z.fire(ee)))},onDidAddFirstListener(){ue&&(de?setTimeout(q):q())},onDidRemoveLastListener(){te&&te.dispose(),te=null}});return z.event}b.buffer=R;class K{constructor(de){this.event=de,this.disposables=new y.DisposableStore}map(de){return new K(M(this.event,de,this.disposables))}forEach(de){return new K(P(this.event,de,this.disposables))}filter(de){return new K(x(this.event,de,this.disposables))}reduce(de,he){return new K(N(this.event,de,he,this.disposables))}latch(){return new K(U(this.event,void 0,this.disposables))}debounce(de,he=100,ue=!1,te=!1,q){return new K(O(this.event,de,he,ue,te,q,this.disposables))}on(de,he,ue){return this.event(de,he,ue)}once(de,he,ue){return I(this.event)(de,he,ue)}dispose(){this.disposables.dispose()}}function G(ce){return new K(ce)}b.chain=G;function Z(ce,de,he=ue=>ue){const ue=(...ee)=>z.fire(he(...ee)),te=()=>ce.on(de,ue),q=()=>ce.removeListener(de,ue),z=new h({onWillAddFirstListener:te,onDidRemoveLastListener:q});return z.event}b.fromNodeEventEmitter=Z;function J(ce,de,he=ue=>ue){const ue=(...ee)=>z.fire(he(...ee)),te=()=>ce.addEventListener(de,ue),q=()=>ce.removeEventListener(de,ue),z=new h({onWillAddFirstListener:te,onDidRemoveLastListener:q});return z.event}b.fromDOMEventEmitter=J;function X(ce){return new Promise(de=>I(ce)(de))}b.toPromise=X;function H(ce){const de=new h;return ce.then(he=>{de.fire(he)},()=>{de.fire(void 0)}).finally(()=>{de.dispose()}),de.event}b.fromPromise=H;function B(ce,de){return de(void 0),ce(he=>de(he))}b.runAndSubscribe=B;function V(ce,de){let he=null;function ue(q){he?.dispose(),he=new y.DisposableStore,de(q,he)}ue(void 0);const te=ce(q=>ue(q));return(0,y.toDisposable)(()=>{te.dispose(),he?.dispose()})}b.runAndSubscribeWithStore=V;class Y{constructor(de,he){this._observable=de,this._counter=0,this._hasChanged=!1;const ue={onWillAddFirstListener:()=>{de.addObserver(this)},onDidRemoveLastListener:()=>{de.removeObserver(this)}};he||w(ue),this.emitter=new h(ue),he&&he.add(this.emitter)}beginUpdate(de){this._counter++}handlePossibleChange(de){}handleChange(de,he){this._hasChanged=!0}endUpdate(de){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function ie(ce,de){return new Y(ce,de).emitter.event}b.fromObservable=ie;function ae(ce){return de=>{let he=0,ue=!1;const te={beginUpdate(){he++},endUpdate(){he--,he===0&&(ce.reportChanges(),ue&&(ue=!1,de()))},handlePossibleChange(){},handleChange(){ue=!0}};return ce.addObserver(te),ce.reportChanges(),{dispose(){ce.removeObserver(te)}}}}b.fromObservableLight=ae})(g||(e.Event=g={}));class C{constructor(w){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${w}_${C._idPool++}`,C.all.add(this)}start(w){this._stopWatch=new S.StopWatch,this.listenerCount=w}stop(){if(this._stopWatch){const w=this._stopWatch.elapsed();this.durations.push(w),this.elapsedOverall+=w,this.invocationCount+=1,this._stopWatch=void 0}}}e.EventProfiling=C,C.all=new Set,C._idPool=0;let s=-1;class i{constructor(w,E=Math.random().toString(18).slice(2,5)){this.threshold=w,this.name=E,this._warnCountdown=0}dispose(){var w;(w=this._stacks)===null||w===void 0||w.clear()}check(w,E){const I=this.threshold;if(I<=0||E{const P=this._stacks.get(w.value)||0;this._stacks.set(w.value,P-1)}}}class n{static create(){var w;return new n((w=new Error().stack)!==null&&w!==void 0?w:"")}constructor(w){this.value=w}print(){console.warn(this.value.split(` -`).slice(2).join(` -`))}}class t{constructor(w){this.value=w}}const a=2,u=(b,w)=>{if(b instanceof t)w(b);else for(let E=0;E0||!((E=this._options)===null||E===void 0)&&E.leakWarningThreshold?new i((M=(I=this._options)===null||I===void 0?void 0:I.leakWarningThreshold)!==null&&M!==void 0?M:s):void 0,this._perfMon=!((P=this._options)===null||P===void 0)&&P._profName?new C(this._options._profName):void 0,this._deliveryQueue=(x=this._options)===null||x===void 0?void 0:x.deliveryQueue}dispose(){var w,E,I,M;if(!this._disposed){if(this._disposed=!0,((w=this._deliveryQueue)===null||w===void 0?void 0:w.current)===this&&this._deliveryQueue.reset(),this._listeners){if(f){const P=this._listeners;queueMicrotask(()=>{u(P,x=>{var T;return(T=x.stack)===null||T===void 0?void 0:T.print()})})}this._listeners=void 0,this._size=0}(I=(E=this._options)===null||E===void 0?void 0:E.onDidRemoveLastListener)===null||I===void 0||I.call(E),(M=this._leakageMon)===null||M===void 0||M.dispose()}}get event(){var w;return(w=this._event)!==null&&w!==void 0||(this._event=(E,I,M)=>{var P,x,T,A,N;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),y.Disposable.None;if(this._disposed)return y.Disposable.None;I&&(E=E.bind(I));const F=new t(E);let O,W;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(F.stack=n.create(),O=this._leakageMon.check(F.stack,this._size+1)),f&&(F.stack=W??n.create()),this._listeners?this._listeners instanceof t?((N=this._deliveryQueue)!==null&&N!==void 0||(this._deliveryQueue=new c),this._listeners=[this._listeners,F]):this._listeners.push(F):((x=(P=this._options)===null||P===void 0?void 0:P.onWillAddFirstListener)===null||x===void 0||x.call(P,this),this._listeners=F,(A=(T=this._options)===null||T===void 0?void 0:T.onDidAddFirstListener)===null||A===void 0||A.call(T,this)),this._size++;const U=(0,y.toDisposable)(()=>{O?.(),this._removeListener(F)});return M instanceof y.DisposableStore?M.add(U):Array.isArray(M)&&M.push(U),U}),this._event}_removeListener(w){var E,I,M,P;if((I=(E=this._options)===null||E===void 0?void 0:E.onWillRemoveListener)===null||I===void 0||I.call(E,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(P=(M=this._options)===null||M===void 0?void 0:M.onDidRemoveLastListener)===null||P===void 0||P.call(M,this),this._size=0;return}const x=this._listeners,T=x.indexOf(w);if(T===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,x[T]=void 0;const A=this._deliveryQueue.current===this;if(this._size*a<=x.length){let N=0;for(let F=0;F0}}e.Emitter=h;const r=()=>new c;e.createEventDeliveryQueue=r;class c{constructor(){this.i=-1,this.end=0}enqueue(w,E,I){this.i=0,this.end=I,this.current=w,this.value=E}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class o extends h{constructor(w){super(w),this._isPaused=0,this._eventQueue=new D.LinkedList,this._mergeFn=w?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const w=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(w))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(w){this._size&&(this._isPaused!==0?this._eventQueue.push(w):super.fire(w))}}e.PauseableEmitter=o;class d extends o{constructor(w){var E;super(w),this._delay=(E=w.delay)!==null&&E!==void 0?E:100}fire(w){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(w)}}e.DebounceEmitter=d;class l extends h{constructor(w){super(w),this._queuedEvents=[],this._mergeFn=w?.merge}fire(w){this.hasListeners()&&(this._queuedEvents.push(w),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(E=>super.fire(E)),this._queuedEvents=[]}))}}e.MicrotaskEmitter=l;class p{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new h({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(w){const E={event:w,listener:null};this.events.push(E),this.hasListeners&&this.hook(E);const I=()=>{this.hasListeners&&this.unhook(E);const M=this.events.indexOf(E);this.events.splice(M,1)};return(0,y.toDisposable)((0,k.once)(I))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(w=>this.hook(w))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(w=>this.unhook(w))}hook(w){w.listener=w.event(E=>this.emitter.fire(E))}unhook(w){w.listener&&w.listener.dispose(),w.listener=null}dispose(){this.emitter.dispose()}}e.EventMultiplexer=p;class m{constructor(){this.buffers=[]}wrapEvent(w){return(E,I,M)=>w(P=>{const x=this.buffers[this.buffers.length-1];x?x.push(()=>E.call(I,P)):E.call(I,P)},void 0,M)}bufferEvents(w){const E=[];this.buffers.push(E);const I=w();return this.buffers.pop(),E.forEach(M=>M()),I}}e.EventBufferer=m;class v{constructor(){this.listening=!1,this.inputEvent=g.None,this.inputEventListener=y.Disposable.None,this.emitter=new h({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(w){this.inputEvent=w,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=w(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}e.Relay=v}),define(ne[52],se([1,0,6,2]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isStandalone=e.isAndroid=e.isElectron=e.isWebkitWebView=e.isSafari=e.isChrome=e.isWebKit=e.isFirefox=e.getZoomFactor=e.PixelRatio=e.addMatchMediaChangeListener=void 0;class y{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}y.INSTANCE=new y;class D extends k.Disposable{constructor(){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(t){var a;(a=this._mediaQueryList)===null||a===void 0||a.removeEventListener("change",this._listener),this._mediaQueryList=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),t&&this._onDidChange.fire()}}class S extends k.Disposable{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();const t=this._register(new D);this._register(t.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}_getPixelRatio(){const t=document.createElement("canvas").getContext("2d"),a=window.devicePixelRatio||1,u=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return a/u}}class f{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=(0,k.markAsSingleton)(new S)),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}}function _(n,t){typeof n=="string"&&(n=window.matchMedia(n)),n.addEventListener("change",t)}e.addMatchMediaChangeListener=_,e.PixelRatio=new f;function g(){return y.INSTANCE.getZoomFactor()}e.getZoomFactor=g;const C=navigator.userAgent;e.isFirefox=C.indexOf("Firefox")>=0,e.isWebKit=C.indexOf("AppleWebKit")>=0,e.isChrome=C.indexOf("Chrome")>=0,e.isSafari=!e.isChrome&&C.indexOf("Safari")>=0,e.isWebkitWebView=!e.isChrome&&!e.isSafari&&e.isWebKit,e.isElectron=C.indexOf("Electron/")>=0,e.isAndroid=C.indexOf("Android")>=0;let s=!1;if(window.matchMedia){const n=window.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),t=window.matchMedia("(display-mode: fullscreen)");s=n.matches,_(n,({matches:a})=>{s&&t.matches||(s=a)})}function i(){return s}e.isStandalone=i}),define(ne[81],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DomEmitter=void 0;class k{get event(){return this.emitter.event}constructor(D,S,f){const _=g=>this.emitter.fire(g);this.emitter=new L.Emitter({onWillAddFirstListener:()=>D.addEventListener(S,_,f),onDidRemoveLastListener:()=>D.removeEventListener(S,_,f)})}dispose(){this.emitter.dispose()}}e.DomEmitter=k}),define(ne[19],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;const k=Object.freeze(function(f,_){const g=setTimeout(f.bind(_),0);return{dispose(){clearTimeout(g)}}});var y;(function(f){function _(g){return g===f.None||g===f.Cancelled||g instanceof D?!0:!g||typeof g!="object"?!1:typeof g.isCancellationRequested=="boolean"&&typeof g.onCancellationRequested=="function"}f.isCancellationToken=_,f.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:L.Event.None}),f.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:k})})(y||(e.CancellationToken=y={}));class D{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?k:(this._emitter||(this._emitter=new L.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class S{constructor(_){this._token=void 0,this._parentListener=void 0,this._parentListener=_&&_.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new D),this._token}cancel(){this._token?this._token instanceof D&&this._token.cancel():this._token=y.Cancelled}dispose(_=!1){var g;_&&this.cancel(),(g=this._parentListener)===null||g===void 0||g.dispose(),this._token?this._token instanceof D&&this._token.dispose():this._token=y.None}}e.CancellationTokenSource=S}),define(ne[263],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IME=e.IMEImpl=void 0;class k{constructor(){this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}e.IMEImpl=k,e.IME=new k}),define(ne[167],se([1,0,6,2]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SmoothScrollingOperation=e.SmoothScrollingUpdate=e.Scrollable=e.ScrollState=void 0;class y{constructor(n,t,a,u,h,r,c){this._forceIntegerValues=n,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,a=a|0,u=u|0,h=h|0,r=r|0,c=c|0),this.rawScrollLeft=u,this.rawScrollTop=c,t<0&&(t=0),u+t>a&&(u=a-t),u<0&&(u=0),h<0&&(h=0),c+h>r&&(c=r-h),c<0&&(c=0),this.width=t,this.scrollWidth=a,this.scrollLeft=u,this.height=h,this.scrollHeight=r,this.scrollTop=c}equals(n){return this.rawScrollLeft===n.rawScrollLeft&&this.rawScrollTop===n.rawScrollTop&&this.width===n.width&&this.scrollWidth===n.scrollWidth&&this.scrollLeft===n.scrollLeft&&this.height===n.height&&this.scrollHeight===n.scrollHeight&&this.scrollTop===n.scrollTop}withScrollDimensions(n,t){return new y(this._forceIntegerValues,typeof n.width<"u"?n.width:this.width,typeof n.scrollWidth<"u"?n.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof n.height<"u"?n.height:this.height,typeof n.scrollHeight<"u"?n.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(n){return new y(this._forceIntegerValues,this.width,this.scrollWidth,typeof n.scrollLeft<"u"?n.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof n.scrollTop<"u"?n.scrollTop:this.rawScrollTop)}createScrollEvent(n,t){const a=this.width!==n.width,u=this.scrollWidth!==n.scrollWidth,h=this.scrollLeft!==n.scrollLeft,r=this.height!==n.height,c=this.scrollHeight!==n.scrollHeight,o=this.scrollTop!==n.scrollTop;return{inSmoothScrolling:t,oldWidth:n.width,oldScrollWidth:n.scrollWidth,oldScrollLeft:n.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:n.height,oldScrollHeight:n.scrollHeight,oldScrollTop:n.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:a,scrollWidthChanged:u,scrollLeftChanged:h,heightChanged:r,scrollHeightChanged:c,scrollTopChanged:o}}}e.ScrollState=y;class D extends k.Disposable{constructor(n){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new L.Emitter),this.onScroll=this._onScroll.event,this._smoothScrollDuration=n.smoothScrollDuration,this._scheduleAtNextAnimationFrame=n.scheduleAtNextAnimationFrame,this._state=new y(n.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(n){this._smoothScrollDuration=n}validateScrollPosition(n){return this._state.withScrollPosition(n)}getScrollDimensions(){return this._state}setScrollDimensions(n,t){var a;const u=this._state.withScrollDimensions(n,t);this._setState(u,!!this._smoothScrolling),(a=this._smoothScrolling)===null||a===void 0||a.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(n){const t=this._state.withScrollPosition(n);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(n,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(n);if(this._smoothScrolling){n={scrollLeft:typeof n.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:n.scrollLeft,scrollTop:typeof n.scrollTop>"u"?this._smoothScrolling.to.scrollTop:n.scrollTop};const a=this._state.withScrollPosition(n);if(this._smoothScrolling.to.scrollLeft===a.scrollLeft&&this._smoothScrolling.to.scrollTop===a.scrollTop)return;let u;t?u=new g(this._smoothScrolling.from,a,this._smoothScrolling.startTime,this._smoothScrolling.duration):u=this._smoothScrolling.combine(this._state,a,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=u}else{const a=this._state.withScrollPosition(n);this._smoothScrolling=g.start(this._state,a,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const n=this._smoothScrolling.tick(),t=this._state.withScrollPosition(n);if(this._setState(t,!0),!!this._smoothScrolling){if(n.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(n,t){const a=this._state;a.equals(n)||(this._state=n,this._onScroll.fire(this._state.createScrollEvent(a,t)))}}e.Scrollable=D;class S{constructor(n,t,a){this.scrollLeft=n,this.scrollTop=t,this.isDone=a}}e.SmoothScrollingUpdate=S;function f(i,n){const t=n-i;return function(a){return i+t*s(a)}}function _(i,n,t){return function(a){return a2.5*a){let h,r;return n=re.length?oe:re[ve]})}e.format=f;function _($){return $.replace(/[<>&]/g,function(re){switch(re){case"<":return"<";case">":return">";case"&":return"&";default:return re}})}e.escape=_;function g($){return $.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}e.escapeRegExpCharacters=g;function C($,re=" "){const oe=s($,re);return i(oe,re)}e.trim=C;function s($,re){if(!$||!re)return $;const oe=re.length;if(oe===0||$.length===0)return $;let ge=0;for(;$.indexOf(re,ge)===ge;)ge=ge+oe;return $.substring(ge)}e.ltrim=s;function i($,re){if(!$||!re)return $;const oe=re.length,ge=$.length;if(oe===0||ge===0)return $;let ve=ge,Se=-1;for(;Se=$.lastIndexOf(re,ve-1),!(Se===-1||Se+oe!==ve);){if(Se===0)return"";ve=Se}return $.substring(0,ve)}e.rtrim=i;function n($){return $.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}e.convertSimple2RegExpPattern=n;function t($){return $.replace(/\*/g,"")}e.stripWildcards=t;function a($,re,oe={}){if(!$)throw new Error("Cannot create regex from empty string");re||($=g($)),oe.wholeWord&&(/\B/.test($.charAt(0))||($="\\b"+$),/\B/.test($.charAt($.length-1))||($=$+"\\b"));let ge="";return oe.global&&(ge+="g"),oe.matchCase||(ge+="i"),oe.multiline&&(ge+="m"),oe.unicode&&(ge+="u"),new RegExp($,ge)}e.createRegExp=a;function u($){return $.source==="^"||$.source==="^$"||$.source==="$"||$.source==="^\\s*$"?!1:!!($.exec("")&&$.lastIndex===0)}e.regExpLeadsToEndlessLoop=u;function h($){return $.split(/\r\n|\r|\n/)}e.splitLines=h;function r($){for(let re=0,oe=$.length;re=0;oe--){const ge=$.charCodeAt(oe);if(ge!==32&&ge!==9)return oe}return-1}e.lastNonWhitespaceIndex=o;function d($,re){return $re?1:0}e.compare=d;function l($,re,oe=0,ge=$.length,ve=0,Se=re.length){for(;oeEe)return 1}const Le=ge-oe,De=Se-ve;return LeDe?1:0}e.compareSubstring=l;function p($,re){return m($,re,0,$.length,0,re.length)}e.compareIgnoreCase=p;function m($,re,oe=0,ge=$.length,ve=0,Se=re.length){for(;oe=128||Ee>=128)return l($.toLowerCase(),re.toLowerCase(),oe,ge,ve,Se);b(ye)&&(ye-=32),b(Ee)&&(Ee-=32);const Me=ye-Ee;if(Me!==0)return Me}const Le=ge-oe,De=Se-ve;return LeDe?1:0}e.compareSubstringIgnoreCase=m;function v($){return $>=48&&$<=57}e.isAsciiDigit=v;function b($){return $>=97&&$<=122}e.isLowerAsciiLetter=b;function w($){return $>=65&&$<=90}e.isUpperAsciiLetter=w;function E($,re){return $.length===re.length&&m($,re)===0}e.equalsIgnoreCase=E;function I($,re){const oe=re.length;return re.length>$.length?!1:m($,re,0,oe)===0}e.startsWithIgnoreCase=I;function M($,re){const oe=Math.min($.length,re.length);let ge;for(ge=0;ge1){const ge=$.charCodeAt(re-2);if(x(ge))return A(ge,oe)}return oe}class O{get offset(){return this._offset}constructor(re,oe=0){this._str=re,this._len=re.length,this._offset=oe}setOffset(re){this._offset=re}prevCodePoint(){const re=F(this._str,this._offset);return this._offset-=re>=65536?2:1,re}nextCodePoint(){const re=N(this._str,this._len,this._offset);return this._offset+=re>=65536?2:1,re}eol(){return this._offset>=this._len}}e.CodePointIterator=O;class W{get offset(){return this._iterator.offset}constructor(re,oe=0){this._iterator=new O(re,oe)}nextGraphemeLength(){const re=de.getInstance(),oe=this._iterator,ge=oe.offset;let ve=re.getGraphemeBreakType(oe.nextCodePoint());for(;!oe.eol();){const Se=oe.offset,Le=re.getGraphemeBreakType(oe.nextCodePoint());if(ce(ve,Le)){oe.setOffset(Se);break}ve=Le}return oe.offset-ge}prevGraphemeLength(){const re=de.getInstance(),oe=this._iterator,ge=oe.offset;let ve=re.getGraphemeBreakType(oe.prevCodePoint());for(;oe.offset>0;){const Se=oe.offset,Le=re.getGraphemeBreakType(oe.prevCodePoint());if(ce(Le,ve)){oe.setOffset(Se);break}ve=Le}return ge-oe.offset}eol(){return this._iterator.eol()}}e.GraphemeIterator=W;function U($,re){return new W($,re).nextGraphemeLength()}e.nextCharLength=U;function j($,re){return new W($,re).prevGraphemeLength()}e.prevCharLength=j;function R($,re){re>0&&T($.charCodeAt(re))&&re--;const oe=re+U($,re);return[oe-j($,oe),oe]}e.getCharContainingOffset=R;let K;function G(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function Z($){return K||(K=G()),K.test($)}e.containsRTL=Z;const J=/^[\t\n\r\x20-\x7E]*$/;function X($){return J.test($)}e.isBasicASCII=X,e.UNUSUAL_LINE_TERMINATORS=/[\u2028\u2029]/;function H($){return e.UNUSUAL_LINE_TERMINATORS.test($)}e.containsUnusualLineTerminators=H;function B($){return $>=11904&&$<=55215||$>=63744&&$<=64255||$>=65281&&$<=65374}e.isFullWidthCharacter=B;function V($){return $>=127462&&$<=127487||$===8986||$===8987||$===9200||$===9203||$>=9728&&$<=10175||$===11088||$===11093||$>=127744&&$<=128591||$>=128640&&$<=128764||$>=128992&&$<=129008||$>=129280&&$<=129535||$>=129648&&$<=129782}e.isEmojiImprecise=V,e.UTF8_BOM_CHARACTER=String.fromCharCode(65279);function Y($){return!!($&&$.length>0&&$.charCodeAt(0)===65279)}e.startsWithUTF8BOM=Y;function ie($,re=!1){return $?(re&&($=$.replace(/\\./g,"")),$.toLowerCase()!==$):!1}e.containsUppercaseCharacter=ie;function ae($){return $=$%(2*26),$<26?String.fromCharCode(97+$):String.fromCharCode(65+$-26)}e.singleLetterHash=ae;function ce($,re){return $===0?re!==5&&re!==7:$===2&&re===3?!1:$===4||$===2||$===3||re===4||re===2||re===3?!0:!($===8&&(re===8||re===9||re===11||re===12)||($===11||$===9)&&(re===9||re===10)||($===12||$===10)&&re===10||re===5||re===13||re===7||$===1||$===13&&re===14||$===6&&re===6)}class de{static getInstance(){return de._INSTANCE||(de._INSTANCE=new de),de._INSTANCE}constructor(){this._data=he()}getGraphemeBreakType(re){if(re<32)return re===10?3:re===13?2:4;if(re<127)return 0;const oe=this._data,ge=oe.length/3;let ve=1;for(;ve<=ge;)if(reoe[3*ve+1])ve=2*ve+1;else return oe[3*ve+2];return 0}}de._INSTANCE=null;function he(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function ue($,re){if($===0)return 0;const oe=te($,re);if(oe!==void 0)return oe;const ge=new O(re,$);return ge.prevCodePoint(),ge.offset}e.getLeftDeleteOffset=ue;function te($,re){const oe=new O(re,$);let ge=oe.prevCodePoint();for(;q(ge)||ge===65039||ge===8419;){if(oe.offset===0)return;ge=oe.prevCodePoint()}if(!V(ge))return;let ve=oe.offset;return ve>0&&oe.prevCodePoint()===8205&&(ve=oe.offset),ve}function q($){return 127995<=$&&$<=127999}e.noBreakWhitespace="\xA0";class z{static getInstance(re){return y.cache.get(Array.from(re))}static getLocales(){return y._locales.value}constructor(re){this.confusableDictionary=re}isAmbiguous(re){return this.confusableDictionary.has(re)}getPrimaryConfusable(re){return this.confusableDictionary.get(re)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}e.AmbiguousCharacters=z,y=z,z.ambiguousCharacterData=new k.Lazy(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),z.cache=new L.LRUCachedFunction($=>{function re(Ee){const Me=new Map;for(let Pe=0;Pe!Ee.startsWith("_")&&Ee in ve);Se.length===0&&(Se=["_default"]);let Le;for(const Ee of Se){const Me=re(ve[Ee]);Le=ge(Le,Me)}const De=re(ve._common),ye=oe(De,Le);return new y(ye)}),z._locales=new k.Lazy(()=>Object.keys(y.ambiguousCharacterData.value).filter($=>!$.startsWith("_")));class ee{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(ee.getRawData())),this._data}static isInvisibleCharacter(re){return ee.getData().has(re)}static get codePoints(){return ee.getData()}}e.InvisibleCharacters=ee,ee._data=void 0}),define(ne[72],se([1,0,65,11]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fuzzyScoreGracefulAggressive=e.fuzzyScore=e.FuzzyScoreOptions=e.FuzzyScore=e.isPatternInWord=e.createMatches=e.anyScore=e.matchesFuzzy2=e.matchesFuzzy=e.matchesWords=e.matchesCamelCase=e.isUpper=e.matchesSubString=e.matchesContiguousSubString=e.matchesPrefix=e.matchesStrictPrefix=e.or=void 0;function y(...q){return function(z,ee){for(let $=0,re=q.length;$0?[{start:0,end:z.length}]:[]:null}function S(q,z){const ee=z.toLowerCase().indexOf(q.toLowerCase());return ee===-1?null:[{start:ee,end:ee+q.length}]}e.matchesContiguousSubString=S;function f(q,z){return _(q.toLowerCase(),z.toLowerCase(),0,0)}e.matchesSubString=f;function _(q,z,ee,$){if(ee===q.length)return[];if($===z.length)return null;if(q[ee]===z[$]){let re=null;return(re=_(q,z,ee+1,$+1))?h({start:$,end:$+1},re):null}return _(q,z,ee,$+1)}function g(q){return 97<=q&&q<=122}function C(q){return 65<=q&&q<=90}e.isUpper=C;function s(q){return 48<=q&&q<=57}function i(q){return q===32||q===9||q===10||q===13}const n=new Set;"()[]{}<>`'\"-/;:,.?!".split("").forEach(q=>n.add(q.charCodeAt(0)));function t(q){return i(q)||n.has(q)}function a(q,z){return q===z||t(q)&&t(z)}function u(q){return g(q)||C(q)||s(q)}function h(q,z){return z.length===0?z=[q]:q.end===z[0].start?z[0].start=q.start:z.unshift(q),z}function r(q,z){for(let ee=z;ee0&&!u(q.charCodeAt(ee-1)))return ee}return q.length}function c(q,z,ee,$){if(ee===q.length)return[];if($===z.length)return null;if(q[ee]!==z[$].toLowerCase())return null;{let re=null,oe=$+1;for(re=c(q,z,ee+1,$+1);!re&&(oe=r(z,oe)).6}function l(q){const{upperPercent:z,lowerPercent:ee,alphaPercent:$,numericPercent:re}=q;return ee>.2&&z<.8&&$>.6&&re<.2}function p(q){let z=0,ee=0,$=0,re=0;for(let oe=0;oe60)return null;const ee=o(z);if(!l(ee)){if(!d(ee))return null;z=z.toLowerCase()}let $=null,re=0;for(q=q.toLowerCase();re0&&t(q.charCodeAt(ee-1)))return ee;return q.length}const E=y(e.matchesPrefix,m,S),I=y(e.matchesPrefix,m,f),M=new L.LRUCache(1e4);function P(q,z,ee=!1){if(typeof q!="string"||typeof z!="string")return null;let $=M.get(q);$||($=new RegExp(k.convertSimple2RegExpPattern(q),"i"),M.set(q,$));const re=$.exec(z);return re?[{start:re.index,end:re.index+re[0].length}]:ee?I(q,z):E(q,z)}e.matchesFuzzy=P;function x(q,z){const ee=ae(q,q.toLowerCase(),0,z,z.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return ee?A(ee):null}e.matchesFuzzy2=x;function T(q,z,ee,$,re,oe){const ge=Math.min(13,q.length);for(;ee"u")return[];const z=[],ee=q[1];for(let $=q.length-1;$>1;$--){const re=q[$]+ee,oe=z[z.length-1];oe&&oe.end===re?oe.end=re+1:z.push({start:re,end:re+1})}return z}e.createMatches=A;const N=128;function F(){const q=[],z=[];for(let ee=0;ee<=N;ee++)z[ee]=0;for(let ee=0;ee<=N;ee++)q.push(z.slice(0));return q}function O(q){const z=[];for(let ee=0;ee<=q;ee++)z[ee]=0;return z}const W=O(2*N),U=O(2*N),j=F(),R=F(),K=F(),G=!1;function Z(q,z,ee,$,re){function oe(ve,Se,Le=" "){for(;ve.lengthoe(ve,3)).join("|")} -`;for(let ve=0;ve<=ee;ve++)ve===0?ge+=" |":ge+=`${z[ve-1]}|`,ge+=q[ve].slice(0,re+1).map(Se=>oe(Se.toString(),3)).join("|")+` -`;return ge}function J(q,z,ee,$){q=q.substr(z),ee=ee.substr($),console.log(Z(R,q,q.length,ee,ee.length)),console.log(Z(K,q,q.length,ee,ee.length)),console.log(Z(j,q,q.length,ee,ee.length))}function X(q,z){if(z<0||z>=q.length)return!1;const ee=q.codePointAt(z);switch(ee){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!k.isEmojiImprecise(ee)}}function H(q,z){if(z<0||z>=q.length)return!1;switch(q.charCodeAt(z)){case 32:case 9:return!0;default:return!1}}function B(q,z,ee){return z[q]!==ee[q]}function V(q,z,ee,$,re,oe,ge=!1){for(;zN?N:q.length,Se=$.length>N?N:$.length;if(ee>=ve||oe>=Se||ve-ee>Se-oe||!V(z,ee,ve,re,oe,Se,!0))return;ce(ve,Se,ee,oe,z,re);let Le=1,De=1,ye=ee,Ee=oe;const Me=[!1];for(Le=1,ye=ee;yele,Ve=Re?R[Le][De-1]+(j[Le][De-1]>0?-5:0):0,ze=Ee>le+1&&j[Le][De-1]>0,We=ze?R[Le][De-2]+(j[Le][De-2]>0?-5:0):0;if(ze&&(!Re||We>=Ve)&&(!Ie||We>=Ne))R[Le][De]=We,K[Le][De]=3,j[Le][De]=0;else if(Re&&(!Ie||Ve>=Ne))R[Le][De]=Ve,K[Le][De]=2,j[Le][De]=0;else if(Ie)R[Le][De]=Ne,K[Le][De]=1,j[Le][De]=j[Le-1][De-1]+1;else throw new Error("not possible")}}if(G&&J(q,ee,$,oe),!Me[0]&&!ge.firstMatchCanBeWeak)return;Le--,De--;const Pe=[R[Le][De],oe];let Fe=0,_e=0;for(;Le>=1;){let le=De;do{const pe=K[Le][le];if(pe===3)le=le-2;else if(pe===2)le=le-1;else break}while(le>=1);Fe>1&&z[ee+Le-1]===re[oe+De-1]&&!B(le+oe-1,$,re)&&Fe+1>j[Le][le]&&(le=De),le===De?Fe++:Fe=1,_e||(_e=le),Le--,De=le-1,Pe.push(De)}Se===ve&&ge.boostFullMatch&&(Pe[0]+=2);const me=_e-ve;return Pe[0]-=me,Pe}e.fuzzyScore=ae;function ce(q,z,ee,$,re,oe){let ge=q-1,ve=z-1;for(;ge>=ee&&ve>=$;)re[ge]===oe[ve]&&(U[ge]=ve,ge--),ve--}function de(q,z,ee,$,re,oe,ge,ve,Se,Le,De){if(z[ee]!==oe[ge])return Number.MIN_SAFE_INTEGER;let ye=1,Ee=!1;return ge===ee-$?ye=q[ee]===re[ge]?7:5:B(ge,re,oe)&&(ge===0||!B(ge-1,re,oe))?(ye=q[ee]===re[ge]?7:5,Ee=!0):X(oe,ge)&&(ge===0||!X(oe,ge-1))?ye=5:(X(oe,ge-1)||H(oe,ge-1))&&(ye=5,Ee=!0),ye>1&&ee===$&&(De[0]=!0),Ee||(Ee=B(ge,re,oe)||X(oe,ge-1)||H(oe,ge-1)),ee===$?ge>Se&&(ye-=Ee?3:5):Le?ye+=Ee?2:0:ye+=Ee?0:1,ge+1===ve&&(ye-=Ee?3:5),ye}function he(q,z,ee,$,re,oe,ge){return ue(q,z,ee,$,re,oe,!0,ge)}e.fuzzyScoreGracefulAggressive=he;function ue(q,z,ee,$,re,oe,ge,ve){let Se=ae(q,z,ee,$,re,oe,ve);if(Se&&!ge)return Se;if(q.length>=3){const Le=Math.min(7,q.length-1);for(let De=ee+1;DeSe[0])&&(Se=Ee))}}}return Se}function te(q,z){if(z+1>=q.length)return;const ee=q[z],$=q[z+1];if(ee!==$)return q.slice(0,z)+$+ee+q.slice(z+2)}}),define(ne[143],se([1,0,11]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StringSHA1=e.toHexString=e.stringHash=e.numberHash=e.doHash=e.hash=void 0;function k(a){return y(a,0)}e.hash=k;function y(a,u){switch(typeof a){case"object":return a===null?D(349,u):Array.isArray(a)?_(a,u):g(a,u);case"string":return f(a,u);case"boolean":return S(a,u);case"number":return D(a,u);case"undefined":return D(937,u);default:return D(617,u)}}e.doHash=y;function D(a,u){return(u<<5)-u+a|0}e.numberHash=D;function S(a,u){return D(a?433:863,u)}function f(a,u){u=D(149417,u);for(let h=0,r=a.length;hy(r,h),u)}function g(a,u){return u=D(181387,u),Object.keys(a).sort().reduce((h,r)=>(h=f(r,h),y(a[r],h)),u)}function C(a,u,h=32){const r=h-u,c=~((1<>>r)>>>0}function s(a,u=0,h=a.byteLength,r=0){for(let c=0;ch.toString(16).padStart(2,"0")).join(""):i((a>>>0).toString(16),u/4)}e.toHexString=n;class t{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(u){const h=u.length;if(h===0)return;const r=this._buff;let c=this._buffLen,o=this._leftoverHighSurrogate,d,l;for(o!==0?(d=o,l=-1,o=0):(d=u.charCodeAt(0),l=0);;){let p=d;if(L.isHighSurrogate(d))if(l+1>>6,u[h++]=128|(r&63)>>>0):r<65536?(u[h++]=224|(r&61440)>>>12,u[h++]=128|(r&4032)>>>6,u[h++]=128|(r&63)>>>0):(u[h++]=240|(r&1835008)>>>18,u[h++]=128|(r&258048)>>>12,u[h++]=128|(r&4032)>>>6,u[h++]=128|(r&63)>>>0),h>=64&&(this._step(),h-=64,this._totalLen+=64,u[0]=u[64+0],u[1]=u[64+1],u[2]=u[64+2]),h}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),n(this._h0)+n(this._h1)+n(this._h2)+n(this._h3)+n(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,s(this._buff,this._buffLen),this._buffLen>56&&(this._step(),s(this._buff));const u=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(u/4294967296),!1),this._buffDV.setUint32(60,u%4294967296,!1),this._step()}_step(){const u=t._bigBlock32,h=this._buffDV;for(let b=0;b<64;b+=4)u.setUint32(b,h.getUint32(b,!1),!1);for(let b=64;b<320;b+=4)u.setUint32(b,C(u.getUint32(b-12,!1)^u.getUint32(b-32,!1)^u.getUint32(b-56,!1)^u.getUint32(b-64,!1),1),!1);let r=this._h0,c=this._h1,o=this._h2,d=this._h3,l=this._h4,p,m,v;for(let b=0;b<80;b++)b<20?(p=c&o|~c&d,m=1518500249):b<40?(p=c^o^d,m=1859775393):b<60?(p=c&o|c&d|o&d,m=2400959708):(p=c^o^d,m=3395469782),v=C(r,5)+p+l+m+u.getUint32(b*4,!1)&4294967295,l=d,d=o,o=C(c,30),c=r,r=v;this._h0=this._h0+r&4294967295,this._h1=this._h1+c&4294967295,this._h2=this._h2+o&4294967295,this._h3=this._h3+d&4294967295,this._h4=this._h4+l&4294967295}}e.StringSHA1=t,t._bigBlock32=new DataView(new ArrayBuffer(320))}),define(ne[168],se([1,0,383,143]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LcsDiff=e.stringDiff=e.StringDiffSequence=void 0;class y{constructor(s){this.source=s}getElements(){const s=this.source,i=new Int32Array(s.length);for(let n=0,t=s.length;n0||this.m_modifiedCount>0)&&this.m_changes.push(new L.DiffChange(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(s,i){this.m_originalStart=Math.min(this.m_originalStart,s),this.m_modifiedStart=Math.min(this.m_modifiedStart,i),this.m_originalCount++}AddModifiedElement(s,i){this.m_originalStart=Math.min(this.m_originalStart,s),this.m_modifiedStart=Math.min(this.m_modifiedStart,i),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class g{constructor(s,i,n=null){this.ContinueProcessingPredicate=n,this._originalSequence=s,this._modifiedSequence=i;const[t,a,u]=g._getElements(s),[h,r,c]=g._getElements(i);this._hasStrings=u&&c,this._originalStringElements=t,this._originalElementsOrHash=a,this._modifiedStringElements=h,this._modifiedElementsOrHash=r,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(s){return s.length>0&&typeof s[0]=="string"}static _getElements(s){const i=s.getElements();if(g._isStringArray(i)){const n=new Int32Array(i.length);for(let t=0,a=i.length;t=s&&t>=n&&this.ElementsAreEqual(i,t);)i--,t--;if(s>i||n>t){let d;return n<=t?(S.Assert(s===i+1,"originalStart should only be one more than originalEnd"),d=[new L.DiffChange(s,0,n,t-n+1)]):s<=i?(S.Assert(n===t+1,"modifiedStart should only be one more than modifiedEnd"),d=[new L.DiffChange(s,i-s+1,n,0)]):(S.Assert(s===i+1,"originalStart should only be one more than originalEnd"),S.Assert(n===t+1,"modifiedStart should only be one more than modifiedEnd"),d=[]),d}const u=[0],h=[0],r=this.ComputeRecursionPoint(s,i,n,t,u,h,a),c=u[0],o=h[0];if(r!==null)return r;if(!a[0]){const d=this.ComputeDiffRecursive(s,c,n,o,a);let l=[];return a[0]?l=[new L.DiffChange(c+1,i-(c+1)+1,o+1,t-(o+1)+1)]:l=this.ComputeDiffRecursive(c+1,i,o+1,t,a),this.ConcatenateChanges(d,l)}return[new L.DiffChange(s,i-s+1,n,t-n+1)]}WALKTRACE(s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E){let I=null,M=null,P=new _,x=i,T=n,A=p[0]-b[0]-t,N=-1073741824,F=this.m_forwardHistory.length-1;do{const O=A+s;O===x||O=0&&(c=this.m_forwardHistory[F],s=c[0],x=1,T=c.length-1)}while(--F>=-1);if(I=P.getReverseChanges(),E[0]){let O=p[0]+1,W=b[0]+1;if(I!==null&&I.length>0){const U=I[I.length-1];O=Math.max(O,U.getOriginalEnd()),W=Math.max(W,U.getModifiedEnd())}M=[new L.DiffChange(O,l-O+1,W,v-W+1)]}else{P=new _,x=u,T=h,A=p[0]-b[0]-r,N=1073741824,F=w?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const O=A+a;O===x||O=o[O+1]?(d=o[O+1]-1,m=d-A-r,d>N&&P.MarkNextChange(),N=d+1,P.AddOriginalElement(d+1,m+1),A=O+1-a):(d=o[O-1],m=d-A-r,d>N&&P.MarkNextChange(),N=d,P.AddModifiedElement(d+1,m+1),A=O-1-a),F>=0&&(o=this.m_reverseHistory[F],a=o[0],x=1,T=o.length-1)}while(--F>=-1);M=P.getChanges()}return this.ConcatenateChanges(I,M)}ComputeRecursionPoint(s,i,n,t,a,u,h){let r=0,c=0,o=0,d=0,l=0,p=0;s--,n--,a[0]=0,u[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const m=i-s+(t-n),v=m+1,b=new Int32Array(v),w=new Int32Array(v),E=t-n,I=i-s,M=s-n,P=i-t,T=(I-E)%2===0;b[E]=s,w[I]=i,h[0]=!1;for(let A=1;A<=m/2+1;A++){let N=0,F=0;o=this.ClipDiagonalBound(E-A,A,E,v),d=this.ClipDiagonalBound(E+A,A,E,v);for(let W=o;W<=d;W+=2){W===o||WN+F&&(N=r,F=c),!T&&Math.abs(W-I)<=A-1&&r>=w[W])return a[0]=r,u[0]=c,U<=w[W]&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):null}const O=(N-s+(F-n)-A)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(N,O))return h[0]=!0,a[0]=N,u[0]=F,O>0&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):(s++,n++,[new L.DiffChange(s,i-s+1,n,t-n+1)]);l=this.ClipDiagonalBound(I-A,A,I,v),p=this.ClipDiagonalBound(I+A,A,I,v);for(let W=l;W<=p;W+=2){W===l||W=w[W+1]?r=w[W+1]-1:r=w[W-1],c=r-(W-I)-P;const U=r;for(;r>s&&c>n&&this.ElementsAreEqual(r,c);)r--,c--;if(w[W]=r,T&&Math.abs(W-E)<=A&&r<=b[W])return a[0]=r,u[0]=c,U>=b[W]&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):null}if(A<=1447){let W=new Int32Array(d-o+2);W[0]=E-o+1,f.Copy2(b,o,W,1,d-o+1),this.m_forwardHistory.push(W),W=new Int32Array(p-l+2),W[0]=I-l+1,f.Copy2(w,l,W,1,p-l+1),this.m_reverseHistory.push(W)}}return this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h)}PrettifyChanges(s){for(let i=0;i0,h=n.modifiedLength>0;for(;n.originalStart+n.originalLength=0;i--){const n=s[i];let t=0,a=0;if(i>0){const d=s[i-1];t=d.originalStart+d.originalLength,a=d.modifiedStart+d.modifiedLength}const u=n.originalLength>0,h=n.modifiedLength>0;let r=0,c=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength);for(let d=1;;d++){const l=n.originalStart-d,p=n.modifiedStart-d;if(lc&&(c=v,r=d)}n.originalStart-=r,n.modifiedStart-=r;const o=[null];if(i>0&&this.ChangesOverlap(s[i-1],s[i],o)){s[i-1]=o[0],s.splice(i,1),i++;continue}}if(this._hasStrings)for(let i=1,n=s.length;i0&&p>r&&(r=p,c=d,o=l)}return r>0?[c,o]:null}_contiguousSequenceScore(s,i,n){let t=0;for(let a=0;a=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[s])}_OriginalRegionIsBoundary(s,i){if(this._OriginalIsBoundary(s)||this._OriginalIsBoundary(s-1))return!0;if(i>0){const n=s+i;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}_ModifiedIsBoundary(s){return s<=0||s>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[s])}_ModifiedRegionIsBoundary(s,i){if(this._ModifiedIsBoundary(s)||this._ModifiedIsBoundary(s-1))return!0;if(i>0){const n=s+i;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}_boundaryScore(s,i,n,t){const a=this._OriginalRegionIsBoundary(s,i)?1:0,u=this._ModifiedRegionIsBoundary(n,t)?1:0;return a+u}ConcatenateChanges(s,i){const n=[];if(s.length===0||i.length===0)return i.length>0?i:s;if(this.ChangesOverlap(s[s.length-1],i[0],n)){const t=new Array(s.length+i.length-1);return f.Copy(s,0,t,0,s.length-1),t[s.length-1]=n[0],f.Copy(i,1,t,s.length,i.length-1),t}else{const t=new Array(s.length+i.length);return f.Copy(s,0,t,0,s.length),f.Copy(i,0,t,s.length,i.length),t}}ChangesOverlap(s,i,n){if(S.Assert(s.originalStart<=i.originalStart,"Left change is not less than or equal to right change"),S.Assert(s.modifiedStart<=i.modifiedStart,"Left change is not less than or equal to right change"),s.originalStart+s.originalLength>=i.originalStart||s.modifiedStart+s.modifiedLength>=i.modifiedStart){const t=s.originalStart;let a=s.originalLength;const u=s.modifiedStart;let h=s.modifiedLength;return s.originalStart+s.originalLength>=i.originalStart&&(a=i.originalStart+i.originalLength-s.originalStart),s.modifiedStart+s.modifiedLength>=i.modifiedStart&&(h=i.modifiedStart+i.modifiedLength-s.modifiedStart),n[0]=new L.DiffChange(t,a,u,h),!0}else return n[0]=null,!1}ClipDiagonalBound(s,i,n,t){if(s>=0&&s0?f[0].toUpperCase()+f.substr(1):S[0][0].toUpperCase()!==S[0][0]&&f.length>0?f[0].toLowerCase()+f.substr(1):f}else return f}e.buildReplaceStringWithCasePreserved=k;function y(S,f,_){return S[0].indexOf(_)!==-1&&f.indexOf(_)!==-1&&S[0].split(_).length===f.split(_).length}function D(S,f,_){const g=f.split(_),C=S[0].split(_);let s="";return g.forEach((i,n)=>{s+=k([C[n]],i)+_}),s.slice(0,-1)}}),define(ne[101],se([1,0,11]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var k;(function(y){y[y.Ignore=0]="Ignore",y[y.Info=1]="Info",y[y.Warning=2]="Warning",y[y.Error=3]="Error"})(k||(k={})),function(y){const D="error",S="warning",f="warn",_="info",g="ignore";function C(i){return i?L.equalsIgnoreCase(D,i)?y.Error:L.equalsIgnoreCase(S,i)||L.equalsIgnoreCase(f,i)?y.Warning:L.equalsIgnoreCase(_,i)?y.Info:y.Ignore:y.Ignore}y.fromValue=C;function s(i){switch(i){case y.Error:return D;case y.Warning:return S;case y.Info:return _;default:return g}}y.toString=s}(k||(k={})),e.default=k}),define(ne[264],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MicrotaskDelay=void 0,e.MicrotaskDelay=Symbol("MicrotaskDelay")}),define(ne[198],se([1,0,11]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TernarySearchTree=e.UriIterator=e.PathIterator=e.ConfigKeysIterator=e.StringIterator=void 0;class k{constructor(){this._value="",this._pos=0}reset(C){return this._value=C,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos=0;s--,this._valueLen--){const i=this._value.charCodeAt(s);if(!(i===47||this._splitOnBackslash&&i===92))break}return this.next()}hasNext(){return this._to!1,s=()=>!1){return new _(new S(C,s))}static forStrings(){return new _(new k)}static forConfigKeys(){return new _(new y)}constructor(C){this._iter=C}clear(){this._root=void 0}set(C,s){const i=this._iter.reset(C);let n;this._root||(this._root=new f,this._root.segment=i.value());const t=[];for(n=this._root;;){const u=i.cmp(n.segment);if(u>0)n.left||(n.left=new f,n.left.segment=i.value()),t.push([-1,n]),n=n.left;else if(u<0)n.right||(n.right=new f,n.right.segment=i.value()),t.push([1,n]),n=n.right;else if(i.hasNext())i.next(),n.mid||(n.mid=new f,n.mid.segment=i.value()),t.push([0,n]),n=n.mid;else break}const a=n.value;n.value=s,n.key=C;for(let u=t.length-1;u>=0;u--){const h=t[u][1];h.updateHeight();const r=h.balanceFactor();if(r<-1||r>1){const c=t[u][0],o=t[u+1][0];if(c===1&&o===1)t[u][1]=h.rotateLeft();else if(c===-1&&o===-1)t[u][1]=h.rotateRight();else if(c===1&&o===-1)h.right=t[u+1][1]=t[u+1][1].rotateRight(),t[u][1]=h.rotateLeft();else if(c===-1&&o===1)h.left=t[u+1][1]=t[u+1][1].rotateLeft(),t[u][1]=h.rotateRight();else throw new Error;if(u>0)switch(t[u-1][0]){case-1:t[u-1][1].left=t[u][1];break;case 1:t[u-1][1].right=t[u][1];break;case 0:t[u-1][1].mid=t[u][1];break}else this._root=t[0][1]}}return a}get(C){var s;return(s=this._getNode(C))===null||s===void 0?void 0:s.value}_getNode(C){const s=this._iter.reset(C);let i=this._root;for(;i;){const n=s.cmp(i.segment);if(n>0)i=i.left;else if(n<0)i=i.right;else if(s.hasNext())s.next(),i=i.mid;else break}return i}has(C){const s=this._getNode(C);return!(s?.value===void 0&&s?.mid===void 0)}delete(C){return this._delete(C,!1)}deleteSuperstr(C){return this._delete(C,!0)}_delete(C,s){var i;const n=this._iter.reset(C),t=[];let a=this._root;for(;a;){const u=n.cmp(a.segment);if(u>0)t.push([-1,a]),a=a.left;else if(u<0)t.push([1,a]),a=a.right;else if(n.hasNext())n.next(),t.push([0,a]),a=a.mid;else break}if(a){if(s?(a.left=void 0,a.mid=void 0,a.right=void 0,a.height=1):(a.key=void 0,a.value=void 0),!a.mid&&!a.value)if(a.left&&a.right){const u=this._min(a.right);if(u.key){const{key:h,value:r,segment:c}=u;this._delete(u.key,!1),a.key=h,a.value=r,a.segment=c}}else{const u=(i=a.left)!==null&&i!==void 0?i:a.right;if(t.length>0){const[h,r]=t[t.length-1];switch(h){case-1:r.left=u;break;case 0:r.mid=u;break;case 1:r.right=u;break}}else this._root=u}for(let u=t.length-1;u>=0;u--){const h=t[u][1];h.updateHeight();const r=h.balanceFactor();if(r>1?(h.right.balanceFactor()>=0||(h.right=h.right.rotateRight()),t[u][1]=h.rotateLeft()):r<-1&&(h.left.balanceFactor()<=0||(h.left=h.left.rotateLeft()),t[u][1]=h.rotateRight()),u>0)switch(t[u-1][0]){case-1:t[u-1][1].left=t[u][1];break;case 1:t[u-1][1].right=t[u][1];break;case 0:t[u-1][1].mid=t[u][1];break}else this._root=t[0][1]}}}_min(C){for(;C.left;)C=C.left;return C}findSubstr(C){const s=this._iter.reset(C);let i=this._root,n;for(;i;){const t=s.cmp(i.segment);if(t>0)i=i.left;else if(t<0)i=i.right;else if(s.hasNext())s.next(),n=i.value||n,i=i.mid;else break}return i&&i.value||n}findSuperstr(C){return this._findSuperstrOrElement(C,!1)}_findSuperstrOrElement(C,s){const i=this._iter.reset(C);let n=this._root;for(;n;){const t=i.cmp(n.segment);if(t>0)n=n.left;else if(t<0)n=n.right;else if(i.hasNext())i.next(),n=n.mid;else return n.mid?this._entries(n.mid):s?n.value:void 0}}forEach(C){for(const[s,i]of this)C(i,s)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(C){const s=[];return this._dfsEntries(C,s),s[Symbol.iterator]()}_dfsEntries(C,s){C&&(C.left&&this._dfsEntries(C.left,s),C.value&&s.push([C.key,C.value]),C.mid&&this._dfsEntries(C.mid,s),C.right&&this._dfsEntries(C.right,s))}}e.TernarySearchTree=_}),define(ne[20],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.validateConstraint=e.validateConstraints=e.isFunction=e.assertIsDefined=e.assertType=e.isUndefinedOrNull=e.isDefined=e.isUndefined=e.isBoolean=e.isIterable=e.isNumber=e.isTypedArray=e.isObject=e.isString=void 0;function L(u){return typeof u=="string"}e.isString=L;function k(u){return typeof u=="object"&&u!==null&&!Array.isArray(u)&&!(u instanceof RegExp)&&!(u instanceof Date)}e.isObject=k;function y(u){const h=Object.getPrototypeOf(Uint8Array);return typeof u=="object"&&u instanceof h}e.isTypedArray=y;function D(u){return typeof u=="number"&&!isNaN(u)}e.isNumber=D;function S(u){return!!u&&typeof u[Symbol.iterator]=="function"}e.isIterable=S;function f(u){return u===!0||u===!1}e.isBoolean=f;function _(u){return typeof u>"u"}e.isUndefined=_;function g(u){return!C(u)}e.isDefined=g;function C(u){return _(u)||u===null}e.isUndefinedOrNull=C;function s(u,h){if(!u)throw new Error(h?`Unexpected type, expected '${h}'`:"Unexpected type")}e.assertType=s;function i(u){if(C(u))throw new Error("Assertion Failed: argument is undefined or null");return u}e.assertIsDefined=i;function n(u){return typeof u=="function"}e.isFunction=n;function t(u,h){const r=Math.min(u.length,h.length);for(let c=0;c{t[a]=u&&typeof u=="object"?k(u):u}),t}e.deepClone=k;function y(n){if(!n||typeof n!="object")return n;const t=[n];for(;t.length>0;){const a=t.shift();Object.freeze(a);for(const u in a)if(D.call(a,u)){const h=a[u];typeof h=="object"&&!Object.isFrozen(h)&&!(0,L.isTypedArray)(h)&&t.push(h)}}return n}e.deepFreeze=y;const D=Object.prototype.hasOwnProperty;function S(n,t){return f(n,t,new Set)}e.cloneAndChange=S;function f(n,t,a){if((0,L.isUndefinedOrNull)(n))return n;const u=t(n);if(typeof u<"u")return u;if(Array.isArray(n)){const h=[];for(const r of n)h.push(f(r,t,a));return h}if((0,L.isObject)(n)){if(a.has(n))throw new Error("Cannot clone recursive data-structure");a.add(n);const h={};for(const r in n)D.call(n,r)&&(h[r]=f(n[r],t,a));return a.delete(n),h}return n}function _(n,t,a=!0){return(0,L.isObject)(n)?((0,L.isObject)(t)&&Object.keys(t).forEach(u=>{u in n?a&&((0,L.isObject)(n[u])&&(0,L.isObject)(t[u])?_(n[u],t[u],a):n[u]=t[u]):n[u]=t[u]}),n):t}e.mixin=_;function g(n,t){if(n===t)return!0;if(n==null||t===null||t===void 0||typeof n!=typeof t||typeof n!="object"||Array.isArray(n)!==Array.isArray(t))return!1;let a,u;if(Array.isArray(n)){if(n.length!==t.length)return!1;for(a=0;afunction(){const r=Array.prototype.slice.call(arguments,0);return t(h,r)},u={};for(const h of n)u[h]=a(h);return u}e.createProxyObject=i}),define(ne[26],se([1,0,25]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ThemeIcon=e.ThemeColor=void 0;var k;(function(D){function S(f){return f&&typeof f=="object"&&typeof f.id=="string"}D.isThemeColor=S})(k||(e.ThemeColor=k={}));var y;(function(D){D.iconNameSegment="[A-Za-z0-9]+",D.iconNameExpression="[A-Za-z0-9-]+",D.iconModifierExpression="~[A-Za-z]+",D.iconNameCharacter="[A-Za-z0-9~-]";const S=new RegExp(`^(${D.iconNameExpression})(${D.iconModifierExpression})?$`);function f(h){const r=S.exec(h.id);if(!r)return f(L.Codicon.error);const[,c,o]=r,d=["codicon","codicon-"+c];return o&&d.push("codicon-modifier-"+o.substring(1)),d}D.asClassNameArray=f;function _(h){return f(h).join(" ")}D.asClassName=_;function g(h){return"."+f(h).join(".")}D.asCSSSelector=g;function C(h){return h&&typeof h=="object"&&typeof h.id=="string"&&(typeof h.color>"u"||k.isThemeColor(h.color))}D.isThemeIcon=C;const s=new RegExp(`^\\$\\((${D.iconNameExpression}(?:${D.iconModifierExpression})?)\\)$`);function i(h){const r=s.exec(h);if(!r)return;const[,c]=r;return{id:c}}D.fromString=i;function n(h){return{id:h}}D.fromId=n;function t(h,r){let c=h.id;const o=c.lastIndexOf("~");return o!==-1&&(c=c.substring(0,o)),r&&(c=`${c}~${r}`),{id:c}}D.modify=t;function a(h){const r=h.id.lastIndexOf("~");if(r!==-1)return h.id.substring(r+1)}D.getModifier=a;function u(h,r){var c,o;return h.id===r.id&&((c=h.color)===null||c===void 0?void 0:c.id)===((o=r.color)===null||o===void 0?void 0:o.id)}D.isEqual=u})(y||(e.ThemeIcon=y={}))}),define(ne[120],se([1,0,72,11,26]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.matchesFuzzyIconAware=e.parseLabelWithIcons=e.getCodiconAriaLabel=e.stripIcons=e.markdownEscapeEscapedIcons=e.escapeIcons=void 0;const D="$(",S=new RegExp(`\\$\\(${y.ThemeIcon.iconNameExpression}(?:${y.ThemeIcon.iconModifierExpression})?\\)`,"g"),f=new RegExp(`(\\\\)?${S.source}`,"g");function _(h){return h.replace(f,(r,c)=>c?r:`\\${r}`)}e.escapeIcons=_;const g=new RegExp(`\\\\${S.source}`,"g");function C(h){return h.replace(g,r=>`\\${r}`)}e.markdownEscapeEscapedIcons=C;const s=new RegExp(`(\\s)?(\\\\)?${S.source}(\\s)?`,"g");function i(h){return h.indexOf(D)===-1?h:h.replace(s,(r,c,o,d)=>o?r:c||d||"")}e.stripIcons=i;function n(h){return h?h.replace(/\$\((.*?)\)/g,(r,c)=>` ${c} `).trim():""}e.getCodiconAriaLabel=n;const t=new RegExp(`\\$\\(${y.ThemeIcon.iconNameCharacter}+\\)`,"g");function a(h){t.lastIndex=0;let r="";const c=[];let o=0;for(;;){const d=t.lastIndex,l=t.exec(h),p=h.substring(d,l?.index);if(p.length>0){r+=p;for(let m=0;m255?255:y|0}e.toUint8=L;function k(y){return y<0?0:y>4294967295?4294967295:y|0}e.toUint32=k}),define(ne[170],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.generateUuid=void 0,e.generateUuid=function(){if(typeof crypto=="object"&&typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let L;typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?L=crypto.getRandomValues.bind(crypto):L=function(D){for(let S=0;Swe(this,void 0,void 0,function*(){return s}),asFile:()=>{},value:typeof s=="string"?s:void 0}}e.createStringDataTransferItem=D;function S(s,i,n){const t={id:(0,y.generateUuid)(),name:s,uri:i,data:n};return{asString:()=>we(this,void 0,void 0,function*(){return""}),asFile:()=>t,value:void 0}}e.createFileDataTransferItem=S;class f{constructor(){this._entries=new Map}get size(){let i=0;for(const n of this._entries)i++;return i}has(i){return this._entries.has(this.toKey(i))}matches(i){const n=[...this._entries.keys()];return k.Iterable.some(this,([t,a])=>a.asFile())&&n.push("files"),C(_(i),n)}get(i){var n;return(n=this._entries.get(this.toKey(i)))===null||n===void 0?void 0:n[0]}append(i,n){const t=this._entries.get(i);t?t.push(n):this._entries.set(this.toKey(i),[n])}replace(i,n){this._entries.set(this.toKey(i),[n])}delete(i){this._entries.delete(this.toKey(i))}*[Symbol.iterator](){for(const[i,n]of this._entries)for(const t of n)yield[i,t]}toKey(i){return _(i)}}e.VSDataTransfer=f;function _(s){return s.toLowerCase()}function g(s,i){return C(_(s),i.map(_))}e.matchesMimeType=g;function C(s,i){if(s==="*/*")return i.length>0;if(i.includes(s))return!0;const n=s.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!n)return!1;const[t,a,u]=n;return u==="*"?i.some(h=>h.startsWith(a+"/")):!1}e.UriList=Object.freeze({create:s=>(0,L.distinct)(s.map(i=>i.toString())).join(`\r -`),split:s=>s.split(`\r -`),parse:s=>e.UriList.split(s).filter(i=>!i.startsWith("#"))})}),define(ne[265],se([10]),{}),define(ne[393],se([10]),{}),define(ne[394],se([10]),{}),define(ne[395],se([10]),{}),define(ne[396],se([10]),{}),define(ne[172],se([1,0,395,396]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0})}),define(ne[397],se([10]),{}),define(ne[398],se([10]),{}),define(ne[266],se([10]),{}),define(ne[267],se([10]),{}),define(ne[399],se([10]),{}),define(ne[400],se([10]),{}),define(ne[401],se([10]),{}),define(ne[402],se([10]),{}),define(ne[268],se([10]),{}),define(ne[403],se([10]),{}),define(ne[173],se([1,0,403]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME=void 0,e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME="monaco-mouse-cursor-text"}),define(ne[404],se([10]),{}),define(ne[405],se([10]),{}),define(ne[406],se([10]),{}),define(ne[407],se([10]),{}),define(ne[408],se([10]),{}),define(ne[409],se([10]),{}),define(ne[410],se([10]),{}),define(ne[411],se([10]),{}),define(ne[412],se([10]),{}),define(ne[413],se([10]),{}),define(ne[414],se([10]),{}),define(ne[415],se([10]),{}),define(ne[416],se([10]),{}),define(ne[417],se([10]),{}),define(ne[418],se([10]),{}),define(ne[419],se([10]),{}),define(ne[420],se([10]),{}),define(ne[421],se([10]),{}),define(ne[422],se([10]),{}),define(ne[423],se([10]),{}),define(ne[424],se([10]),{}),define(ne[425],se([10]),{}),define(ne[426],se([10]),{}),define(ne[427],se([10]),{}),define(ne[428],se([10]),{}),define(ne[429],se([10]),{}),define(ne[430],se([10]),{}),define(ne[431],se([10]),{}),define(ne[432],se([10]),{}),define(ne[433],se([10]),{}),define(ne[434],se([10]),{}),define(ne[435],se([10]),{}),define(ne[436],se([10]),{}),define(ne[437],se([10]),{}),define(ne[438],se([10]),{}),define(ne[439],se([10]),{}),define(ne[199],se([10]),{}),define(ne[440],se([10]),{}),define(ne[441],se([10]),{}),define(ne[442],se([10]),{}),define(ne[443],se([10]),{}),define(ne[444],se([10]),{}),define(ne[445],se([10]),{}),define(ne[446],se([10]),{}),define(ne[447],se([10]),{}),define(ne[448],se([10]),{}),define(ne[449],se([10]),{}),define(ne[450],se([10]),{}),define(ne[451],se([10]),{}),define(ne[452],se([10]),{}),define(ne[453],se([10]),{}),define(ne[454],se([10]),{}),define(ne[455],se([10]),{}),define(ne[456],se([10]),{}),define(ne[457],se([10]),{}),define(ne[458],se([10]),{}),define(ne[459],se([10]),{}),define(ne[460],se([10]),{}),define(ne[461],se([10]),{}),define(ne[462],se([10]),{}),define(ne[463],se([10]),{}),define(ne[464],se([10]),{}),define(ne[465],se([10]),{}),define(ne[466],se([10]),{}),define(ne[467],se([10]),{}),define(ne[468],se([10]),{}),define(ne[469],se([10]),{}),define(ne[470],se([10]),{}),define(ne[471],se([10]),{}),define(ne[269],se([10]),{}),define(ne[472],se([10]),{}),define(ne[473],se([10]),{}),define(ne[174],se([10]),{}),define(ne[474],se([10]),{}),define(ne[59],se([1,0,35]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.applyFontInfo=void 0;function k(y,D){y instanceof L.FastDomNode?(y.setFontFamily(D.getMassagedFontFamily()),y.setFontWeight(D.fontWeight),y.setFontSize(D.fontSize),y.setFontFeatureSettings(D.fontFeatureSettings),y.setFontVariationSettings(D.fontVariationSettings),y.setLineHeight(D.lineHeight),y.setLetterSpacing(D.letterSpacing)):(y.style.fontFamily=D.getMassagedFontFamily(),y.style.fontWeight=D.fontWeight,y.style.fontSize=D.fontSize+"px",y.style.fontFeatureSettings=D.fontFeatureSettings,y.style.fontVariationSettings=D.fontVariationSettings,y.style.lineHeight=D.lineHeight+"px",y.style.letterSpacing=D.letterSpacing+"px")}e.applyFontInfo=k}),define(ne[475],se([1,0,59]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.readCharWidths=e.CharWidthRequest=void 0;class k{constructor(f,_){this.chr=f,this.type=_,this.width=0}fulfill(f){this.width=f}}e.CharWidthRequest=k;class y{constructor(f,_){this._bareFontInfo=f,this._requests=_,this._container=null,this._testElements=null}read(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const f=document.createElement("div");f.style.position="absolute",f.style.top="-50000px",f.style.width="50000px";const _=document.createElement("div");(0,L.applyFontInfo)(_,this._bareFontInfo),f.appendChild(_);const g=document.createElement("div");(0,L.applyFontInfo)(g,this._bareFontInfo),g.style.fontWeight="bold",f.appendChild(g);const C=document.createElement("div");(0,L.applyFontInfo)(C,this._bareFontInfo),C.style.fontStyle="italic",f.appendChild(C);const s=[];for(const i of this._requests){let n;i.type===0&&(n=_),i.type===2&&(n=g),i.type===1&&(n=C),n.appendChild(document.createElement("br"));const t=document.createElement("span");y._render(t,i),n.appendChild(t),s.push(t)}this._container=f,this._testElements=s}static _render(f,_){if(_.chr===" "){let g="\xA0";for(let C=0;C<8;C++)g+=g;f.innerText=g}else{let g=_.chr;for(let C=0;C<8;C++)g+=g;f.textContent=g}}_readFromDomElements(){for(let f=0,_=this._requests.length;f<_;f++){const g=this._requests[f],C=this._testElements[f];g.fulfill(C.offsetWidth/256)}}}function D(S,f){new y(S,f).read()}e.readCharWidths=D}),define(ne[200],se([1,0,2,6]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ElementSizeObserver=void 0;class y extends L.Disposable{constructor(S,f){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._referenceDomElement=S,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,f)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let S=null;const f=()=>{S?this.observe({width:S.width,height:S.height}):this.observe()};let _=!1,g=!1;const C=()=>{if(_&&!g)try{_=!1,g=!0,f()}finally{requestAnimationFrame(()=>{g=!1,C()})}};this._resizeObserver=new ResizeObserver(s=>{S=s&&s[0]&&s[0].contentRect?s[0].contentRect:null,_=!0,C()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(S){this.measureReferenceDomElement(!0,S)}measureReferenceDomElement(S,f){let _=0,g=0;f?(_=f.width,g=f.height):this._referenceDomElement&&(_=this._referenceDomElement.clientWidth,g=this._referenceDomElement.clientHeight),_=Math.max(5,_),g=Math.max(5,g),(this._width!==_||this._height!==g)&&(this._width=_,this._height=g,S&&this._onDidChange.fire())}}e.ElementSizeObserver=y}),define(ne[476],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.migrateOptions=e.EditorSettingMigration=void 0;class L{constructor(_,g){this.key=_,this.migrate=g}apply(_){const g=L._read(_,this.key),C=i=>L._read(_,i),s=(i,n)=>L._write(_,i,n);this.migrate(g,C,s)}static _read(_,g){if(typeof _>"u")return;const C=g.indexOf(".");if(C>=0){const s=g.substring(0,C);return this._read(_[s],g.substring(C+1))}return _[g]}static _write(_,g,C){const s=g.indexOf(".");if(s>=0){const i=g.substring(0,s);_[i]=_[i]||{},this._write(_[i],g.substring(s+1),C);return}_[g]=C}}e.EditorSettingMigration=L,L.items=[];function k(f,_){L.items.push(new L(f,_))}function y(f,_){k(f,(g,C,s)=>{if(typeof g<"u"){for(const[i,n]of _)if(g===i){s(f,n);return}}})}function D(f){L.items.forEach(_=>_.apply(f))}e.migrateOptions=D,y("wordWrap",[[!0,"on"],[!1,"off"]]),y("lineNumbers",[[!0,"on"],[!1,"off"]]),y("cursorBlinking",[["visible","solid"]]),y("renderWhitespace",[[!0,"boundary"],[!1,"none"]]),y("renderLineHighlight",[[!0,"line"],[!1,"none"]]),y("acceptSuggestionOnEnter",[[!0,"on"],[!1,"off"]]),y("tabCompletion",[[!1,"off"],[!0,"onlySnippets"]]),y("hover",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y("parameterHints",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y("autoIndent",[[!1,"advanced"],[!0,"full"]]),y("matchBrackets",[[!0,"always"],[!1,"never"]]),y("renderFinalNewline",[[!0,"on"],[!1,"off"]]),y("cursorSmoothCaretAnimation",[[!0,"on"],[!1,"off"]]),k("autoClosingBrackets",(f,_,g)=>{f===!1&&(g("autoClosingBrackets","never"),typeof _("autoClosingQuotes")>"u"&&g("autoClosingQuotes","never"),typeof _("autoSurround")>"u"&&g("autoSurround","never"))}),k("renderIndentGuides",(f,_,g)=>{typeof f<"u"&&(g("renderIndentGuides",void 0),typeof _("guides.indentation")>"u"&&g("guides.indentation",!!f))}),k("highlightActiveIndentGuide",(f,_,g)=>{typeof f<"u"&&(g("highlightActiveIndentGuide",void 0),typeof _("guides.highlightActiveIndentation")>"u"&&g("guides.highlightActiveIndentation",!!f))});const S={method:"showMethods",function:"showFunctions",constructor:"showConstructors",deprecated:"showDeprecated",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};k("suggest.filteredTypes",(f,_,g)=>{if(f&&typeof f=="object"){for(const C of Object.entries(S))f[C[0]]===!1&&typeof _(`suggest.${C[1]}`)>"u"&&g(`suggest.${C[1]}`,!1);g("suggest.filteredTypes",void 0)}}),k("quickSuggestions",(f,_,g)=>{if(typeof f=="boolean"){const C=f?"on":"off";g("quickSuggestions",{comments:C,strings:C,other:C})}}),k("experimental.stickyScroll.enabled",(f,_,g)=>{typeof f=="boolean"&&(g("experimental.stickyScroll.enabled",void 0),typeof _("stickyScroll.enabled")>"u"&&g("stickyScroll.enabled",f))}),k("experimental.stickyScroll.maxLineCount",(f,_,g)=>{typeof f=="number"&&(g("experimental.stickyScroll.maxLineCount",void 0),typeof _("stickyScroll.maxLineCount")>"u"&&g("stickyScroll.maxLineCount",f))})}),define(ne[201],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TabFocus=void 0;class k{constructor(){this._tabFocusTerminal=!1,this._tabFocusEditor=!1,this._onDidChangeTabFocus=new L.Emitter,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(D){return D==="terminalFocus"?this._tabFocusTerminal:this._tabFocusEditor}setTabFocusMode(D,S){S==="terminalFocus"?this._tabFocusTerminal=D:this._tabFocusEditor=D,this._onDidChangeTabFocus.fire()}}e.TabFocus=new k}),define(ne[108],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StableEditorScrollState=void 0;class L{static capture(y){if(y.getScrollTop()===0||y.hasPendingScrollAnimation())return new L(y.getScrollTop(),y.getContentHeight(),null,0,null);let D=null,S=0;const f=y.getVisibleRanges();if(f.length>0){D=f[0].getStartPosition();const _=y.getTopForPosition(D.lineNumber,D.column);S=y.getScrollTop()-_}return new L(y.getScrollTop(),y.getContentHeight(),D,S,y.getPosition())}constructor(y,D,S,f,_){this._initialScrollTop=y,this._initialContentHeight=D,this._visiblePosition=S,this._visiblePositionScrollDelta=f,this._cursorPosition=_}restore(y){if(!(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())&&this._visiblePosition){const D=y.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);y.setScrollTop(D+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(y){if(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())return;const D=y.getPosition();if(!this._cursorPosition||!D)return;const S=y.getTopForLineNumber(D.lineNumber)-y.getTopForLineNumber(this._cursorPosition.lineNumber);y.setScrollTop(y.getScrollTop()+S)}}e.StableEditorScrollState=L}),define(ne[144],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VisibleRanges=e.HorizontalPosition=e.FloatHorizontalRange=e.HorizontalRange=e.LineVisibleRanges=e.RenderingContext=e.RestrictedRenderingContext=void 0;class L{constructor(C,s){this._restrictedRenderingContextBrand=void 0,this._viewLayout=C,this.viewportData=s,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(C){return C-this.scrollTop}getVerticalOffsetForLineNumber(C,s){return this._viewLayout.getVerticalOffsetForLineNumber(C,s)}getVerticalOffsetAfterLineNumber(C,s){return this._viewLayout.getVerticalOffsetAfterLineNumber(C,s)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}e.RestrictedRenderingContext=L;class k extends L{constructor(C,s,i){super(C,s),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(C,s){return this._viewLines.linesVisibleRangesForRange(C,s)}visibleRangeForPosition(C){return this._viewLines.visibleRangeForPosition(C)}}e.RenderingContext=k;class y{constructor(C,s,i,n){this.outsideRenderedLine=C,this.lineNumber=s,this.ranges=i,this.continuesOnNextLine=n}}e.LineVisibleRanges=y;class D{static from(C){const s=new Array(C.length);for(let i=0,n=C.length;i=s.left?_.width=Math.max(_.width,s.left+s.width-_.left):(S[f++]=_,_=s)}return S[f++]=_,S}static _createHorizontalRangesFromClientRects(D,S,f){if(!D||D.length===0)return null;const _=[];for(let g=0,C=D.length;gi)return null;if(S=Math.min(i,Math.max(0,S)),_=Math.min(i,Math.max(0,_)),S===_&&f===g&&f===0&&!D.children[S].firstChild){const u=D.children[S].getClientRects();return C.markDidDomLayout(),this._createHorizontalRangesFromClientRects(u,C.clientRectDeltaLeft,C.clientRectScale)}S!==_&&_>0&&g===0&&(_--,g=1073741824);let n=D.children[S].firstChild,t=D.children[_].firstChild;if((!n||!t)&&(!n&&f===0&&S>0&&(n=D.children[S-1].firstChild,f=1073741824),!t&&g===0&&_>0&&(t=D.children[_-1].firstChild,g=1073741824)),!n||!t)return null;f=Math.min(n.textContent.length,Math.max(0,f)),g=Math.min(t.textContent.length,Math.max(0,g));const a=this._readClientRects(n,f,t,g,C.endNode);return C.markDidDomLayout(),this._createHorizontalRangesFromClientRects(a,C.clientRectDeltaLeft,C.clientRectScale)}}e.RangeUtil=k}),define(ne[270],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCharIndex=e.allCharCodes=void 0,e.allCharCodes=(()=>{const k=[];for(let y=32;y<=126;y++)k.push(y);return k.push(65533),k})();const L=(k,y)=>(k-=32,k<0||k>96?y<=2?(k+96)%96:96-1:k);e.getCharIndex=L}),define(ne[479],se([1,0,270,169]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapCharRenderer=void 0;class y{constructor(S,f){this.scale=f,this._minimapCharRendererBrand=void 0,this.charDataNormal=y.soften(S,12/15),this.charDataLight=y.soften(S,50/60)}static soften(S,f){const _=new Uint8ClampedArray(S.length);for(let g=0,C=S.length;gS.width||_+c>S.height){console.warn("bad render request outside image data");return}const o=a?this.charDataLight:this.charDataNormal,d=(0,L.getCharIndex)(g,t),l=S.width*4,p=i.r,m=i.g,v=i.b,b=C.r-p,w=C.g-m,E=C.b-v,I=Math.max(s,n),M=S.data;let P=d*h*r,x=_*l+f*4;for(let T=0;TS.width||_+u>S.height){console.warn("bad render request outside image data");return}const h=S.width*4,r=.5*(C/255),c=s.r,o=s.g,d=s.b,l=g.r-c,p=g.g-o,m=g.b-d,v=c+l*r,b=o+p*r,w=d+m*r,E=Math.max(C,i),I=S.data;let M=_*h+f*4;for(let P=0;P{const S=new Uint8ClampedArray(D.length/2);for(let f=0;f>1]=k[D[f]]<<4|k[D[f+1]]&15;return S};e.prebakedMiniMaps={1:(0,L.once)(()=>y("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),2:(0,L.once)(()=>y("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))}}),define(ne[481],se([1,0,479,270,480,169]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapCharRendererFactory=void 0;class S{static create(_,g){if(this.lastCreated&&_===this.lastCreated.scale&&g===this.lastFontFamily)return this.lastCreated;let C;return y.prebakedMiniMaps[_]?C=new L.MinimapCharRenderer(y.prebakedMiniMaps[_](),_):C=S.createFromSampleData(S.createSampleData(g).data,_),this.lastFontFamily=g,this.lastCreated=C,C}static createSampleData(_){const g=document.createElement("canvas"),C=g.getContext("2d");g.style.height="16px",g.height=16,g.width=96*10,g.style.width=96*10+"px",C.fillStyle="#ffffff",C.font=`bold 16px ${_}`,C.textBaseline="middle";let s=0;for(const i of k.allCharCodes)C.fillText(String.fromCharCode(i),s,16/2),s+=10;return C.getImageData(0,0,96*10,16)}static createFromSampleData(_,g){if(_.length!==61440)throw new Error("Unexpected source in MinimapCharRenderer");const s=S._downsample(_,g);return new L.MinimapCharRenderer(s,g)}static _downsampleChar(_,g,C,s,i){const n=1*i,t=2*i;let a=s,u=0;for(let h=0;h0){const u=255/a;for(let h=0;hE?(l.push(b),m++):(l.push(d(v,b)),p++,m++)}for(;p{const p=c.read(l);d.set(p)})),o.add({dispose:()=>{d.clear()}}),o}e.applyObservableDecorations=S;function f(r,c){return r.appendChild(c),(0,L.toDisposable)(()=>{r.removeChild(c)})}e.appendRemoveOnDispose=f;class _ extends L.Disposable{get width(){return this._width}get height(){return this._height}constructor(c,o){super(),this.elementSizeObserver=this._register(new y.ElementSizeObserver(c,o)),this._width=(0,k.observableValue)("width",this.elementSizeObserver.getWidth()),this._height=(0,k.observableValue)("height",this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(d=>(0,k.transaction)(l=>{this._width.set(this.elementSizeObserver.getWidth(),l),this._height.set(this.elementSizeObserver.getHeight(),l)})))}observe(c){this.elementSizeObserver.observe(c)}setAutomaticLayout(c){c?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}e.ObservableElementSizeObserver=_;function g(r,c){let o=r.get(),d=o,l=o;const p=(0,k.observableValue)("animatedValue",o);let m=-1;const v=300;let b;c.add((0,k.autorunHandleChanges)({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(E,I)=>(E.didChange(r)&&(I.animate=I.animate||E.change),!0)},(E,I)=>{b!==void 0&&(cancelAnimationFrame(b),b=void 0),d=l,o=r.read(E),m=Date.now()-(I.animate?0:v),w()}));function w(){const E=Date.now()-m;l=Math.floor(C(E,d,o-d,v)),E{this._actualTop.set(d,void 0)},this.onComputedHeight=d=>{this._actualHeight.set(d,void 0)}}}e.PlaceholderViewZone=i;class n{constructor(c,o){this._editor=c,this._domElement=o,this._overlayWidgetId=`managedOverlayWidget-${n._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}}e.ManagedOverlayWidget=n,n._counter=0;function t(r,c){return(0,k.autorun)(o=>{for(let[d,l]of Object.entries(c))l&&typeof l=="object"&&"read"in l&&(l=l.read(o)),typeof l=="number"&&(l=`${l}px`),d=d.replace(/[A-Z]/g,p=>"-"+p.toLowerCase()),r.style[d]=l})}e.applyStyle=t;function a(r,c){return u([r],c),r}e.readHotReloadableExport=a;function u(r,c){const o=globalThis.$hotReload_deprecateExports;if(!o)return;(0,k.observableSignalFromEvent)("reload",l=>{function p(m,v){return[...Object.values(m)].some(b=>r.includes(b))?(l(void 0),!0):!1}return o.add(p),{dispose(){o.delete(p)}}}).read(c)}e.observeHotReloadableExports=u;function h(r,c,o){const d=new L.DisposableStore,l=[];return d.add((0,k.autorun)(p=>{const m=c.read(p),v=new Map,b=new Map;o&&o(!0),r.changeViewZones(w=>{for(const E of l)w.removeZone(E);l.length=0;for(const E of m){const I=w.addZone(E);l.push(I),v.set(E,I)}}),o&&o(!1),d.add((0,k.autorunHandleChanges)({createEmptyChangeSummary(){return[]},handleChange(w,E){const I=b.get(w.changedObservable);return I!==void 0&&E.push(I),!0}},(w,E)=>{for(const I of m)I.onChange&&(b.set(I.onChange,v.get(I)),I.onChange.read(w));o&&o(!0),r.changeViewZones(I=>{for(const M of E)I.layoutZone(M)}),o&&o(!1)}))})),d.add({dispose(){o&&o(!0),r.changeViewZones(p=>{for(const m of l)p.removeZone(m)}),o&&o(!1)}}),d}e.applyViewZones=h}),define(ne[271],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.diffEditorDefaultOptions=void 0,e.diffEditorDefaultOptions={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0}}),define(ne[145],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorZoom=void 0,e.EditorZoom=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new L.Emitter,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(k){k=Math.min(Math.max(-5,k),20),this._zoomLevel!==k&&(this._zoomLevel=k,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}}),define(ne[121],se([1,0,169]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CharacterSet=e.CharacterClassifier=void 0;class k{constructor(S){const f=(0,L.toUint8)(S);this._defaultValue=f,this._asciiMap=k._createAsciiMap(f),this._map=new Map}static _createAsciiMap(S){const f=new Uint8Array(256);return f.fill(S),f}set(S,f){const _=(0,L.toUint8)(f);S>=0&&S<256?this._asciiMap[S]=_:this._map.set(S,_)}get(S){return S>=0&&S<256?this._asciiMap[S]:this._map.get(S)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}e.CharacterClassifier=k;class y{constructor(){this._actual=new k(0)}add(S){this._actual.set(S,1)}has(S){return this._actual.get(S)===1}clear(){return this._actual.clear()}}e.CharacterSet=y}),define(ne[82],se([1,0,11]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorColumns=void 0;class k{static _nextVisibleColumn(D,S,f){return D===9?k.nextRenderTabStop(S,f):L.isFullWidthCharacter(D)||L.isEmojiImprecise(D)?S+2:S+1}static visibleColumnFromColumn(D,S,f){const _=Math.min(S-1,D.length),g=D.substring(0,_),C=new L.GraphemeIterator(g);let s=0;for(;!C.eol();){const i=L.getNextCodePoint(g,_,C.offset);C.nextGraphemeLength(),s=this._nextVisibleColumn(i,s,f)}return s}static columnFromVisibleColumn(D,S,f){if(S<=0)return 1;const _=D.length,g=new L.GraphemeIterator(D);let C=0,s=1;for(;!g.eol();){const i=L.getNextCodePoint(D,_,g.offset);g.nextGraphemeLength();const n=this._nextVisibleColumn(i,C,f),t=g.offset+1;if(n>=S){const a=S-C;return n-Sf))return new k(S,f)}static ofLength(S){return new k(0,S)}constructor(S,f){if(this.start=S,this.endExclusive=f,S>f)throw new L.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(S){return new k(this.start+S,this.endExclusive+S)}deltaStart(S){return new k(this.start+S,this.endExclusive)}deltaEnd(S){return new k(this.start,this.endExclusive+S)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(S){return this.start===S.start&&this.endExclusive===S.endExclusive}containsRange(S){return this.start<=S.start&&S.endExclusive<=this.endExclusive}contains(S){return this.start<=S&&S=this.endExclusive?this.start+(S-this.start)%this.length:S}}e.OffsetRange=k;class y{constructor(){this._sortedRanges=[]}addRange(S){let f=0;for(;fS.toString()).join(", ")}intersectsStrict(S){let f=0;for(;fS+f.length,0)}}e.OffsetRangeSet=y}),define(ne[12],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Position=void 0;class L{constructor(y,D){this.lineNumber=y,this.column=D}with(y=this.lineNumber,D=this.column){return y===this.lineNumber&&D===this.column?this:new L(y,D)}delta(y=0,D=0){return this.with(this.lineNumber+y,this.column+D)}equals(y){return L.equals(this,y)}static equals(y,D){return!y&&!D?!0:!!y&&!!D&&y.lineNumber===D.lineNumber&&y.column===D.column}isBefore(y){return L.isBefore(this,y)}static isBefore(y,D){return y.lineNumberf||D===f&&S>_?(this.startLineNumber=f,this.startColumn=_,this.endLineNumber=D,this.endColumn=S):(this.startLineNumber=D,this.startColumn=S,this.endLineNumber=f,this.endColumn=_)}isEmpty(){return k.isEmpty(this)}static isEmpty(D){return D.startLineNumber===D.endLineNumber&&D.startColumn===D.endColumn}containsPosition(D){return k.containsPosition(this,D)}static containsPosition(D,S){return!(S.lineNumberD.endLineNumber||S.lineNumber===D.startLineNumber&&S.columnD.endColumn)}static strictContainsPosition(D,S){return!(S.lineNumberD.endLineNumber||S.lineNumber===D.startLineNumber&&S.column<=D.startColumn||S.lineNumber===D.endLineNumber&&S.column>=D.endColumn)}containsRange(D){return k.containsRange(this,D)}static containsRange(D,S){return!(S.startLineNumberD.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumnD.endColumn)}strictContainsRange(D){return k.strictContainsRange(this,D)}static strictContainsRange(D,S){return!(S.startLineNumberD.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumn<=D.startColumn||S.endLineNumber===D.endLineNumber&&S.endColumn>=D.endColumn)}plusRange(D){return k.plusRange(this,D)}static plusRange(D,S){let f,_,g,C;return S.startLineNumberD.endLineNumber?(g=S.endLineNumber,C=S.endColumn):S.endLineNumber===D.endLineNumber?(g=S.endLineNumber,C=Math.max(S.endColumn,D.endColumn)):(g=D.endLineNumber,C=D.endColumn),new k(f,_,g,C)}intersectRanges(D){return k.intersectRanges(this,D)}static intersectRanges(D,S){let f=D.startLineNumber,_=D.startColumn,g=D.endLineNumber,C=D.endColumn;const s=S.startLineNumber,i=S.startColumn,n=S.endLineNumber,t=S.endColumn;return fn?(g=n,C=t):g===n&&(C=Math.min(C,t)),f>g||f===g&&_>C?null:new k(f,_,g,C)}equalsRange(D){return k.equalsRange(this,D)}static equalsRange(D,S){return!D&&!S?!0:!!D&&!!S&&D.startLineNumber===S.startLineNumber&&D.startColumn===S.startColumn&&D.endLineNumber===S.endLineNumber&&D.endColumn===S.endColumn}getEndPosition(){return k.getEndPosition(this)}static getEndPosition(D){return new L.Position(D.endLineNumber,D.endColumn)}getStartPosition(){return k.getStartPosition(this)}static getStartPosition(D){return new L.Position(D.startLineNumber,D.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(D,S){return new k(this.startLineNumber,this.startColumn,D,S)}setStartPosition(D,S){return new k(D,S,this.endLineNumber,this.endColumn)}collapseToStart(){return k.collapseToStart(this)}static collapseToStart(D){return new k(D.startLineNumber,D.startColumn,D.startLineNumber,D.startColumn)}collapseToEnd(){return k.collapseToEnd(this)}static collapseToEnd(D){return new k(D.endLineNumber,D.endColumn,D.endLineNumber,D.endColumn)}delta(D){return new k(this.startLineNumber+D,this.startColumn,this.endLineNumber+D,this.endColumn)}static fromPositions(D,S=D){return new k(D.lineNumber,D.column,S.lineNumber,S.column)}static lift(D){return D?new k(D.startLineNumber,D.startColumn,D.endLineNumber,D.endColumn):null}static isIRange(D){return D&&typeof D.startLineNumber=="number"&&typeof D.startColumn=="number"&&typeof D.endLineNumber=="number"&&typeof D.endColumn=="number"}static areIntersectingOrTouching(D,S){return!(D.endLineNumberD.startLineNumber}toJSON(){return this}}e.Range=k}),define(ne[273],se([1,0,11,5]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PagedScreenReaderStrategy=e.TextAreaState=e._debugComposition=void 0,e._debugComposition=!1;class y{constructor(f,_,g,C,s){this.value=f,this.selectionStart=_,this.selectionEnd=g,this.selection=C,this.newlineCountBeforeSelection=s}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(f,_){const g=f.getValue(),C=f.getSelectionStart(),s=f.getSelectionEnd();let i;if(_){const n=g.substring(0,C),t=_.value.substring(0,_.selectionStart);n===t&&(i=_.newlineCountBeforeSelection)}return new y(g,C,s,null,i)}collapseSelection(){return this.selectionStart===this.value.length?this:new y(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(f,_,g){e._debugComposition&&console.log(`writeToTextArea ${f}: ${this.toString()}`),_.setValue(f,this.value),g&&_.setSelectionRange(f,this.selectionStart,this.selectionEnd)}deduceEditorPosition(f){var _,g,C,s,i,n,t,a;if(f<=this.selectionStart){const r=this.value.substring(f,this.selectionStart);return this._finishDeduceEditorPosition((g=(_=this.selection)===null||_===void 0?void 0:_.getStartPosition())!==null&&g!==void 0?g:null,r,-1)}if(f>=this.selectionEnd){const r=this.value.substring(this.selectionEnd,f);return this._finishDeduceEditorPosition((s=(C=this.selection)===null||C===void 0?void 0:C.getEndPosition())!==null&&s!==void 0?s:null,r,1)}const u=this.value.substring(this.selectionStart,f);if(u.indexOf(String.fromCharCode(8230))===-1)return this._finishDeduceEditorPosition((n=(i=this.selection)===null||i===void 0?void 0:i.getStartPosition())!==null&&n!==void 0?n:null,u,1);const h=this.value.substring(f,this.selectionEnd);return this._finishDeduceEditorPosition((a=(t=this.selection)===null||t===void 0?void 0:t.getEndPosition())!==null&&a!==void 0?a:null,h,-1)}_finishDeduceEditorPosition(f,_,g){let C=0,s=-1;for(;(s=_.indexOf(` -`,s+1))!==-1;)C++;return[f,g*_.length,C]}static deduceInput(f,_,g){if(!f)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};e._debugComposition&&(console.log("------------------------deduceInput"),console.log(`PREVIOUS STATE: ${f.toString()}`),console.log(`CURRENT STATE: ${_.toString()}`));const C=Math.min(L.commonPrefixLength(f.value,_.value),f.selectionStart,_.selectionStart),s=Math.min(L.commonSuffixLength(f.value,_.value),f.value.length-f.selectionEnd,_.value.length-_.selectionEnd),i=f.value.substring(C,f.value.length-s),n=_.value.substring(C,_.value.length-s),t=f.selectionStart-C,a=f.selectionEnd-C,u=_.selectionStart-C,h=_.selectionEnd-C;if(e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${i}>, selectionStart: ${t}, selectionEnd: ${a}`),console.log(`AFTER DIFFING CURRENT STATE: <${n}>, selectionStart: ${u}, selectionEnd: ${h}`)),u===h){const c=f.selectionStart-C;return e._debugComposition&&console.log(`REMOVE PREVIOUS: ${c} chars`),{text:n,replacePrevCharCnt:c,replaceNextCharCnt:0,positionDelta:0}}const r=a-t;return{text:n,replacePrevCharCnt:r,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(f,_){if(!f)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e._debugComposition&&(console.log("------------------------deduceAndroidCompositionInput"),console.log(`PREVIOUS STATE: ${f.toString()}`),console.log(`CURRENT STATE: ${_.toString()}`)),f.value===_.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:_.selectionEnd-f.selectionEnd};const g=Math.min(L.commonPrefixLength(f.value,_.value),f.selectionEnd),C=Math.min(L.commonSuffixLength(f.value,_.value),f.value.length-f.selectionEnd),s=f.value.substring(g,f.value.length-C),i=_.value.substring(g,_.value.length-C),n=f.selectionStart-g,t=f.selectionEnd-g,a=_.selectionStart-g,u=_.selectionEnd-g;return e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${s}>, selectionStart: ${n}, selectionEnd: ${t}`),console.log(`AFTER DIFFING CURRENT STATE: <${i}>, selectionStart: ${a}, selectionEnd: ${u}`)),{text:i,replacePrevCharCnt:t,replaceNextCharCnt:s.length-t,positionDelta:u-i.length}}}e.TextAreaState=y,y.EMPTY=new y("",0,0,null,void 0);class D{static _getPageOfLine(f,_){return Math.floor((f-1)/_)}static _getRangeForPage(f,_){const g=f*_,C=g+1,s=g+_;return new k.Range(C,1,s+1,1)}static fromEditorSelection(f,_,g,C){const i=D._getPageOfLine(_.startLineNumber,g),n=D._getRangeForPage(i,g),t=D._getPageOfLine(_.endLineNumber,g),a=D._getRangeForPage(t,g);let u=n.intersectRanges(new k.Range(1,1,_.startLineNumber,_.startColumn));if(C&&f.getValueLengthInRange(u,1)>500){const p=f.modifyPosition(u.getEndPosition(),-500);u=k.Range.fromPositions(p,u.getEndPosition())}const h=f.getValueInRange(u,1),r=f.getLineCount(),c=f.getLineMaxColumn(r);let o=a.intersectRanges(new k.Range(_.endLineNumber,_.endColumn,r,c));if(C&&f.getValueLengthInRange(o,1)>500){const p=f.modifyPosition(o.getStartPosition(),500);o=k.Range.fromPositions(o.getStartPosition(),p)}const d=f.getValueInRange(o,1);let l;if(i===t||i+1===t)l=f.getValueInRange(_,1);else{const p=n.intersectRanges(_),m=a.intersectRanges(_);l=f.getValueInRange(p,1)+String.fromCharCode(8230)+f.getValueInRange(m,1)}return C&&l.length>2*500&&(l=l.substring(0,500)+String.fromCharCode(8230)+l.substring(l.length-500,l.length)),new y(h+l+d,h.length,h.length+l.length,_,u.endLineNumber-u.startLineNumber)}}e.PagedScreenReaderStrategy=D}),define(ne[483],se([1,0,14,19,9,46,12,5]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OutlineModel=e.OutlineGroup=e.OutlineElement=e.TreeElement=void 0;class _{remove(){var n;(n=this.parent)===null||n===void 0||n.children.delete(this.id)}static findId(n,t){let a;typeof n=="string"?a=`${t.id}/${n}`:(a=`${t.id}/${n.name}`,t.children.get(a)!==void 0&&(a=`${t.id}/${n.name}_${n.range.startLineNumber}_${n.range.startColumn}`));let u=a;for(let h=0;t.children.get(u)!==void 0;h++)u=`${a}_${h}`;return u}static empty(n){return n.children.size===0}}e.TreeElement=_;class g extends _{constructor(n,t,a){super(),this.id=n,this.parent=t,this.symbol=a,this.children=new Map}}e.OutlineElement=g;class C extends _{constructor(n,t,a,u){super(),this.id=n,this.parent=t,this.label=a,this.order=u,this.children=new Map}}e.OutlineGroup=C;class s extends _{static create(n,t,a){const u=new k.CancellationTokenSource(a),h=new s(t.uri),r=n.ordered(t),c=r.map((d,l)=>{var p;const m=_.findId(`provider_${l}`,h),v=new C(m,h,(p=d.displayName)!==null&&p!==void 0?p:"Unknown Outline Provider",l);return Promise.resolve(d.provideDocumentSymbols(t,u.token)).then(b=>{for(const w of b||[])s._makeOutlineElement(w,v);return v},b=>((0,y.onUnexpectedExternalError)(b),v)).then(b=>{_.empty(b)?b.remove():h._groups.set(m,b)})}),o=n.onDidChange(()=>{const d=n.ordered(t);(0,L.equals)(d,r)||u.cancel()});return Promise.all(c).then(()=>u.token.isCancellationRequested&&!a.isCancellationRequested?s.create(n,t,a):h._compact()).finally(()=>{o.dispose()})}static _makeOutlineElement(n,t){const a=_.findId(n,t),u=new g(a,t,n);if(n.children)for(const h of n.children)s._makeOutlineElement(h,u);t.children.set(u.id,u)}constructor(n){super(),this.uri=n,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let n=0;for(const[t,a]of this._groups)a.children.size===0?this._groups.delete(t):n+=1;if(n!==1)this.children=this._groups;else{const t=D.Iterable.first(this._groups.values());for(const[,a]of t.children)a.parent=this,this.children.set(a.id,a)}return this}getTopLevelSymbols(){const n=[];for(const t of this.children.values())t instanceof g?n.push(t.symbol):n.push(...D.Iterable.map(t.children.values(),a=>a.symbol));return n.sort((t,a)=>f.Range.compareRangesUsingStarts(t.range,a.range))}asListOfDocumentSymbols(){const n=this.getTopLevelSymbols(),t=[];return s._flattenDocumentSymbols(t,n,""),t.sort((a,u)=>S.Position.compare(f.Range.getStartPosition(a.range),f.Range.getStartPosition(u.range))||S.Position.compare(f.Range.getEndPosition(u.range),f.Range.getEndPosition(a.range)))}static _flattenDocumentSymbols(n,t,a){for(const u of t)n.push({kind:u.kind,tags:u.tags,name:u.name,detail:u.detail,containerName:u.containerName||a,range:u.range,selectionRange:u.selectionRange,children:void 0}),u.children&&s._flattenDocumentSymbols(n,u.children,u.name)}}e.OutlineModel=s}),define(ne[73],se([1,0,5]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditOperation=void 0;class k{static insert(D,S){return{range:new L.Range(D.lineNumber,D.column,D.lineNumber,D.column),text:S,forceMoveMarkers:!0}}static delete(D){return{range:D,text:null}}static replace(D,S){return{range:D,text:S}}static replaceMove(D,S){return{range:D,text:S,forceMoveMarkers:!0}}}e.EditOperation=k}),define(ne[484],se([1,0,11,73,5]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.trimTrailingWhitespace=e.TrimTrailingWhitespaceCommand=void 0;class D{constructor(_,g){this._selection=_,this._cursors=g,this._selectionId=null}getEditOperations(_,g){const C=S(_,this._cursors);for(let s=0,i=C.length;sn.lineNumber===t.lineNumber?n.column-t.column:n.lineNumber-t.lineNumber);for(let n=_.length-2;n>=0;n--)_[n].lineNumber===_[n+1].lineNumber&&_.splice(n,1);const g=[];let C=0,s=0;const i=_.length;for(let n=1,t=f.getLineCount();n<=t;n++){const a=f.getLineContent(n),u=a.length+1;let h=0;if(s=n.startLineNumber?i=new D(i.startLineNumber,Math.max(i.endLineNumberExclusive,n.endLineNumberExclusive)):(g.push(i),i=n)}return i!==null&&g.push(i),g}static ofLength(f,_){return new D(f,f+_)}static deserialize(f){return new D(f[0],f[1])}constructor(f,_){if(f>_)throw new L.BugIndicatingError(`startLineNumber ${f} cannot be after endLineNumberExclusive ${_}`);this.startLineNumber=f,this.endLineNumberExclusive=_}contains(f){return this.startLineNumber<=f&&f255?255:y|0}}e.RGBA8=L,L.Empty=new L(0,0,0,0)}),define(ne[24],se([1,0,12,5]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Selection=void 0;class y extends k.Range{constructor(S,f,_,g){super(S,f,_,g),this.selectionStartLineNumber=S,this.selectionStartColumn=f,this.positionLineNumber=_,this.positionColumn=g}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(S){return y.selectionsEqual(this,S)}static selectionsEqual(S,f){return S.selectionStartLineNumber===f.selectionStartLineNumber&&S.selectionStartColumn===f.selectionStartColumn&&S.positionLineNumber===f.positionLineNumber&&S.positionColumn===f.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(S,f){return this.getDirection()===0?new y(this.startLineNumber,this.startColumn,S,f):new y(S,f,this.startLineNumber,this.startColumn)}getPosition(){return new L.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new L.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(S,f){return this.getDirection()===0?new y(S,f,this.endLineNumber,this.endColumn):new y(this.endLineNumber,this.endColumn,S,f)}static fromPositions(S,f=S){return new y(S.lineNumber,S.column,f.lineNumber,f.column)}static fromRange(S,f){return f===0?new y(S.startLineNumber,S.startColumn,S.endLineNumber,S.endColumn):new y(S.endLineNumber,S.endColumn,S.startLineNumber,S.startColumn)}static liftSelection(S){return new y(S.selectionStartLineNumber,S.selectionStartColumn,S.positionLineNumber,S.positionColumn)}static selectionsArrEqual(S,f){if(S&&!f||!S&&f)return!1;if(!S&&!f)return!0;if(S.length!==f.length)return!1;for(let _=0,g=S.length;_(S.hasOwnProperty(f)||(S[f]=D(f)),S[f])}e.getMapForWordSeparators=y(D=>new k(D))}),define(ne[147],se([1,0,46,64]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getWordAtText=e.ensureValidWordDefinition=e.DEFAULT_WORD_REGEXP=e.USUAL_WORD_SEPARATORS=void 0,e.USUAL_WORD_SEPARATORS="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function y(g=""){let C="(-?\\d*\\.\\d\\w*)|([^";for(const s of e.USUAL_WORD_SEPARATORS)g.indexOf(s)>=0||(C+="\\"+s);return C+="\\s]+)",new RegExp(C,"g")}e.DEFAULT_WORD_REGEXP=y();function D(g){let C=e.DEFAULT_WORD_REGEXP;if(g&&g instanceof RegExp)if(g.global)C=g;else{let s="g";g.ignoreCase&&(s+="i"),g.multiline&&(s+="m"),g.unicode&&(s+="u"),C=new RegExp(g.source,s)}return C.lastIndex=0,C}e.ensureValidWordDefinition=D;const S=new k.LinkedList;S.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function f(g,C,s,i,n){if(n||(n=L.Iterable.first(S)),s.length>n.maxLen){let r=g-n.maxLen/2;return r<0?r=0:i+=r,s=s.substring(r,g+n.maxLen/2),f(g,C,s,i,n)}const t=Date.now(),a=g-1-i;let u=-1,h=null;for(let r=1;!(Date.now()-t>=n.timeBudget);r++){const c=a-n.windowSize*r;C.lastIndex=Math.max(0,c);const o=_(C,s,a,u);if(!o&&h||(h=o,c<=0))break;u=c}if(h){const r={word:h[0],startColumn:i+1+h.index,endColumn:i+1+h.index+h[0].length};return C.lastIndex=0,r}return null}e.getWordAtText=f;function _(g,C,s,i){let n;for(;n=g.exec(C);){const t=n.index||0;if(t<=s&&g.lastIndex>=s)return n;if(i>0&&t>i)return null}return null}}),define(ne[275],se([1,0,82]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AtomicTabMoveOperations=void 0;class k{static whitespaceVisibleColumn(D,S,f){const _=D.length;let g=0,C=-1,s=-1;for(let i=0;i<_;i++){if(i===S)return[C,s,g];switch(g%f===0&&(C=i,s=g),D.charCodeAt(i)){case 32:g+=1;break;case 9:g=L.CursorColumns.nextRenderTabStop(g,f);break;default:return[-1,-1,-1]}}return S===_?[C,s,g]:[-1,-1,-1]}static atomicPosition(D,S,f,_){const g=D.length,[C,s,i]=k.whitespaceVisibleColumn(D,S,f);if(i===-1)return-1;let n;switch(_){case 0:n=!0;break;case 1:n=!1;break;case 2:if(i%f===0)return S;n=i%f<=f/2;break}if(n){if(C===-1)return-1;let u=s;for(let h=C;h ${this.seq2Range}`}join(g){return new D(this.seq1Range.join(g.seq1Range),this.seq2Range.join(g.seq2Range))}delta(g){return g===0?this:new D(this.seq1Range.delta(g),this.seq2Range.delta(g))}}e.SequenceDiff=D;class S{isValid(){return!0}}e.InfiniteTimeout=S,S.instance=new S;class f{constructor(g){if(this.timeout=g,this.startTime=Date.now(),this.valid=!0,g<=0)throw new L.BugIndicatingError("timeout must be positive")}isValid(){if(!(Date.now()-this.startTime5||m.seq1Range.length+m.seq2Range.length>5)};const c=t[r],o=h[h.length-1];d(o,c)?(u=!0,h[h.length-1]=h[h.length-1].join(c)):h.push(c)}t=h}while(a++<10&&u);return t}e.removeRandomLineMatches=S;function f(s,i,n){let t=n;if(t.length===0)return t;let a=0,u;do{u=!1;const h=[t[0]];for(let r=1;r5||v.length>500)return!1;const w=s.getText(v).trim();if(w.length>20||w.split(/\r\n|\r|\n/).length>1)return!1;const E=s.countLinesIn(p.seq1Range),I=p.seq1Range.length,M=i.countLinesIn(p.seq2Range),P=p.seq2Range.length,x=s.countLinesIn(m.seq1Range),T=m.seq1Range.length,A=i.countLinesIn(m.seq2Range),N=m.seq2Range.length,F=2*40+50;function O(W){return Math.min(W,F)}return Math.pow(Math.pow(O(E*40+I),1.5)+Math.pow(O(M*40+P),1.5),1.5)+Math.pow(Math.pow(O(x*40+T),1.5)+Math.pow(O(A*40+N),1.5),1.5)>Math.pow(Math.pow(F,1.5),1.5)*1.3};const c=t[r],o=h[h.length-1];d(o,c)?(u=!0,h[h.length-1]=h[h.length-1].join(c)):h.push(c)}t=h}while(a++<10&&u);for(let h=0;h0&&l.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>100&&(c=r.seq1Range.deltaStart(-l.length),o=r.seq2Range.deltaStart(-l.length));const p=s.getText(new L.OffsetRange(r.seq1Range.endExclusive,d.endExclusive));p.length>0&&p.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>150&&(c=c.deltaEnd(p.length),o=o.deltaEnd(p.length)),t[h]=new k.SequenceDiff(c,o)}return t}e.removeRandomMatches=f;function _(s,i,n){if(n.length===0)return n;const t=[];t.push(n[0]);for(let u=1;u0&&(r=r.delta(o))}a.push(r)}return t.length>0&&a.push(t[t.length-1]),a}e.joinSequenceDiffs=_;function g(s,i,n){if(!s.getBoundaryScore||!i.getBoundaryScore)return n;for(let t=0;t0?n[t-1]:void 0,u=n[t],h=t+1=t.start&&s.seq2Range.start-h>=a.start&&n.isStronglyEqual(s.seq2Range.start-h,s.seq2Range.endExclusive-h)&&h<100;)h++;h--;let r=0;for(;s.seq1Range.start+ro&&(o=v,c=d)}return s.delta(c)}}),define(ne[488],se([1,0,90,176]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MyersDiffAlgorithm=void 0;class y{compute(g,C,s=k.InfiniteTimeout.instance){if(g.length===0||C.length===0)return k.DiffAlgorithmResult.trivial(g,C);function i(d,l){for(;dg.length||b>C.length)continue;const w=i(v,b);t.set(u,w);const E=v===p?a.get(u+1):a.get(u-1);if(a.set(u,w!==v?new D(E,v,b,w-v):E),t.get(u)===g.length&&t.get(u)-u===C.length)break e}}let h=a.get(u);const r=[];let c=g.length,o=C.length;for(;;){const d=h?h.x+h.length:0,l=h?h.y+h.length:0;if((d!==c||l!==o)&&r.push(new k.SequenceDiff(new L.OffsetRange(d,c),new L.OffsetRange(l,o))),!h)break;c=h.x,o=h.y,h=h.prev}return r.reverse(),new k.DiffAlgorithmResult(r,!1)}}e.MyersDiffAlgorithm=y;class D{constructor(g,C,s,i){this.prev=g,this.x=C,this.y=s,this.length=i}}class S{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(g){return g<0?(g=-g-1,this.negativeArr[g]):this.positiveArr[g]}set(g,C){if(g<0){if(g=-g-1,g>=this.negativeArr.length){const s=this.negativeArr;this.negativeArr=new Int32Array(s.length*2),this.negativeArr.set(s)}this.negativeArr[g]=C}else{if(g>=this.positiveArr.length){const s=this.positiveArr;this.positiveArr=new Int32Array(s.length*2),this.positiveArr.set(s)}this.positiveArr[g]=C}}}class f{constructor(){this.positiveArr=[],this.negativeArr=[]}get(g){return g<0?(g=-g-1,this.negativeArr[g]):this.positiveArr[g]}set(g,C){g<0?(g=-g-1,this.negativeArr[g]=C):this.positiveArr[g]=C}}}),define(ne[489],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Array2D=void 0;class L{constructor(y,D){this.width=y,this.height=D,this.array=[],this.array=new Array(y*D)}get(y,D){return this.array[y+D*this.width]}set(y,D,S){this.array[y+D*this.width]=S}}e.Array2D=L}),define(ne[490],se([1,0,90,176,489]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicProgrammingDiffing=void 0;class D{compute(f,_,g=k.InfiniteTimeout.instance,C){if(f.length===0||_.length===0)return k.DiffAlgorithmResult.trivial(f,_);const s=new y.Array2D(f.length,_.length),i=new y.Array2D(f.length,_.length),n=new y.Array2D(f.length,_.length);for(let o=0;o0&&d>0&&i.get(o-1,d-1)===3&&(m+=n.get(o-1,d-1)),m+=C?C(o,d):1):m=-1;const v=Math.max(l,p,m);if(v===m){const b=o>0&&d>0?n.get(o-1,d-1):0;n.set(o,d,b+1),i.set(o,d,3)}else v===l?(n.set(o,d,0),i.set(o,d,1)):v===p&&(n.set(o,d,0),i.set(o,d,2));s.set(o,d,v)}const t=[];let a=f.length,u=_.length;function h(o,d){(o+1!==a||d+1!==u)&&t.push(new k.SequenceDiff(new L.OffsetRange(o+1,a),new L.OffsetRange(d+1,u))),a=o,u=d}let r=f.length-1,c=_.length-1;for(;r>=0&&c>=0;)i.get(r,c)===3?(h(r,c),r--,c--):i.get(r,c)===1?r--:c--;return h(-1,-1),t.reverse(),new k.DiffAlgorithmResult(t,!1)}}e.DynamicProgrammingDiffing=D}),define(ne[109],se([1,0,66]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MovedText=e.SimpleLineRangeMapping=e.RangeMapping=e.LineRangeMapping=e.LinesDiff=void 0;class k{constructor(g,C,s){this.changes=g,this.moves=C,this.hitTimeout=s}}e.LinesDiff=k;class y{static inverse(g,C,s){const i=[];let n=1,t=1;for(const u of g){const h=new y(new L.LineRange(n,u.originalRange.startLineNumber),new L.LineRange(t,u.modifiedRange.startLineNumber),void 0);h.modifiedRange.isEmpty||i.push(h),n=u.originalRange.endLineNumberExclusive,t=u.modifiedRange.endLineNumberExclusive}const a=new y(new L.LineRange(n,C+1),new L.LineRange(t,s+1),void 0);return a.modifiedRange.isEmpty||i.push(a),i}constructor(g,C,s){this.originalRange=g,this.modifiedRange=C,this.innerChanges=s}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var g;return new y(this.modifiedRange,this.originalRange,(g=this.innerChanges)===null||g===void 0?void 0:g.map(C=>C.flip()))}}e.LineRangeMapping=y;class D{constructor(g,C){this.originalRange=g,this.modifiedRange=C}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new D(this.modifiedRange,this.originalRange)}}e.RangeMapping=D;class S{constructor(g,C){this.original=g,this.modified=C}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new S(this.modified,this.original)}join(g){return new S(this.original.join(g.original),this.modified.join(g.modified))}}e.SimpleLineRangeMapping=S;class f{constructor(g,C){this.lineRangeMapping=g,this.changes=C}flip(){return new f(this.lineRangeMapping.flip(),this.changes.map(g=>g.flip()))}}e.MovedText=f}),define(ne[276],se([1,0,14,85,196,9,66,90,12,5,176,490,487,488,109]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findFirstMonotonous=e.findLastMonotonous=e.LinesSliceCharSequence=e.LineSequence=e.getLineRangeMapping=e.lineRangeMappingFromRangeMappings=e.AdvancedLinesDiffComputer=void 0;class a{constructor(){this.dynamicProgrammingDiffing=new s.DynamicProgrammingDiffing,this.myersDiffingAlgorithm=new n.MyersDiffAlgorithm}computeDiff(R,K,G){if(R.length<=1&&(0,L.equals)(R,K,($,re)=>$===re))return new t.LinesDiff([],[],!1);if(R.length===1&&R[0].length===0||K.length===1&&K[0].length===0)return new t.LinesDiff([new t.LineRangeMapping(new S.LineRange(1,R.length+1),new S.LineRange(1,K.length+1),[new t.RangeMapping(new g.Range(1,1,R.length,R[0].length+1),new g.Range(1,1,K.length,K[0].length+1))])],[],!1);const Z=G.maxComputationTimeMs===0?C.InfiniteTimeout.instance:new C.DateTimeout(G.maxComputationTimeMs),J=!G.ignoreTrimWhitespace,X=new Map;function H($){let re=X.get($);return re===void 0&&(re=X.size,X.set($,re)),re}const B=R.map($=>H($.trim())),V=K.map($=>H($.trim())),Y=new v(B,R),ie=new v(V,K),ae=(()=>Y.length+ie.length<1700?this.dynamicProgrammingDiffing.compute(Y,ie,Z,($,re)=>R[$]===K[re]?K[re].length===0?.1:1+Math.log(1+K[re].length):.99):this.myersDiffingAlgorithm.compute(Y,ie))();let ce=ae.diffs,de=ae.hitTimeout;ce=(0,i.optimizeSequenceDiffs)(Y,ie,ce),ce=(0,i.removeRandomLineMatches)(Y,ie,ce);const he=[],ue=$=>{if(J)for(let re=0;re<$;re++){const oe=te+re,ge=q+re;if(R[oe]!==K[ge]){const ve=this.refineDiff(R,K,new C.SequenceDiff(new f.OffsetRange(oe,oe+1),new f.OffsetRange(ge,ge+1)),Z,J);for(const Se of ve.mappings)he.push(Se);ve.hitTimeout&&(de=!0)}}};let te=0,q=0;for(const $ of ce){(0,k.assertFn)(()=>$.seq1Range.start-te===$.seq2Range.start-q);const re=$.seq1Range.start-te;ue(re),te=$.seq1Range.endExclusive,q=$.seq2Range.endExclusive;const oe=this.refineDiff(R,K,$,Z,J);oe.hitTimeout&&(de=!0);for(const ge of oe.mappings)he.push(ge)}ue(R.length-te);const z=l(he,R,K);let ee=[];return G.computeMoves&&(ee=this.computeMoves(z,R,K,B,V,Z,J)),(0,k.assertFn)(()=>{function $(oe,ge){if(oe.lineNumber<1||oe.lineNumber>ge.length)return!1;const ve=ge[oe.lineNumber-1];return!(oe.column<1||oe.column>ve.length+1)}function re(oe,ge){return!(oe.startLineNumber<1||oe.startLineNumber>ge.length+1||oe.endLineNumberExclusive<1||oe.endLineNumberExclusive>ge.length+1)}for(const oe of z){if(!oe.innerChanges)return!1;for(const ge of oe.innerChanges)if(!($(ge.modifiedRange.getStartPosition(),K)&&$(ge.modifiedRange.getEndPosition(),K)&&$(ge.originalRange.getStartPosition(),R)&&$(ge.originalRange.getEndPosition(),R)))return!1;if(!re(oe.modifiedRange,K)||!re(oe.originalRange,R))return!1}return!0}),new t.LinesDiff(z,ee,de)}computeMoves(R,K,G,Z,J,X,H){const B=[],V=R.filter(z=>z.modifiedRange.isEmpty&&z.originalRange.length>=3).map(z=>new U(z.originalRange,K,z)),Y=new Set(R.filter(z=>z.originalRange.isEmpty&&z.modifiedRange.length>=3).map(z=>new U(z.modifiedRange,G,z))),ie=new Set;for(const z of V){let ee=-1,$;for(const re of Y){const oe=z.computeSimilarity(re);oe>ee&&(ee=oe,$=re)}if(ee>.9&&$&&(Y.delete($),B.push(new t.SimpleLineRangeMapping(z.range,$.range)),ie.add(z.source),ie.add($.source)),!X.isValid())return[]}const ae=new y.SetMap;for(const z of R)if(!ie.has(z))for(let ee=z.originalRange.startLineNumber;eez.modifiedRange.startLineNumber,L.numberComparator));for(const z of R){if(ie.has(z))continue;let ee=[];for(let $=z.modifiedRange.startLineNumber;${for(const Le of ee)if(Le.originalLineRange.endLineNumberExclusive+1===ve.endLineNumberExclusive&&Le.modifiedLineRange.endLineNumberExclusive+1===oe.endLineNumberExclusive){Le.originalLineRange=new S.LineRange(Le.originalLineRange.startLineNumber,ve.endLineNumberExclusive),Le.modifiedLineRange=new S.LineRange(Le.modifiedLineRange.startLineNumber,oe.endLineNumberExclusive),ge.push(Le);return}const Se={modifiedLineRange:oe,originalLineRange:ve};ce.push(Se),ge.push(Se)}),ee=ge}if(!X.isValid())return[]}ce.sort((0,L.reverseOrder)((0,L.compareBy)(z=>z.modifiedLineRange.length,L.numberComparator)));const de=new r,he=new r;for(const z of ce){const ee=z.modifiedLineRange.startLineNumber-z.originalLineRange.startLineNumber,$=de.subtractFrom(z.modifiedLineRange),re=he.subtractFrom(z.originalLineRange).map(ge=>ge.delta(ee)),oe=h($,re);for(const ge of oe){if(ge.length<3)continue;const ve=ge,Se=ge.delta(-ee);B.push(new t.SimpleLineRangeMapping(Se,ve)),de.addRange(ve),he.addRange(Se)}}if(B.sort((0,L.compareBy)(z=>z.original.startLineNumber,L.numberComparator)),B.length===0)return[];let ue=[B[0]];for(let z=1;z=0&&oe>=0&&re+oe<=2){ue[ue.length-1]=ee.join($);continue}$.original.toOffsetRange().slice(K).map(Se=>Se.trim()).join(` -`).length<=10||ue.push($)}const te=u.createOfSorted(R,z=>z.originalRange.endLineNumberExclusive,L.numberComparator);return ue=ue.filter(z=>{const ee=te.findLastItemBeforeOrEqual(z.original.startLineNumber)||new t.LineRangeMapping(new S.LineRange(1,1),new S.LineRange(1,1),[]),$=z.modified.startLineNumber-ee.modifiedRange.endLineNumberExclusive,re=z.original.startLineNumber-ee.originalRange.endLineNumberExclusive;return $!==re}),ue.map(z=>{const ee=this.refineDiff(K,G,new C.SequenceDiff(z.original.toOffsetRange(),z.modified.toOffsetRange()),X,H),$=l(ee.mappings,K,G,!0);return new t.MovedText(z,$)})}refineDiff(R,K,G,Z,J){const X=new w(R,G.seq1Range,J),H=new w(K,G.seq2Range,J),B=X.length+H.length<500?this.dynamicProgrammingDiffing.compute(X,H,Z):this.myersDiffingAlgorithm.compute(X,H,Z);let V=B.diffs;return V=(0,i.optimizeSequenceDiffs)(X,H,V),V=o(X,H,V),V=(0,i.smoothenSequenceDiffs)(X,H,V),V=(0,i.removeRandomMatches)(X,H,V),{mappings:V.map(ie=>new t.RangeMapping(X.translateRange(ie.seq1Range),H.translateRange(ie.seq2Range))),hitTimeout:B.hitTimeout}}}e.AdvancedLinesDiffComputer=a;class u{static createOfSorted(R,K,G){return new u(R,K,G)}constructor(R,K,G){this._items=R,this._itemToDomain=K,this._domainComparator=G,this._currentIdx=0,this._lastValue=void 0,this._hasLastValue=!1}findLastItemBeforeOrEqual(R){if(this._hasLastValue&&L.CompareResult.isLessThan(this._domainComparator(R,this._lastValue)))throw new D.BugIndicatingError;for(this._lastValue=R,this._hasLastValue=!0;this._currentIdxZ.endLineNumberExclusive>=R.startLineNumber),this._normalizedRanges.length),G=(0,L.findLastIndex)(this._normalizedRanges,Z=>Z.startLineNumber<=R.endLineNumberExclusive)+1;if(K===G)this._normalizedRanges.splice(K,0,R);else if(K===G-1){const Z=this._normalizedRanges[K];this._normalizedRanges[K]=Z.join(R)}else{const Z=this._normalizedRanges[K].join(this._normalizedRanges[G-1]).join(R);this._normalizedRanges.splice(K,G-K,Z)}}subtractFrom(R){const K=c(this._normalizedRanges.findIndex(X=>X.endLineNumberExclusive>=R.startLineNumber),this._normalizedRanges.length),G=(0,L.findLastIndex)(this._normalizedRanges,X=>X.startLineNumber<=R.endLineNumberExclusive)+1;if(K===G)return[R];const Z=[];let J=R.startLineNumber;for(let X=K;XJ&&Z.push(new S.LineRange(J,H.startLineNumber)),J=H.endLineNumberExclusive}return JH&&G.push(new C.SequenceDiff(Z.s1Range,Z.s2Range)),Z=void 0}for(const H of K){let B=function(ce,de){var he,ue,te,q;if(!Z||!Z.s1Range.containsRange(ce)||!Z.s2Range.containsRange(de))if(Z&&!(Z.s1Range.endExclusive0||R.length>0;){const G=j[0],Z=R[0];let J;G&&(!Z||G.seq1Range.start0&&K[K.length-1].seq1Range.endExclusive>=J.seq1Range.start?K[K.length-1]=K[K.length-1].join(J):K.push(J)}return K}function l(j,R,K,G=!1){const Z=[];for(const J of m(j.map(X=>p(X,R,K)),(X,H)=>X.originalRange.overlapOrTouch(H.originalRange)||X.modifiedRange.overlapOrTouch(H.modifiedRange))){const X=J[0],H=J[J.length-1];Z.push(new t.LineRangeMapping(X.originalRange.join(H.originalRange),X.modifiedRange.join(H.modifiedRange),J.map(B=>B.innerChanges[0])))}return(0,k.assertFn)(()=>!G&&Z.length>0&&Z[0].originalRange.startLineNumber!==Z[0].modifiedRange.startLineNumber?!1:(0,k.checkAdjacentItems)(Z,(J,X)=>X.originalRange.startLineNumber-J.originalRange.endLineNumberExclusive===X.modifiedRange.startLineNumber-J.modifiedRange.endLineNumberExclusive&&J.originalRange.endLineNumberExclusive=K[j.modifiedRange.startLineNumber-1].length&&j.originalRange.startColumn-1>=R[j.originalRange.startLineNumber-1].length&&j.originalRange.startLineNumber<=j.originalRange.endLineNumber+Z&&j.modifiedRange.startLineNumber<=j.modifiedRange.endLineNumber+Z&&(G=1);const J=new S.LineRange(j.originalRange.startLineNumber+G,j.originalRange.endLineNumber+1+Z),X=new S.LineRange(j.modifiedRange.startLineNumber+G,j.modifiedRange.endLineNumber+1+Z);return new t.LineRangeMapping(J,X,[j])}e.getLineRangeMapping=p;function*m(j,R){let K,G;for(const Z of j)G!==void 0&&R(G,Z)?K.push(Z):(K&&(yield K),K=[Z]),G=Z;K&&(yield K)}class v{constructor(R,K){this.trimmedHash=R,this.lines=K}getElement(R){return this.trimmedHash[R]}get length(){return this.trimmedHash.length}getBoundaryScore(R){const K=R===0?0:b(this.lines[R-1]),G=R===this.lines.length?0:b(this.lines[R]);return 1e3-(K+G)}getText(R){return this.lines.slice(R.start,R.endExclusive).join(` -`)}isStronglyEqual(R,K){return this.lines[R]===this.lines[K]}}e.LineSequence=v;function b(j){let R=0;for(;R0&&K.endExclusive>=R.length&&(K=new f.OffsetRange(K.start-1,K.endExclusive),Z=!0),this.lineRange=K;for(let J=this.lineRange.start;JString.fromCharCode(K)).join("")}getElement(R){return this.elements[R]}get length(){return this.elements.length}getBoundaryScore(R){const K=N(R>0?this.elements[R-1]:-1),G=N(RR?G=J:K=J+1}const Z=K===0?0:this.firstCharOffsetByLineMinusOne[K-1];return new _.Position(this.lineRange.start+K+1,R-Z+1+this.additionalOffsetByLine[K])}translateRange(R){return g.Range.fromPositions(this.translateOffset(R.start),this.translateOffset(R.endExclusive))}findWordContaining(R){if(R<0||R>=this.elements.length||!x(this.elements[R]))return;let K=R;for(;K>0&&x(this.elements[K-1]);)K--;let G=R;for(;GX<=R.start))!==null&&K!==void 0?K:0,J=(G=P(this.firstCharOffsetByLineMinusOne,X=>R.endExclusive<=X))!==null&&G!==void 0?G:this.elements.length;return new f.OffsetRange(Z,J)}}e.LinesSliceCharSequence=w;function E(j,R){let K=0,G=j.length;for(;K=97&&j<=122||j>=65&&j<=90||j>=48&&j<=57}const T={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function A(j){return T[j]}function N(j){return j===10?7:j===13?6:F(j)?5:j>=97&&j<=122?0:j>=65&&j<=90?1:j>=48&&j<=57?2:j===-1?3:4}function F(j){return j===32||j===9}const O=new Map;function W(j){let R=O.get(j);return R===void 0&&(R=O.size,O.set(j,R)),R}class U{constructor(R,K,G){this.range=R,this.lines=K,this.source=G,this.histogram=[];let Z=0;for(let J=R.startLineNumber-1;Jnew k.RangeMapping(new D.Range(T.originalStartLineNumber,T.originalStartColumn,T.originalEndLineNumber,T.originalEndColumn),new D.Range(T.modifiedStartLineNumber,T.modifiedStartColumn,T.modifiedEndLineNumber,T.modifiedEndColumn))));E&&(E.modifiedRange.endLineNumberExclusive===x.modifiedRange.startLineNumber||E.originalRange.endLineNumberExclusive===x.originalRange.startLineNumber)&&(x=new k.LineRangeMapping(E.originalRange.join(x.originalRange),E.modifiedRange.join(x.modifiedRange),E.innerChanges&&x.innerChanges?E.innerChanges.concat(x.innerChanges):void 0),w.pop()),w.push(x),E=x}return(0,S.assertFn)(()=>(0,S.checkAdjacentItems)(w,(I,M)=>M.originalRange.startLineNumber-I.originalRange.endLineNumberExclusive===M.modifiedRange.startLineNumber-I.modifiedRange.endLineNumberExclusive&&I.originalRange.endLineNumberExclusive(d===10?"\\n":String.fromCharCode(d))+`-(${this._lineNumbers[l]},${this._columns[l]})`).join(", ")+"]"}_assertIndex(d,l){if(d<0||d>=l.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(d){return d>0&&d===this._lineNumbers.length?this.getEndLineNumber(d-1):(this._assertIndex(d,this._lineNumbers),this._lineNumbers[d])}getEndLineNumber(d){return d===-1?this.getStartLineNumber(d+1):(this._assertIndex(d,this._lineNumbers),this._charCodes[d]===10?this._lineNumbers[d]+1:this._lineNumbers[d])}getStartColumn(d){return d>0&&d===this._columns.length?this.getEndColumn(d-1):(this._assertIndex(d,this._columns),this._columns[d])}getEndColumn(d){return d===-1?this.getStartColumn(d+1):(this._assertIndex(d,this._columns),this._charCodes[d]===10?1:this._columns[d]+1)}}class n{constructor(d,l,p,m,v,b,w,E){this.originalStartLineNumber=d,this.originalStartColumn=l,this.originalEndLineNumber=p,this.originalEndColumn=m,this.modifiedStartLineNumber=v,this.modifiedStartColumn=b,this.modifiedEndLineNumber=w,this.modifiedEndColumn=E}static createFromDiffChange(d,l,p){const m=l.getStartLineNumber(d.originalStart),v=l.getStartColumn(d.originalStart),b=l.getEndLineNumber(d.originalStart+d.originalLength-1),w=l.getEndColumn(d.originalStart+d.originalLength-1),E=p.getStartLineNumber(d.modifiedStart),I=p.getStartColumn(d.modifiedStart),M=p.getEndLineNumber(d.modifiedStart+d.modifiedLength-1),P=p.getEndColumn(d.modifiedStart+d.modifiedLength-1);return new n(m,v,b,w,E,I,M,P)}}function t(o){if(o.length<=1)return o;const d=[o[0]];let l=d[0];for(let p=1,m=o.length;p0&&l.originalLength<20&&l.modifiedLength>0&&l.modifiedLength<20&&v()){const T=p.createCharSequence(d,l.originalStart,l.originalStart+l.originalLength-1),A=m.createCharSequence(d,l.modifiedStart,l.modifiedStart+l.modifiedLength-1);if(T.getElements().length>0&&A.getElements().length>0){let N=C(T,A,v,!0).changes;w&&(N=t(N)),x=[];for(let F=0,O=N.length;F1&&N>1;){const F=x.charCodeAt(A-2),O=T.charCodeAt(N-2);if(F!==O)break;A--,N--}(A>1||N>1)&&this._pushTrimWhitespaceCharChange(m,v+1,1,A,b+1,1,N)}{let A=r(x,1),N=r(T,1);const F=x.length+1,O=T.length+1;for(;A!0;const d=Date.now();return()=>Date.now()-dnew L.LegacyLinesDiffComputer,getAdvanced:()=>new k.AdvancedLinesDiffComputer}}),define(ne[277],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InternalEditorAction=void 0;class L{constructor(y,D,S,f,_,g){this.id=y,this.label=D,this.alias=S,this._precondition=f,this._run=_,this._contextKeyService=g}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(y){return this.isSupported()?this._run(y):Promise.resolve(void 0)}}e.InternalEditorAction=L}),define(ne[148],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorType=void 0,e.EditorType={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}}),define(ne[177],se([1,0,148]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCodeEditor=e.isCompositeEditor=e.isDiffEditor=e.isCodeEditor=void 0;function k(f){return f&&typeof f.getEditorType=="function"?f.getEditorType()===L.EditorType.ICodeEditor:!1}e.isCodeEditor=k;function y(f){return f&&typeof f.getEditorType=="function"?f.getEditorType()===L.EditorType.IDiffEditor:!1}e.isDiffEditor=y;function D(f){return!!f&&typeof f=="object"&&typeof f.onDidChangeActiveEditor=="function"}e.isCompositeEditor=D;function S(f){return k(f)?f:y(f)?f.getModifiedEditor():D(f)&&k(f.activeCodeEditor)?f.activeCodeEditor:null}e.getCodeEditor=S}),define(ne[149],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEditorFeatures=e.registerEditorFeature=void 0;const L=[];function k(D){L.push(D)}e.registerEditorFeature=k;function y(){return L.slice(0)}e.getEditorFeatures=y}),define(ne[493],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorTheme=void 0;class L{get type(){return this._theme.type}get value(){return this._theme}constructor(y){this._theme=y}update(y){this._theme=y}getColor(y){return this._theme.getColor(y)}}e.EditorTheme=L}),define(ne[124],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenMetadata=void 0;class L{static getLanguageId(y){return(y&255)>>>0}static getTokenType(y){return(y&768)>>>8}static containsBalancedBrackets(y){return(y&1024)!==0}static getFontStyle(y){return(y&30720)>>>11}static getForeground(y){return(y&16744448)>>>15}static getBackground(y){return(y&4278190080)>>>24}static getClassNameFromMetadata(y){let S="mtk"+this.getForeground(y);const f=this.getFontStyle(y);return f&1&&(S+=" mtki"),f&2&&(S+=" mtkb"),f&4&&(S+=" mtku"),f&8&&(S+=" mtks"),S}static getInlineStyleFromMetadata(y,D){const S=this.getForeground(y),f=this.getFontStyle(y);let _=`color: ${D[S]};`;f&1&&(_+="font-style: italic;"),f&2&&(_+="font-weight: bold;");let g="";return f&4&&(g+=" underline"),f&8&&(g+=" line-through"),g&&(_+=`text-decoration:${g};`),_}static getPresentationFromMetadata(y){const D=this.getForeground(y),S=this.getFontStyle(y);return{foreground:D,italic:!!(S&1),bold:!!(S&2),underline:!!(S&4),strikethrough:!!(S&8)}}}e.TokenMetadata=L}),define(ne[494],se([1,0,38]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.computeDefaultDocumentColors=void 0;function k(i){const n=[];for(const t of i){const a=Number(t);(a||a===0&&t.replace(/\s/g,"")!=="")&&n.push(a)}return n}function y(i,n,t,a){return{red:i/255,blue:t/255,green:n/255,alpha:a}}function D(i,n){const t=n.index,a=n[0].length;if(!t)return;const u=i.positionAt(t);return{startLineNumber:u.lineNumber,startColumn:u.column,endLineNumber:u.lineNumber,endColumn:u.column+a}}function S(i,n){if(!i)return;const t=L.Color.Format.CSS.parseHex(n);if(t)return{range:i,color:y(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function f(i,n,t){if(!i||n.length!==1)return;const u=n[0].values(),h=k(u);return{range:i,color:y(h[0],h[1],h[2],t?h[3]:1)}}function _(i,n,t){if(!i||n.length!==1)return;const u=n[0].values(),h=k(u),r=new L.Color(new L.HSLA(h[0],h[1]/100,h[2]/100,t?h[3]:1));return{range:i,color:y(r.rgba.r,r.rgba.g,r.rgba.b,r.rgba.a)}}function g(i,n){return typeof i=="string"?[...i.matchAll(n)]:i.findMatches(n)}function C(i){const n=[],a=g(i,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(a.length>0)for(const u of a){const h=u.filter(d=>d!==void 0),r=h[1],c=h[2];if(!c)continue;let o;if(r==="rgb"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;o=f(D(i,u),g(c,d),!1)}else if(r==="rgba"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;o=f(D(i,u),g(c,d),!0)}else if(r==="hsl"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;o=_(D(i,u),g(c,d),!1)}else if(r==="hsla"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;o=_(D(i,u),g(c,d),!0)}else r==="#"&&(o=S(D(i,u),r+c));o&&n.push(o)}return n}function s(i){return!i||typeof i.getValue!="function"||typeof i.positionAt!="function"?[]:C(i)}e.computeDefaultDocumentColors=s}),define(ne[110],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AutoClosingPairs=e.StandardAutoClosingPairConditional=e.IndentAction=void 0;var L;(function(S){S[S.None=0]="None",S[S.Indent=1]="Indent",S[S.IndentOutdent=2]="IndentOutdent",S[S.Outdent=3]="Outdent"})(L||(e.IndentAction=L={}));class k{constructor(f){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=f.open,this.close=f.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(f.notIn))for(let _=0,g=f.notIn.length;_n&&(n=c),r>t&&(t=r),o>t&&(t=o)}n++,t++;const a=new k(t,n,0);for(let u=0,h=i.length;u=this._maxCharCode?0:this._states.get(i,n)}}e.StateMachine=y;let D=null;function S(){return D===null&&(D=new y([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),D}let f=null;function _(){if(f===null){f=new L.CharacterClassifier(0);const s=` <>'"\u3001\u3002\uFF61\uFF64\uFF0C\uFF0E\uFF1A\uFF1B\u2018\u3008\u300C\u300E\u3014\uFF08\uFF3B\uFF5B\uFF62\uFF63\uFF5D\uFF3D\uFF09\u3015\u300F\u300D\u3009\u2019\uFF40\uFF5E\u2026`;for(let n=0;na);if(a>0){const r=n.charCodeAt(a-1),c=n.charCodeAt(h);(r===40&&c===41||r===91&&c===93||r===123&&c===125)&&h--}return{range:{startLineNumber:t,startColumn:a+1,endLineNumber:t,endColumn:h+2},url:n.substring(a,h+1)}}static computeLinks(i,n=S()){const t=_(),a=[];for(let u=1,h=i.getLineCount();u<=h;u++){const r=i.getLineContent(u),c=r.length;let o=0,d=0,l=0,p=1,m=!1,v=!1,b=!1,w=!1;for(;o0&&D.getLanguageId(s-1)===g;)s--;return new k(D,g,s,C+1,D.getStartOffset(s),D.getEndOffset(C))}e.createScopedLineTokens=L;class k{constructor(S,f,_,g,C,s){this._scopedLineTokensBrand=void 0,this._actual=S,this.languageId=f,this._firstTokenIndex=_,this._lastTokenIndex=g,this.firstCharOffset=C,this._lastCharOffset=s}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(S){return this._actual.getLineContent().substring(0,this.firstCharOffset+S)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(S){return this._actual.findTokenIndexAtOffset(S+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(S){return this._actual.getStandardTokenType(S+this._firstTokenIndex)}}e.ScopedLineTokens=k;function y(D){return(D&3)!==0}e.ignoreBracketsInToken=y}),define(ne[74],se([1,0,12,5,24,125,82,202]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isQuote=e.EditOperationResult=e.SingleCursorState=e.PartialViewCursorState=e.PartialModelCursorState=e.CursorState=e.CursorConfiguration=void 0;const _=()=>!0,g=()=>!1,C=r=>r===" "||r===" ";class s{static shouldRecreate(c){return c.hasChanged(142)||c.hasChanged(128)||c.hasChanged(36)||c.hasChanged(75)||c.hasChanged(77)||c.hasChanged(78)||c.hasChanged(6)||c.hasChanged(10)||c.hasChanged(8)||c.hasChanged(9)||c.hasChanged(13)||c.hasChanged(126)||c.hasChanged(49)||c.hasChanged(89)}constructor(c,o,d,l){this.languageConfigurationService=l,this._cursorMoveConfigurationBrand=void 0,this._languageId=c;const p=d.options,m=p.get(142),v=p.get(49);this.readOnly=p.get(89),this.tabSize=o.tabSize,this.indentSize=o.indentSize,this.insertSpaces=o.insertSpaces,this.stickyTabStops=p.get(114),this.lineHeight=v.lineHeight,this.typicalHalfwidthCharacterWidth=v.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(m.height/this.lineHeight)-2),this.useTabStops=p.get(126),this.wordSeparators=p.get(128),this.emptySelectionClipboard=p.get(36),this.copyWithSyntaxHighlighting=p.get(24),this.multiCursorMergeOverlapping=p.get(75),this.multiCursorPaste=p.get(77),this.multiCursorLimit=p.get(78),this.autoClosingBrackets=p.get(6),this.autoClosingQuotes=p.get(10),this.autoClosingDelete=p.get(8),this.autoClosingOvertype=p.get(9),this.autoSurround=p.get(13),this.autoIndent=p.get(11),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(c,this.autoClosingQuotes,!0),bracket:this._getShouldAutoClose(c,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(c).getAutoClosingPairs();const b=this.languageConfigurationService.getLanguageConfiguration(c).getSurroundingPairs();if(b)for(const w of b)this.surroundingPairs[w.open]=w.close}get electricChars(){var c;if(!this._electricChars){this._electricChars={};const o=(c=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)===null||c===void 0?void 0:c.getElectricCharacters();if(o)for(const d of o)this._electricChars[d]=!0}return this._electricChars}onElectricCharacter(c,o,d){const l=(0,D.createScopedLineTokens)(o,d-1),p=this.languageConfigurationService.getLanguageConfiguration(l.languageId).electricCharacter;return p?p.onElectricCharacter(c,l,d-l.firstCharOffset):null}normalizeIndentation(c){return(0,f.normalizeIndentation)(c,this.indentSize,this.insertSpaces)}_getShouldAutoClose(c,o,d){switch(o){case"beforeWhitespace":return C;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(c,d);case"always":return _;case"never":return g}}_getLanguageDefinedShouldAutoClose(c,o){const d=this.languageConfigurationService.getLanguageConfiguration(c).getAutoCloseBeforeSet(o);return l=>d.indexOf(l)!==-1}visibleColumnFromColumn(c,o){return S.CursorColumns.visibleColumnFromColumn(c.getLineContent(o.lineNumber),o.column,this.tabSize)}columnFromVisibleColumn(c,o,d){const l=S.CursorColumns.columnFromVisibleColumn(c.getLineContent(o),d,this.tabSize),p=c.getLineMinColumn(o);if(lm?m:l}}e.CursorConfiguration=s;class i{static fromModelState(c){return new n(c)}static fromViewState(c){return new t(c)}static fromModelSelection(c){const o=y.Selection.liftSelection(c),d=new a(k.Range.fromPositions(o.getSelectionStart()),0,0,o.getPosition(),0);return i.fromModelState(d)}static fromModelSelections(c){const o=[];for(let d=0,l=c.length;ds,a=C>i,u=Ci||pC||l0&&C--,D.columnSelect(f,_,g.fromViewLineNumber,g.fromViewVisualColumn,g.toViewLineNumber,C)}static columnSelectRight(f,_,g){let C=0;const s=Math.min(g.fromViewLineNumber,g.toViewLineNumber),i=Math.max(g.fromViewLineNumber,g.toViewLineNumber);for(let t=s;t<=i;t++){const a=_.getLineMaxColumn(t),u=f.visibleColumnFromColumn(_,new k.Position(t,a));C=Math.max(C,u)}let n=g.toViewVisualColumn;return ns.getLineMinColumn(i.lineNumber))return i.delta(void 0,-L.prevCharLength(s.getLineContent(i.lineNumber),i.column-1));if(i.lineNumber>1){const n=i.lineNumber-1;return new y.Position(n,s.getLineMaxColumn(n))}else return i}static leftPositionAtomicSoftTabs(s,i,n){if(i.column<=s.getLineIndentColumn(i.lineNumber)){const t=s.getLineMinColumn(i.lineNumber),a=s.getLineContent(i.lineNumber),u=S.AtomicTabMoveOperations.atomicPosition(a,i.column-1,n,0);if(u!==-1&&u+1>=t)return new y.Position(i.lineNumber,u+1)}return this.leftPosition(s,i)}static left(s,i,n){const t=s.stickyTabStops?g.leftPositionAtomicSoftTabs(i,n,s.tabSize):g.leftPosition(i,n);return new _(t.lineNumber,t.column,0)}static moveLeft(s,i,n,t,a){let u,h;if(n.hasSelection()&&!t)u=n.selection.startLineNumber,h=n.selection.startColumn;else{const r=n.position.delta(void 0,-(a-1)),c=i.normalizePosition(g.clipPositionColumn(r,i),0),o=g.left(s,i,c);u=o.lineNumber,h=o.column}return n.move(t,u,h,0)}static clipPositionColumn(s,i){return new y.Position(s.lineNumber,g.clipRange(s.column,i.getLineMinColumn(s.lineNumber),i.getLineMaxColumn(s.lineNumber)))}static clipRange(s,i,n){return sn?n:s}static rightPosition(s,i,n){return no?(n=o,h?t=i.getLineMaxColumn(n):t=Math.min(i.getLineMaxColumn(n),t)):t=s.columnFromVisibleColumn(i,n,c),p?a=0:a=c-k.CursorColumns.visibleColumnFromColumn(i.getLineContent(n),t,s.tabSize),r!==void 0){const m=new y.Position(n,t),v=i.normalizePosition(m,r);a=a+(t-v.column),n=v.lineNumber,t=v.column}return new _(n,t,a)}static down(s,i,n,t,a,u,h){return this.vertical(s,i,n,t,a,n+u,h,4)}static moveDown(s,i,n,t,a){let u,h;n.hasSelection()&&!t?(u=n.selection.endLineNumber,h=n.selection.endColumn):(u=n.position.lineNumber,h=n.position.column);let r=0,c;do if(c=g.down(s,i,u+r,h,n.leftoverVisibleColumns,a,!0),i.normalizePosition(new y.Position(c.lineNumber,c.column),2).lineNumber>u)break;while(r++<10&&u+r1&&this._isBlankLine(i,a);)a--;for(;a>1&&!this._isBlankLine(i,a);)a--;return n.move(t,a,i.getLineMinColumn(a),0)}static moveToNextBlankLine(s,i,n,t){const a=i.getLineCount();let u=n.position.lineNumber;for(;u=l.length+1)return!1;const p=l.charAt(d.column-2),m=t.get(p);if(!m)return!1;if((0,y.isQuote)(p)){if(n==="never")return!1}else if(i==="never")return!1;const v=l.charAt(d.column-1);let b=!1;for(const w of m)w.open===p&&w.close===v&&(b=!0);if(!b)return!1;if(s==="auto"){let w=!1;for(let E=0,I=h.length;E1){const a=i.getLineContent(t.lineNumber),u=L.firstNonWhitespaceIndex(a),h=u===-1?a.length+1:u+1;if(t.column<=h){const r=n.visibleColumnFromColumn(i,t),c=D.CursorColumns.prevIndentTabStop(r,n.indentSize),o=n.columnFromVisibleColumn(i,t.lineNumber,c);return new f.Range(t.lineNumber,o,t.lineNumber,t.column)}}return f.Range.fromPositions(g.getPositionAfterDeleteLeft(t,i),t)}static getPositionAfterDeleteLeft(s,i){if(s.column>1){const n=L.getLeftDeleteOffset(s.column-1,i.getLineContent(s.lineNumber));return s.with(void 0,n+1)}else if(s.lineNumber>1){const n=s.lineNumber-1;return new _.Position(n,i.getLineMaxColumn(n))}else return s}static cut(s,i,n){const t=[];let a=null;n.sort((u,h)=>_.Position.compare(u.getStartPosition(),h.getEndPosition()));for(let u=0,h=n.length;u1&&a?.endLineNumber!==c.lineNumber?(o=c.lineNumber-1,d=i.getLineMaxColumn(c.lineNumber-1),l=c.lineNumber,p=i.getLineMaxColumn(c.lineNumber)):(o=c.lineNumber,d=1,l=c.lineNumber,p=i.getLineMaxColumn(c.lineNumber));const m=new f.Range(o,d,l,p);a=m,m.isEmpty()?t[u]=null:t[u]=new k.ReplaceCommand(m,"")}else t[u]=null;else t[u]=new k.ReplaceCommand(r,"")}return new y.EditOperationResult(0,t,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}e.DeleteOperations=g}),define(ne[178],se([1,0,11,74,204,146,12,5]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WordPartOperations=e.WordOperations=void 0;class _{static _createWord(i,n,t,a,u){return{start:a,end:u,wordType:n,nextCharClass:t}}static _findPreviousWordOnLine(i,n,t){const a=n.getLineContent(t.lineNumber);return this._doFindPreviousWordOnLine(a,i,t)}static _doFindPreviousWordOnLine(i,n,t){let a=0;for(let u=t.column-2;u>=0;u--){const h=i.charCodeAt(u),r=n.get(h);if(r===0){if(a===2)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1));a=1}else if(r===2){if(a===1)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1));a=2}else if(r===1&&a!==0)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1))}return a!==0?this._createWord(i,a,1,0,this._findEndOfWord(i,n,a,0)):null}static _findEndOfWord(i,n,t,a){const u=i.length;for(let h=a;h=0;u--){const h=i.charCodeAt(u),r=n.get(h);if(r===1||t===1&&r===2||t===2&&r===0)return u+1}return 0}static moveWordLeft(i,n,t,a){let u=t.lineNumber,h=t.column;h===1&&u>1&&(u=u-1,h=n.getLineMaxColumn(u));let r=_._findPreviousWordOnLine(i,n,new S.Position(u,h));if(a===0)return new S.Position(u,r?r.start+1:1);if(a===1)return r&&r.wordType===2&&r.end-r.start===1&&r.nextCharClass===0&&(r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1))),new S.Position(u,r?r.start+1:1);if(a===3){for(;r&&r.wordType===2;)r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1));return new S.Position(u,r?r.start+1:1)}return r&&h<=r.end+1&&(r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1))),new S.Position(u,r?r.end+1:1)}static _moveWordPartLeft(i,n){const t=n.lineNumber,a=i.getLineMaxColumn(t);if(n.column===1)return t>1?new S.Position(t-1,i.getLineMaxColumn(t-1)):n;const u=i.getLineContent(t);for(let h=n.column-1;h>1;h--){const r=u.charCodeAt(h-2),c=u.charCodeAt(h-1);if(r===95&&c!==95)return new S.Position(t,h);if(r===45&&c!==45)return new S.Position(t,h);if((L.isLowerAsciiLetter(r)||L.isAsciiDigit(r))&&L.isUpperAsciiLetter(c))return new S.Position(t,h);if(L.isUpperAsciiLetter(r)&&L.isUpperAsciiLetter(c)&&h+1=c.start+1&&(c=_._findNextWordOnLine(i,n,new S.Position(u,c.end+1))),c?h=c.start+1:h=n.getLineMaxColumn(u);return new S.Position(u,h)}static _moveWordPartRight(i,n){const t=n.lineNumber,a=i.getLineMaxColumn(t);if(n.column===a)return t1?o=1:(c--,o=a.getLineMaxColumn(c)):(d&&o<=d.end+1&&(d=_._findPreviousWordOnLine(t,a,new S.Position(c,d.start+1))),d?o=d.end+1:o>1?o=1:(c--,o=a.getLineMaxColumn(c))),new f.Range(c,o,r.lineNumber,r.column)}static deleteInsideWord(i,n,t){if(!t.isEmpty())return t;const a=new S.Position(t.positionLineNumber,t.positionColumn),u=this._deleteInsideWordWhitespace(n,a);return u||this._deleteInsideWordDetermineDeleteRange(i,n,a)}static _charAtIsWhitespace(i,n){const t=i.charCodeAt(n);return t===32||t===9}static _deleteInsideWordWhitespace(i,n){const t=i.getLineContent(n.lineNumber),a=t.length;if(a===0)return null;let u=Math.max(n.column-2,0);if(!this._charAtIsWhitespace(t,u))return null;let h=Math.min(n.column-1,a-1);if(!this._charAtIsWhitespace(t,h))return null;for(;u>0&&this._charAtIsWhitespace(t,u-1);)u--;for(;h+11?new f.Range(t.lineNumber-1,n.getLineMaxColumn(t.lineNumber-1),t.lineNumber,1):t.lineNumberl.start+1<=t.column&&t.column<=l.end+1,r=(l,p)=>(l=Math.min(l,t.column),p=Math.max(p,t.column),new f.Range(t.lineNumber,l,t.lineNumber,p)),c=l=>{let p=l.start+1,m=l.end+1,v=!1;for(;m-11&&this._charAtIsWhitespace(a,p-2);)p--;return r(p,m)},o=_._findPreviousWordOnLine(i,n,t);if(o&&h(o))return c(o);const d=_._findNextWordOnLine(i,n,t);return d&&h(d)?c(d):o&&d?r(o.end+1,d.start+1):o?r(o.start+1,o.end+1):d?r(d.start+1,d.end+1):r(1,u+1)}static _deleteWordPartLeft(i,n){if(!n.isEmpty())return n;const t=n.getPosition(),a=_._moveWordPartLeft(i,t);return new f.Range(t.lineNumber,t.column,a.lineNumber,a.column)}static _findFirstNonWhitespaceChar(i,n){const t=i.length;for(let a=n;a=p.start+1&&(p=_._findNextWordOnLine(t,a,new S.Position(c,p.end+1))),p?o=p.start+1:o!!i)}}),define(ne[205],se([1,0,20,74,203,178,12,5]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorMove=e.CursorMoveCommands=void 0;class _{static addCursorDown(s,i,n){const t=[];let a=0;for(let u=0,h=i.length;uc&&(o=c,d=s.model.getLineMaxColumn(o)),k.CursorState.fromModelState(new k.SingleCursorState(new f.Range(u.lineNumber,1,o,d),2,0,new S.Position(o,d),0))}const r=i.modelState.selectionStart.getStartPosition().lineNumber;if(u.lineNumberr){const c=s.getLineCount();let o=h.lineNumber+1,d=1;return o>c&&(o=c,d=s.getLineMaxColumn(o)),k.CursorState.fromViewState(i.viewState.move(!0,o,d,0))}else{const c=i.modelState.selectionStart.getEndPosition();return k.CursorState.fromModelState(i.modelState.move(!0,c.lineNumber,c.column,0))}}static word(s,i,n,t){const a=s.model.validatePosition(t);return k.CursorState.fromModelState(D.WordOperations.word(s.cursorConfig,s.model,i.modelState,n,a))}static cancelSelection(s,i){if(!i.modelState.hasSelection())return new k.CursorState(i.modelState,i.viewState);const n=i.viewState.position.lineNumber,t=i.viewState.position.column;return k.CursorState.fromViewState(new k.SingleCursorState(new f.Range(n,t,n,t),0,0,new S.Position(n,t),0))}static moveTo(s,i,n,t,a){if(n){if(i.modelState.selectionStartKind===1)return this.word(s,i,n,t);if(i.modelState.selectionStartKind===2)return this.line(s,i,n,t,a)}const u=s.model.validatePosition(t),h=a?s.coordinatesConverter.validateViewPosition(new S.Position(a.lineNumber,a.column),u):s.coordinatesConverter.convertModelPositionToViewPosition(u);return k.CursorState.fromViewState(i.viewState.move(n,h.lineNumber,h.column,0))}static simpleMove(s,i,n,t,a,u){switch(n){case 0:return u===4?this._moveHalfLineLeft(s,i,t):this._moveLeft(s,i,t,a);case 1:return u===4?this._moveHalfLineRight(s,i,t):this._moveRight(s,i,t,a);case 2:return u===2?this._moveUpByViewLines(s,i,t,a):this._moveUpByModelLines(s,i,t,a);case 3:return u===2?this._moveDownByViewLines(s,i,t,a):this._moveDownByModelLines(s,i,t,a);case 4:return u===2?i.map(h=>k.CursorState.fromViewState(y.MoveOperations.moveToPrevBlankLine(s.cursorConfig,s,h.viewState,t))):i.map(h=>k.CursorState.fromModelState(y.MoveOperations.moveToPrevBlankLine(s.cursorConfig,s.model,h.modelState,t)));case 5:return u===2?i.map(h=>k.CursorState.fromViewState(y.MoveOperations.moveToNextBlankLine(s.cursorConfig,s,h.viewState,t))):i.map(h=>k.CursorState.fromModelState(y.MoveOperations.moveToNextBlankLine(s.cursorConfig,s.model,h.modelState,t)));case 6:return this._moveToViewMinColumn(s,i,t);case 7:return this._moveToViewFirstNonWhitespaceColumn(s,i,t);case 8:return this._moveToViewCenterColumn(s,i,t);case 9:return this._moveToViewMaxColumn(s,i,t);case 10:return this._moveToViewLastNonWhitespaceColumn(s,i,t);default:return null}}static viewportMove(s,i,n,t,a){const u=s.getCompletelyVisibleViewRange(),h=s.coordinatesConverter.convertViewRangeToModelRange(u);switch(n){case 11:{const r=this._firstLineNumberInRange(s.model,h,a),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 13:{const r=this._lastLineNumberInRange(s.model,h,a),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 12:{const r=Math.round((h.startLineNumber+h.endLineNumber)/2),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 14:{const r=[];for(let c=0,o=i.length;cn.endLineNumber-1?u=n.endLineNumber-1:ak.CursorState.fromViewState(y.MoveOperations.moveLeft(s.cursorConfig,s,a.viewState,n,t)))}static _moveHalfLineLeft(s,i,n){const t=[];for(let a=0,u=i.length;ak.CursorState.fromViewState(y.MoveOperations.moveRight(s.cursorConfig,s,a.viewState,n,t)))}static _moveHalfLineRight(s,i,n){const t=[];for(let a=0,u=i.length;aC.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(C=>C.asCursorState())}getViewPositions(){return this.cursors.map(C=>C.viewState.position)}getTopMostViewPosition(){return(0,L.findMinBy)(this.cursors,(0,L.compareBy)(C=>C.viewState.position,D.Position.compare)).viewState.position}getBottomMostViewPosition(){return(0,L.findLastMaxBy)(this.cursors,(0,L.compareBy)(C=>C.viewState.position,D.Position.compare)).viewState.position}getSelections(){return this.cursors.map(C=>C.modelState.selection)}getViewSelections(){return this.cursors.map(C=>C.viewState.selection)}setSelections(C){this.setStates(k.CursorState.fromModelSelections(C))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(C){C!==null&&(this.cursors[0].setState(this.context,C[0].modelState,C[0].viewState),this._setSecondaryStates(C.slice(1)))}_setSecondaryStates(C){const s=this.cursors.length-1,i=C.length;if(si){const n=s-i;for(let t=0;t=C+1&&this.lastAddedCursorIndex--,this.cursors[C+1].dispose(this.context),this.cursors.splice(C+1,1)}normalize(){if(this.cursors.length===1)return;const C=this.cursors.slice(0),s=[];for(let i=0,n=C.length;ii.selection,S.Range.compareRangesUsingStarts));for(let i=0;io&&m.index--;C.splice(o,1),s.splice(c,1),this._removeSecondaryCursor(o-1),i--}}}}e.CursorCollection=_}),define(ne[499],se([1,0,110]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CharacterPairSupport=void 0;class k{constructor(D){if(D.autoClosingPairs?this._autoClosingPairs=D.autoClosingPairs.map(S=>new L.StandardAutoClosingPairConditional(S)):D.brackets?this._autoClosingPairs=D.brackets.map(S=>new L.StandardAutoClosingPairConditional({open:S[0],close:S[1]})):this._autoClosingPairs=[],D.__electricCharacterSupport&&D.__electricCharacterSupport.docComment){const S=D.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new L.StandardAutoClosingPairConditional({open:S.open,close:S.close||""}))}this._autoCloseBeforeForQuotes=typeof D.autoCloseBefore=="string"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof D.autoCloseBefore=="string"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=D.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(D){return D?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}e.CharacterPairSupport=k,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])> - `,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'"\`;:.,=}])> - `}),define(ne[500],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentRulesSupport=void 0;function L(y){return y.global&&(y.lastIndex=0),!0}class k{constructor(D){this._indentationRules=D}shouldIncrease(D){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&L(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(D))}shouldDecrease(D){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&L(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(D))}shouldIndentNextLine(D){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&L(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(D))}shouldIgnore(D){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&L(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(D))}getIndentMetadata(D){let S=0;return this.shouldIncrease(D)&&(S+=1),this.shouldDecrease(D)&&(S+=2),this.shouldIndentNextLine(D)&&(S+=4),this.shouldIgnore(D)&&(S+=8),S}}e.IndentRulesSupport=k}),define(ne[501],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BasicInplaceReplace=void 0;class L{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(y,D,S,f,_){if(y&&D){const g=this.doNavigateValueSet(D,_);if(g)return{range:y,value:g}}if(S&&f){const g=this.doNavigateValueSet(f,_);if(g)return{range:S,value:g}}return null}doNavigateValueSet(y,D){const S=this.numberReplace(y,D);return S!==null?S:this.textReplace(y,D)}numberReplace(y,D){const S=Math.pow(10,y.length-(y.lastIndexOf(".")+1));let f=Number(y);const _=parseFloat(y);return!isNaN(f)&&!isNaN(_)&&f===_?f===0&&!D?null:(f=Math.floor(f*S),f+=D?S:-S,String(f/S)):null}textReplace(y,D){return this.valueSetsReplace(this._defaultValueSet,y,D)}valueSetsReplace(y,D,S){let f=null;for(let _=0,g=y.length;f===null&&_=0?(f+=S?1:-1,f<0?f=y.length-1:f%=y.length,y[f]):null}}e.BasicInplaceReplace=L,L.INSTANCE=new L}),define(ne[502],se([1,0,261]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ClosingBracketKind=e.OpeningBracketKind=e.BracketKindBase=e.LanguageBracketsConfiguration=void 0;class k{constructor(g,C){this.languageId=g;const s=C.brackets?y(C.brackets):[],i=new L.CachedFunction(a=>{const u=new Set;return{info:new S(this,a,u),closing:u}}),n=new L.CachedFunction(a=>{const u=new Set,h=new Set;return{info:new f(this,a,u,h),opening:u,openingColorized:h}});for(const[a,u]of s){const h=i.get(a),r=n.get(u);h.closing.add(r.info),r.opening.add(h.info)}const t=C.colorizedBracketPairs?y(C.colorizedBracketPairs):s.filter(a=>!(a[0]==="<"&&a[1]===">"));for(const[a,u]of t){const h=i.get(a),r=n.get(u);h.closing.add(r.info),r.openingColorized.add(h.info),r.opening.add(h.info)}this._openingBrackets=new Map([...i.cachedValues].map(([a,u])=>[a,u.info])),this._closingBrackets=new Map([...n.cachedValues].map(([a,u])=>[a,u.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(g){return this._openingBrackets.get(g)}getClosingBracketInfo(g){return this._closingBrackets.get(g)}getBracketInfo(g){return this.getOpeningBracketInfo(g)||this.getClosingBracketInfo(g)}}e.LanguageBracketsConfiguration=k;function y(_){return _.filter(([g,C])=>g!==""&&C!=="")}class D{constructor(g,C){this.config=g,this.bracketText=C}get languageId(){return this.config.languageId}}e.BracketKindBase=D;class S extends D{constructor(g,C,s){super(g,C),this.openedBrackets=s,this.isOpeningBracket=!0}}e.OpeningBracketKind=S;class f extends D{constructor(g,C,s,i){super(g,C),this.openingBrackets=s,this.openingColorizedBrackets=i,this.isOpeningBracket=!1}closes(g){return g.config!==this.config?!1:this.openingBrackets.has(g)}closesColorized(g){return g.config!==this.config?!1:this.openingColorizedBrackets.has(g)}getOpeningBrackets(){return[...this.openingBrackets]}}e.ClosingBracketKind=f}),define(ne[503],se([1,0,9,11,110]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OnEnterSupport=void 0;class D{constructor(f){f=f||{},f.brackets=f.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],f.brackets.forEach(_=>{const g=D._createOpenBracketRegExp(_[0]),C=D._createCloseBracketRegExp(_[1]);g&&C&&this._brackets.push({open:_[0],openRegExp:g,close:_[1],closeRegExp:C})}),this._regExpRules=f.onEnterRules||[]}onEnter(f,_,g,C){if(f>=3)for(let s=0,i=this._regExpRules.length;sa.reg?(a.reg.lastIndex=0,a.reg.test(a.text)):!0))return n.action}if(f>=2&&g.length>0&&C.length>0)for(let s=0,i=this._brackets.length;s=2&&g.length>0){for(let s=0,i=this._brackets.length;s{const w=s(v.token,b.token);return w!==0?w:v.index-b.index});let h=0,r="000000",c="ffffff";for(;a.length>=1&&a[0].token==="";){const v=a.shift();v.fontStyle!==-1&&(h=v.fontStyle),v.foreground!==null&&(r=v.foreground),v.background!==null&&(c=v.background)}const o=new f;for(const v of u)o.getId(v);const d=o.getId(r),l=o.getId(c),p=new i(h,d,l),m=new n(p);for(let v=0,b=a.length;v"u"){const c=this._match(h),o=C(h);r=(c.metadata|o<<8)>>>0,this._cache.set(h,r)}return(r|u<<0)>>>0}}e.TokenTheme=_;const g=/\b(comment|string|regex|regexp)\b/;function C(a){const u=a.match(g);if(!u)return 0;switch(u[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}e.toStandardTokenType=C;function s(a,u){return au?1:0}e.strcmp=s;class i{constructor(u,h,r){this._themeTrieElementRuleBrand=void 0,this._fontStyle=u,this._foreground=h,this._background=r,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new i(this._fontStyle,this._foreground,this._background)}acceptOverwrite(u,h,r){u!==-1&&(this._fontStyle=u),h!==0&&(this._foreground=h),r!==0&&(this._background=r),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}e.ThemeTrieElementRule=i;class n{constructor(u){this._themeTrieElementBrand=void 0,this._mainRule=u,this._children=new Map}match(u){if(u==="")return this._mainRule;const h=u.indexOf(".");let r,c;h===-1?(r=u,c=""):(r=u.substring(0,h),c=u.substring(h+1));const o=this._children.get(r);return typeof o<"u"?o.match(c):this._mainRule}insert(u,h,r,c){if(u===""){this._mainRule.acceptOverwrite(h,r,c);return}const o=u.indexOf(".");let d,l;o===-1?(d=u,l=""):(d=u.substring(0,o),l=u.substring(o+1));let p=this._children.get(d);typeof p>"u"&&(p=new n(this._mainRule.clone()),this._children.set(d,p)),p.insert(l,h,r,c)}}e.ThemeTrieElement=n;function t(a){const u=[];for(let h=1,r=a.length;h=f&&(m=m-l%f),m}e.lengthAdd=i;function n(l,p){return l.reduce((m,v)=>i(m,p(v)),e.lengthZero)}e.sumLengths=n;function t(l,p){return l===p}e.lengthEquals=t;function a(l,p){const m=l,v=p;if(v-m<=0)return e.lengthZero;const w=Math.floor(m/f),E=Math.floor(v/f),I=v-E*f;if(w===E){const M=m-w*f;return _(0,I-M)}else return _(E-w,I)}e.lengthDiffNonNegative=a;function u(l,p){return l=p}e.lengthGreaterThanEqual=r;function c(l){return _(l.lineNumber-1,l.column-1)}e.positionToLength=c;function o(l,p){const m=l,v=Math.floor(m/f),b=m-v*f,w=p,E=Math.floor(w/f),I=w-E*f;return new k.Range(v+1,b+1,E+1,I+1)}e.lengthsToRange=o;function d(l){const p=(0,L.splitLines)(l);return _(p.length-1,p[p.length-1].length)}e.lengthOfString=d}),define(ne[179],se([1,0,5,91]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BeforeEditPositionMapper=e.TextEditInfo=void 0;class y{static fromModelContentChanges(_){return _.map(C=>{const s=L.Range.lift(C.range);return new y((0,k.positionToLength)(s.getStartPosition()),(0,k.positionToLength)(s.getEndPosition()),(0,k.lengthOfString)(C.text))}).reverse()}constructor(_,g,C){this.startOffset=_,this.endOffset=g,this.newLength=C}toString(){return`[${(0,k.lengthToObj)(this.startOffset)}...${(0,k.lengthToObj)(this.endOffset)}) -> ${(0,k.lengthToObj)(this.newLength)}`}}e.TextEditInfo=y;class D{constructor(_){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=_.map(g=>S.from(g))}getOffsetBeforeChange(_){return this.adjustNextEdit(_),this.translateCurToOld(_)}getDistanceToNextChange(_){this.adjustNextEdit(_);const g=this.edits[this.nextEditIdx],C=g?this.translateOldToCur(g.offsetObj):null;return C===null?null:(0,k.lengthDiffNonNegative)(_,C)}translateOldToCur(_){return _.lineCount===this.deltaLineIdxInOld?(0,k.toLength)(_.lineCount+this.deltaOldToNewLineCount,_.columnCount+this.deltaOldToNewColumnCount):(0,k.toLength)(_.lineCount+this.deltaOldToNewLineCount,_.columnCount)}translateCurToOld(_){const g=(0,k.lengthToObj)(_);return g.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?(0,k.toLength)(g.lineCount-this.deltaOldToNewLineCount,g.columnCount-this.deltaOldToNewColumnCount):(0,k.toLength)(g.lineCount-this.deltaOldToNewLineCount,g.columnCount)}adjustNextEdit(_){for(;this.nextEditIdx!0)||[];return i&&c.unshift(i),c}const r=[];for(;i&&!(0,y.lengthIsZero)(h);){const[c,o]=i.splitAt(h);r.push(c),h=(0,y.lengthDiffNonNegative)(c.lengthAfter,h),i=o??C.dequeue()}return(0,y.lengthIsZero)(h)||r.push(new S(!1,h,h)),r}const t=[];function a(h,r,c){if(t.length>0&&(0,y.lengthEquals)(t[t.length-1].endOffset,h)){const o=t[t.length-1];t[t.length-1]=new k.TextEditInfo(o.startOffset,r,(0,y.lengthAdd)(o.newLength,c))}else t.push({startOffset:h,endOffset:r,newLength:c})}let u=y.lengthZero;for(const h of s){const r=n(h.lengthBefore);if(h.modified){const c=(0,y.sumLengths)(r,d=>d.lengthBefore),o=(0,y.lengthAdd)(u,c);a(u,o,h.lengthAfter),u=o}else for(const c of r){const o=u;u=(0,y.lengthAdd)(u,c.lengthBefore),c.modified&&a(o,u,c.lengthAfter)}}return t}e.combineTextEditInfos=D;class S{constructor(g,C,s){this.modified=g,this.lengthBefore=C,this.lengthAfter=s}splitAt(g){const C=(0,y.lengthDiffNonNegative)(g,this.lengthAfter);return(0,y.lengthEquals)(C,y.lengthZero)?[this,void 0]:this.modified?[new S(this.modified,this.lengthBefore,g),new S(this.modified,y.lengthZero,C)]:[new S(this.modified,g,g),new S(this.modified,C,C)]}toString(){return`${this.modified?"M":"U"}:${(0,y.lengthToObj)(this.lengthBefore)} -> ${(0,y.lengthToObj)(this.lengthAfter)}`}}function f(_){const g=[];let C=y.lengthZero;for(const s of _){const i=(0,y.lengthDiffNonNegative)(C,s.startOffset);(0,y.lengthIsZero)(i)||g.push(new S(!1,i,i));const n=(0,y.lengthDiffNonNegative)(s.startOffset,s.endOffset);g.push(new S(!0,n,s.newLength)),C=s.endOffset}return g}}),define(ne[505],se([1,0,91]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeReader=void 0;class k{constructor(f){this.lastOffset=L.lengthZero,this.nextNodes=[f],this.offsets=[L.lengthZero],this.idxs=[]}readLongestNodeAt(f,_){if((0,L.lengthLessThan)(f,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=f;;){const g=D(this.nextNodes);if(!g)return;const C=D(this.offsets);if((0,L.lengthLessThan)(f,C))return;if((0,L.lengthLessThan)(C,f))if((0,L.lengthAdd)(C,g.length)<=f)this.nextNodeAfterCurrent();else{const s=y(g);s!==-1?(this.nextNodes.push(g.getChild(s)),this.offsets.push(C),this.idxs.push(s)):this.nextNodeAfterCurrent()}else{if(_(g))return this.nextNodeAfterCurrent(),g;{const s=y(g);if(s===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(g.getChild(s)),this.offsets.push(C),this.idxs.push(s)}}}}nextNodeAfterCurrent(){for(;;){const f=D(this.offsets),_=D(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const g=D(this.nextNodes),C=y(g,this.idxs[this.idxs.length-1]);if(C!==-1){this.nextNodes.push(g.getChild(C)),this.offsets.push((0,L.lengthAdd)(f,_.length)),this.idxs[this.idxs.length-1]=C;break}else this.idxs.pop()}}}e.NodeReader=k;function y(S,f=-1){for(;;){if(f++,f>=S.childrenLength)return-1;if(S.getChild(f))return f}}function D(S){return S.length>0?S[S.length-1]:void 0}}),define(ne[126],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DenseKeyProvider=e.identityKeyProvider=e.SmallImmutableSet=void 0;const L=[];class k{static create(S,f){if(S<=128&&f.length===0){let _=k.cache[S];return _||(_=new k(S,f),k.cache[S]=_),_}return new k(S,f)}static getEmpty(){return this.empty}constructor(S,f){this.items=S,this.additionalItems=f}add(S,f){const _=f.getKey(S);let g=_>>5;if(g===0){const s=1<<_|this.items;return s===this.items?this:k.create(s,this.additionalItems)}g--;const C=this.additionalItems.slice(0);for(;C.length=g.length)return null;const a=C,u=g[a].listHeight;for(C++;C=2?y(a===0&&C===g.length?g:g.slice(a,C),!1):g[a]}let i=s(),n=s();if(!n)return i;for(let a=s();a;a=s())D(i,n)<=D(n,a)?(i=S(i,n),n=a):n=S(n,a);return S(i,n)}e.concat23Trees=k;function y(g,C=!1){if(g.length===0)return null;if(g.length===1)return g[0];let s=g.length;for(;s>3;){const i=s>>1;for(let n=0;n=3?g[2]:null,C)}e.concat23TreesOfSameHeight=y;function D(g,C){return Math.abs(g.listHeight-C.listHeight)}function S(g,C){return g.listHeight===C.listHeight?L.ListAstNode.create23(g,C,null,!1):g.listHeight>C.listHeight?f(g,C):_(C,g)}function f(g,C){g=g.toMutable();let s=g;const i=[];let n;for(;;){if(C.listHeight===s.listHeight){n=C;break}if(s.kind!==4)throw new Error("unexpected");i.push(s),s=s.makeLastElementMutable()}for(let t=i.length-1;t>=0;t--){const a=i[t];n?a.childrenLength>=3?n=L.ListAstNode.create23(a.unappendChild(),n,null,!1):(a.appendChildOfSameHeight(n),n=void 0):a.handleChildrenChanged()}return n?L.ListAstNode.create23(g,n,null,!1):g}function _(g,C){g=g.toMutable();let s=g;const i=[];for(;C.listHeight!==s.listHeight;){if(s.kind!==4)throw new Error("unexpected");i.push(s),s=s.makeFirstElementMutable()}let n=C;for(let t=i.length-1;t>=0;t--){const a=i[t];n?a.childrenLength>=3?n=L.ListAstNode.create23(n,a.unprependChild(),null,!1):(a.prependChildOfSameHeight(n),n=void 0):a.handleChildrenChanged()}return n?L.ListAstNode.create23(n,g,null,!1):g}}),define(ne[279],se([1,0,180,179,126,91,506,505]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseDocument=void 0;function _(C,s,i,n){return new g(C,s,i,n).parseDocument()}e.parseDocument=_;class g{constructor(s,i,n,t){if(this.tokenizer=s,this.createImmutableLists=t,this._itemsConstructed=0,this._itemsFromCache=0,n&&t)throw new Error("Not supported");this.oldNodeReader=n?new f.NodeReader(n):void 0,this.positionMapper=new k.BeforeEditPositionMapper(i)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let s=this.parseList(y.SmallImmutableSet.getEmpty(),0);return s||(s=L.ListAstNode.getEmpty()),s}parseList(s,i){const n=[];for(;;){let a=this.tryReadChildFromCache(s);if(!a){const u=this.tokenizer.peek();if(!u||u.kind===2&&u.bracketIds.intersects(s))break;a=this.parseChild(s,i+1)}a.kind===4&&a.childrenLength===0||n.push(a)}return this.oldNodeReader?(0,S.concat23Trees)(n):(0,S.concat23TreesOfSameHeight)(n,this.createImmutableLists)}tryReadChildFromCache(s){if(this.oldNodeReader){const i=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(i===null||!(0,D.lengthIsZero)(i)){const n=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),t=>i!==null&&!(0,D.lengthLessThan)(t.length,i)?!1:t.canBeReused(s));if(n)return this._itemsFromCache++,this.tokenizer.skip(n.length),n}}}parseChild(s,i){this._itemsConstructed++;const n=this.tokenizer.read();switch(n.kind){case 2:return new L.InvalidBracketAstNode(n.bracketIds,n.length);case 0:return n.astNode;case 1:{if(i>300)return new L.TextAstNode(n.length);const t=s.merge(n.bracketIds),a=this.parseList(t,i+1),u=this.tokenizer.peek();return u&&u.kind===2&&(u.bracketId===n.bracketId||u.bracketIds.intersects(n.bracketIds))?(this.tokenizer.read(),L.PairAstNode.create(n.astNode,a,u.astNode)):L.PairAstNode.create(n.astNode,a,null)}default:throw new Error("unexpected")}}}}),define(ne[206],se([1,0,9,124,180,91,126]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FastTokenizer=e.TextBufferTokenizer=e.Token=void 0;class f{constructor(i,n,t,a,u){this.length=i,this.kind=n,this.bracketId=t,this.bracketIds=a,this.astNode=u}}e.Token=f;class _{constructor(i,n){this.textModel=i,this.bracketTokens=n,this.reader=new g(this.textModel,this.bracketTokens),this._offset=D.lengthZero,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=i.getLineCount(),this.textBufferLastLineLength=i.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return(0,D.toLength)(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(i){this.didPeek=!1,this._offset=(0,D.lengthAdd)(this._offset,i);const n=(0,D.lengthToObj)(this._offset);this.reader.setPosition(n.lineCount,n.columnCount)}read(){let i;return this.peeked?(this.didPeek=!1,i=this.peeked):i=this.reader.read(),i&&(this._offset=(0,D.lengthAdd)(this._offset,i.length)),i}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}e.TextBufferTokenizer=_;class g{constructor(i,n){this.textModel=i,this.bracketTokens=n,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=i.getLineCount(),this.textBufferLastLineLength=i.getLineLength(this.textBufferLineCount)}setPosition(i,n){i===this.lineIdx?(this.lineCharOffset=n,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=i,this.lineCharOffset=n,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const u=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=(0,D.lengthGetColumnCountIfZeroLineCount)(u.length),u}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const i=this.lineIdx,n=this.lineCharOffset;let t=0;for(;;){const u=this.lineTokens,h=u.getCount();let r=null;if(this.lineTokenOffset1e3))break;if(t>1500)break}const a=(0,D.lengthDiff)(i,n,this.lineIdx,this.lineCharOffset);return new f(a,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(a))}}class C{constructor(i,n){this.text=i,this._offset=D.lengthZero,this.idx=0;const t=n.getRegExpStr(),a=t?new RegExp(t+`| -`,"gi"):null,u=[];let h,r=0,c=0,o=0,d=0;const l=[];for(let v=0;v<60;v++)l.push(new f((0,D.toLength)(0,v),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(0,v))));const p=[];for(let v=0;v<60;v++)p.push(new f((0,D.toLength)(1,v),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(1,v))));if(a)for(a.lastIndex=0;(h=a.exec(i))!==null;){const v=h.index,b=h[0];if(b===` -`)r++,c=v+1;else{if(o!==v){let w;if(d===r){const E=v-o;if(E_(i)).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const s=this.getRegExpStr();this._regExpGlobal=s?new RegExp(s,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(s){return this.map.get(s.toLowerCase())}findClosingTokenText(s){for(const[i,n]of this.map)if(n.kind===2&&n.bracketIds.intersects(s))return i}get isEmpty(){return this.map.size===0}}e.BracketTokens=f;function _(C){let s=(0,L.escapeRegExpCharacters)(C);return/^[\w ]+/.test(C)&&(s=`\\b${s}`),/[\w ]+$/.test(C)&&(s=`${s}\\b`),s}class g{constructor(s,i){this.denseKeyProvider=s,this.getLanguageConfiguration=i,this.languageIdToBracketTokens=new Map}didLanguageChange(s){return this.languageIdToBracketTokens.has(s)}getSingleLanguageBracketTokens(s){let i=this.languageIdToBracketTokens.get(s);return i||(i=f.createFromLanguage(this.getLanguageConfiguration(s),this.denseKeyProvider),this.languageIdToBracketTokens.set(s,i)),i}}e.LanguageAgnosticBracketTokens=g}),define(ne[507],se([1,0,280,91,279,126,206]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fixBracketsInLine=void 0;function f(g,C){const s=new D.DenseKeyProvider,i=new L.LanguageAgnosticBracketTokens(s,r=>C.getLanguageConfiguration(r)),n=new S.TextBufferTokenizer(new _([g]),i),t=(0,y.parseDocument)(n,[],void 0,!0);let a="";const u=g.getLineContent();function h(r,c){if(r.kind===2)if(h(r.openingBracket,c),c=(0,k.lengthAdd)(c,r.openingBracket.length),r.child&&(h(r.child,c),c=(0,k.lengthAdd)(c,r.child.length)),r.closingBracket)h(r.closingBracket,c),c=(0,k.lengthAdd)(c,r.closingBracket.length);else{const d=i.getSingleLanguageBracketTokens(r.openingBracket.languageId).findClosingTokenText(r.openingBracket.bracketIds);a+=d}else if(r.kind!==3){if(r.kind===0||r.kind===1)a+=u.substring((0,k.lengthGetColumnCountIfZeroLineCount)(c),(0,k.lengthGetColumnCountIfZeroLineCount)((0,k.lengthAdd)(c,r.length)));else if(r.kind===4)for(const o of r.children)h(o,c),c=(0,k.lengthAdd)(c,o.length)}}return h(t,k.lengthZero),a}e.fixBracketsInLine=f;class _{constructor(C){this.lines=C,this.tokenization={getLineTokens:s=>this.lines[s-1]}}getLineCount(){return this.lines.length}getLineLength(C){return this.lines[C-1].getLineContent().length}}}),define(ne[508],se([1,0,14]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FixedArray=void 0;class k{constructor(S){this._default=S,this._store=[]}get(S){return S=this._store.length;)this._store[this._store.length]=this._default;this._store[S]=f}replace(S,f,_){if(S>=this._store.length)return;if(f===0){this.insert(S,_);return}else if(_===0){this.delete(S,f);return}const g=this._store.slice(0,S),C=this._store.slice(S+f),s=y(_,this._default);this._store=g.concat(s,C)}delete(S,f){f===0||S>=this._store.length||this._store.splice(S,f)}insert(S,f){if(f===0||S>=this._store.length)return;const _=[];for(let g=0;g0&&i>0||n>0&&t>0)return;const a=Math.abs(i-t),u=Math.abs(s-n);if(a===0){g.spacesDiff=u,u>0&&0<=n-1&&n-10?g++:v>1&&C++,k(s,i,d,m,u),u.looksLikeAlignment&&!(f&&S===u.spacesDiff)))continue;const w=u.spacesDiff;w<=t&&a[w]++,s=d,i=m}let h=f;g!==C&&(h=g{const d=a[o];d>c&&(c=d,r=o)}),r===4&&a[4]>0&&a[2]>0&&a[2]>=a[4]/2&&(r=2)}return{insertSpaces:h,tabSize:r}}e.guessIndentation=y}),define(ne[510],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.intervalCompare=e.recomputeMaxEnd=e.nodeAcceptEdit=e.IntervalTree=e.SENTINEL=e.IntervalNode=e.getNodeColor=void 0;function L(F){return(F.metadata&1)>>>0}e.getNodeColor=L;function k(F,O){F.metadata=F.metadata&254|O<<0}function y(F){return(F.metadata&2)>>>1===1}function D(F,O){F.metadata=F.metadata&253|(O?1:0)<<1}function S(F){return(F.metadata&4)>>>2===1}function f(F,O){F.metadata=F.metadata&251|(O?1:0)<<2}function _(F){return(F.metadata&64)>>>6===1}function g(F,O){F.metadata=F.metadata&191|(O?1:0)<<6}function C(F){return(F.metadata&24)>>>3}function s(F,O){F.metadata=F.metadata&231|O<<3}function i(F){return(F.metadata&32)>>>5===1}function n(F,O){F.metadata=F.metadata&223|(O?1:0)<<5}class t{constructor(O,W,U){this.metadata=0,this.parent=this,this.left=this,this.right=this,k(this,1),this.start=W,this.end=U,this.delta=0,this.maxEnd=U,this.id=O,this.ownerId=0,this.options=null,f(this,!1),g(this,!1),s(this,1),n(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=W,this.cachedAbsoluteEnd=U,this.range=null,D(this,!1)}reset(O,W,U,j){this.start=W,this.end=U,this.maxEnd=U,this.cachedVersionId=O,this.cachedAbsoluteStart=W,this.cachedAbsoluteEnd=U,this.range=j}setOptions(O){this.options=O;const W=this.options.className;f(this,W==="squiggly-error"||W==="squiggly-warning"||W==="squiggly-info"),g(this,this.options.glyphMarginClassName!==null),s(this,this.options.stickiness),n(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(O,W,U){this.cachedVersionId!==U&&(this.range=null),this.cachedVersionId=U,this.cachedAbsoluteStart=O,this.cachedAbsoluteEnd=W}detach(){this.parent=null,this.left=null,this.right=null}}e.IntervalNode=t,e.SENTINEL=new t(null,0,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,k(e.SENTINEL,0);class a{constructor(){this.root=e.SENTINEL,this.requestNormalizeDelta=!1}intervalSearch(O,W,U,j,R,K){return this.root===e.SENTINEL?[]:m(this,O,W,U,j,R,K)}search(O,W,U,j){return this.root===e.SENTINEL?[]:p(this,O,W,U,j)}collectNodesFromOwner(O){return d(this,O)}collectNodesPostOrder(){return l(this)}insert(O){v(this,O),this._normalizeDeltaIfNecessary()}delete(O){w(this,O),this._normalizeDeltaIfNecessary()}resolveNode(O,W){const U=O;let j=0;for(;O!==this.root;)O===O.parent.right&&(j+=O.parent.delta),O=O.parent;const R=U.start+j,K=U.end+j;U.setCachedOffsets(R,K,W)}acceptReplace(O,W,U,j){const R=c(this,O,O+W);for(let K=0,G=R.length;KW||U===1?!1:U===2?!0:O}function r(F,O,W,U,j){const R=C(F),K=R===0||R===2,G=R===1||R===2,Z=W-O,J=U,X=Math.min(Z,J),H=F.start;let B=!1;const V=F.end;let Y=!1;O<=H&&V<=W&&i(F)&&(F.start=O,B=!0,F.end=O,Y=!0);{const ae=j?1:Z>0?2:0;!B&&h(H,K,O,ae)&&(B=!0),!Y&&h(V,G,O,ae)&&(Y=!0)}if(X>0&&!j){const ae=Z>J?2:0;!B&&h(H,K,O+X,ae)&&(B=!0),!Y&&h(V,G,O+X,ae)&&(Y=!0)}{const ae=j?1:0;!B&&h(H,K,W,ae)&&(F.start=O+J,B=!0),!Y&&h(V,G,W,ae)&&(F.end=O+J,Y=!0)}const ie=J-Z;B||(F.start=Math.max(0,H+ie)),Y||(F.end=Math.max(0,V+ie)),F.start>F.end&&(F.end=F.start)}e.nodeAcceptEdit=r;function c(F,O,W){let U=F.root,j=0,R=0,K=0,G=0;const Z=[];let J=0;for(;U!==e.SENTINEL;){if(y(U)){D(U.left,!1),D(U.right,!1),U===U.parent.right&&(j-=U.parent.delta),U=U.parent;continue}if(!y(U.left)){if(R=j+U.maxEnd,RW){D(U,!0);continue}if(G=j+U.end,G>=O&&(U.setCachedOffsets(K,G,0),Z[J++]=U),D(U,!0),U.right!==e.SENTINEL&&!y(U.right)){j+=U.delta,U=U.right;continue}}return D(F.root,!1),Z}function o(F,O,W,U){let j=F.root,R=0,K=0,G=0;const Z=U-(W-O);for(;j!==e.SENTINEL;){if(y(j)){D(j.left,!1),D(j.right,!1),j===j.parent.right&&(R-=j.parent.delta),T(j),j=j.parent;continue}if(!y(j.left)){if(K=R+j.maxEnd,KW){j.start+=Z,j.end+=Z,j.delta+=Z,(j.delta<-1073741824||j.delta>1073741824)&&(F.requestNormalizeDelta=!0),D(j,!0);continue}if(D(j,!0),j.right!==e.SENTINEL&&!y(j.right)){R+=j.delta,j=j.right;continue}}D(F.root,!1)}function d(F,O){let W=F.root;const U=[];let j=0;for(;W!==e.SENTINEL;){if(y(W)){D(W.left,!1),D(W.right,!1),W=W.parent;continue}if(W.left!==e.SENTINEL&&!y(W.left)){W=W.left;continue}if(W.ownerId===O&&(U[j++]=W),D(W,!0),W.right!==e.SENTINEL&&!y(W.right)){W=W.right;continue}}return D(F.root,!1),U}function l(F){let O=F.root;const W=[];let U=0;for(;O!==e.SENTINEL;){if(y(O)){D(O.left,!1),D(O.right,!1),O=O.parent;continue}if(O.left!==e.SENTINEL&&!y(O.left)){O=O.left;continue}if(O.right!==e.SENTINEL&&!y(O.right)){O=O.right;continue}W[U++]=O,D(O,!0)}return D(F.root,!1),W}function p(F,O,W,U,j){let R=F.root,K=0,G=0,Z=0;const J=[];let X=0;for(;R!==e.SENTINEL;){if(y(R)){D(R.left,!1),D(R.right,!1),R===R.parent.right&&(K-=R.parent.delta),R=R.parent;continue}if(R.left!==e.SENTINEL&&!y(R.left)){R=R.left;continue}G=K+R.start,Z=K+R.end,R.setCachedOffsets(G,Z,U);let H=!0;if(O&&R.ownerId&&R.ownerId!==O&&(H=!1),W&&S(R)&&(H=!1),j&&!_(R)&&(H=!1),H&&(J[X++]=R),D(R,!0),R.right!==e.SENTINEL&&!y(R.right)){K+=R.delta,R=R.right;continue}}return D(F.root,!1),J}function m(F,O,W,U,j,R,K){let G=F.root,Z=0,J=0,X=0,H=0;const B=[];let V=0;for(;G!==e.SENTINEL;){if(y(G)){D(G.left,!1),D(G.right,!1),G===G.parent.right&&(Z-=G.parent.delta),G=G.parent;continue}if(!y(G.left)){if(J=Z+G.maxEnd,JW){D(G,!0);continue}if(H=Z+G.end,H>=O){G.setCachedOffsets(X,H,R);let Y=!0;U&&G.ownerId&&G.ownerId!==U&&(Y=!1),j&&S(G)&&(Y=!1),K&&!_(G)&&(Y=!1),Y&&(B[V++]=G)}if(D(G,!0),G.right!==e.SENTINEL&&!y(G.right)){Z+=G.delta,G=G.right;continue}}return D(F.root,!1),B}function v(F,O){if(F.root===e.SENTINEL)return O.parent=e.SENTINEL,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,0),F.root=O,F.root;b(F,O),A(O.parent);let W=O;for(;W!==F.root&&L(W.parent)===1;)if(W.parent===W.parent.parent.left){const U=W.parent.parent.right;L(U)===1?(k(W.parent,0),k(U,0),k(W.parent.parent,1),W=W.parent.parent):(W===W.parent.right&&(W=W.parent,M(F,W)),k(W.parent,0),k(W.parent.parent,1),P(F,W.parent.parent))}else{const U=W.parent.parent.left;L(U)===1?(k(W.parent,0),k(U,0),k(W.parent.parent,1),W=W.parent.parent):(W===W.parent.left&&(W=W.parent,P(F,W)),k(W.parent,0),k(W.parent.parent,1),M(F,W.parent.parent))}return k(F.root,0),O}function b(F,O){let W=0,U=F.root;const j=O.start,R=O.end;for(;;)if(N(j,R,U.start+W,U.end+W)<0)if(U.left===e.SENTINEL){O.start-=W,O.end-=W,O.maxEnd-=W,U.left=O;break}else U=U.left;else if(U.right===e.SENTINEL){O.start-=W+U.delta,O.end-=W+U.delta,O.maxEnd-=W+U.delta,U.right=O;break}else W+=U.delta,U=U.right;O.parent=U,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,1)}function w(F,O){let W,U;if(O.left===e.SENTINEL?(W=O.right,U=O,W.delta+=O.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),W.start+=O.delta,W.end+=O.delta):O.right===e.SENTINEL?(W=O.left,U=O):(U=E(O.right),W=U.right,W.start+=U.delta,W.end+=U.delta,W.delta+=U.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),U.start+=O.delta,U.end+=O.delta,U.delta=O.delta,(U.delta<-1073741824||U.delta>1073741824)&&(F.requestNormalizeDelta=!0)),U===F.root){F.root=W,k(W,0),O.detach(),I(),T(W),F.root.parent=e.SENTINEL;return}const j=L(U)===1;if(U===U.parent.left?U.parent.left=W:U.parent.right=W,U===O?W.parent=U.parent:(U.parent===O?W.parent=U:W.parent=U.parent,U.left=O.left,U.right=O.right,U.parent=O.parent,k(U,L(O)),O===F.root?F.root=U:O===O.parent.left?O.parent.left=U:O.parent.right=U,U.left!==e.SENTINEL&&(U.left.parent=U),U.right!==e.SENTINEL&&(U.right.parent=U)),O.detach(),j){A(W.parent),U!==O&&(A(U),A(U.parent)),I();return}A(W),A(W.parent),U!==O&&(A(U),A(U.parent));let R;for(;W!==F.root&&L(W)===0;)W===W.parent.left?(R=W.parent.right,L(R)===1&&(k(R,0),k(W.parent,1),M(F,W.parent),R=W.parent.right),L(R.left)===0&&L(R.right)===0?(k(R,1),W=W.parent):(L(R.right)===0&&(k(R.left,0),k(R,1),P(F,R),R=W.parent.right),k(R,L(W.parent)),k(W.parent,0),k(R.right,0),M(F,W.parent),W=F.root)):(R=W.parent.left,L(R)===1&&(k(R,0),k(W.parent,1),P(F,W.parent),R=W.parent.left),L(R.left)===0&&L(R.right)===0?(k(R,1),W=W.parent):(L(R.left)===0&&(k(R.right,0),k(R,1),M(F,R),R=W.parent.left),k(R,L(W.parent)),k(W.parent,0),k(R.left,0),P(F,W.parent),W=F.root));k(W,0),I()}function E(F){for(;F.left!==e.SENTINEL;)F=F.left;return F}function I(){e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.delta=0,e.SENTINEL.start=0,e.SENTINEL.end=0}function M(F,O){const W=O.right;W.delta+=O.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),W.start+=O.delta,W.end+=O.delta,O.right=W.left,W.left!==e.SENTINEL&&(W.left.parent=O),W.parent=O.parent,O.parent===e.SENTINEL?F.root=W:O===O.parent.left?O.parent.left=W:O.parent.right=W,W.left=O,O.parent=W,T(O),T(W)}function P(F,O){const W=O.left;O.delta-=W.delta,(O.delta<-1073741824||O.delta>1073741824)&&(F.requestNormalizeDelta=!0),O.start-=W.delta,O.end-=W.delta,O.left=W.right,W.right!==e.SENTINEL&&(W.right.parent=O),W.parent=O.parent,O.parent===e.SENTINEL?F.root=W:O===O.parent.right?O.parent.right=W:O.parent.left=W,W.right=O,O.parent=W,T(O),T(W)}function x(F){let O=F.end;if(F.left!==e.SENTINEL){const W=F.left.maxEnd;W>O&&(O=W)}if(F.right!==e.SENTINEL){const W=F.right.maxEnd+F.delta;W>O&&(O=W)}return O}function T(F){F.maxEnd=x(F)}e.recomputeMaxEnd=T;function A(F){for(;F!==e.SENTINEL;){const O=x(F);if(F.maxEnd===O)return;F.maxEnd=O,F=F.parent}}function N(F,O,W,U){return F===W?O-U:F-W}e.intervalCompare=N}),define(ne[511],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.recomputeTreeMetadata=e.updateTreeMetadata=e.fixInsert=e.rbDelete=e.rightRotate=e.leftRotate=e.righttest=e.leftest=e.SENTINEL=e.TreeNode=void 0;class L{constructor(a,u){this.piece=a,this.color=u,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==e.SENTINEL)return k(this.right);let a=this;for(;a.parent!==e.SENTINEL&&a.parent.left!==a;)a=a.parent;return a.parent===e.SENTINEL?e.SENTINEL:a.parent}prev(){if(this.left!==e.SENTINEL)return y(this.left);let a=this;for(;a.parent!==e.SENTINEL&&a.parent.right!==a;)a=a.parent;return a.parent===e.SENTINEL?e.SENTINEL:a.parent}detach(){this.parent=null,this.left=null,this.right=null}}e.TreeNode=L,e.SENTINEL=new L(null,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,e.SENTINEL.color=0;function k(t){for(;t.left!==e.SENTINEL;)t=t.left;return t}e.leftest=k;function y(t){for(;t.right!==e.SENTINEL;)t=t.right;return t}e.righttest=y;function D(t){return t===e.SENTINEL?0:t.size_left+t.piece.length+D(t.right)}function S(t){return t===e.SENTINEL?0:t.lf_left+t.piece.lineFeedCnt+S(t.right)}function f(){e.SENTINEL.parent=e.SENTINEL}function _(t,a){const u=a.right;u.size_left+=a.size_left+(a.piece?a.piece.length:0),u.lf_left+=a.lf_left+(a.piece?a.piece.lineFeedCnt:0),a.right=u.left,u.left!==e.SENTINEL&&(u.left.parent=a),u.parent=a.parent,a.parent===e.SENTINEL?t.root=u:a.parent.left===a?a.parent.left=u:a.parent.right=u,u.left=a,a.parent=u}e.leftRotate=_;function g(t,a){const u=a.left;a.left=u.right,u.right!==e.SENTINEL&&(u.right.parent=a),u.parent=a.parent,a.size_left-=u.size_left+(u.piece?u.piece.length:0),a.lf_left-=u.lf_left+(u.piece?u.piece.lineFeedCnt:0),a.parent===e.SENTINEL?t.root=u:a===a.parent.right?a.parent.right=u:a.parent.left=u,u.right=a,a.parent=u}e.rightRotate=g;function C(t,a){let u,h;if(a.left===e.SENTINEL?(h=a,u=h.right):a.right===e.SENTINEL?(h=a,u=h.left):(h=k(a.right),u=h.right),h===t.root){t.root=u,u.color=0,a.detach(),f(),t.root.parent=e.SENTINEL;return}const r=h.color===1;if(h===h.parent.left?h.parent.left=u:h.parent.right=u,h===a?(u.parent=h.parent,n(t,u)):(h.parent===a?u.parent=h:u.parent=h.parent,n(t,u),h.left=a.left,h.right=a.right,h.parent=a.parent,h.color=a.color,a===t.root?t.root=h:a===a.parent.left?a.parent.left=h:a.parent.right=h,h.left!==e.SENTINEL&&(h.left.parent=h),h.right!==e.SENTINEL&&(h.right.parent=h),h.size_left=a.size_left,h.lf_left=a.lf_left,n(t,h)),a.detach(),u.parent.left===u){const o=D(u),d=S(u);if(o!==u.parent.size_left||d!==u.parent.lf_left){const l=o-u.parent.size_left,p=d-u.parent.lf_left;u.parent.size_left=o,u.parent.lf_left=d,i(t,u.parent,l,p)}}if(n(t,u.parent),r){f();return}let c;for(;u!==t.root&&u.color===0;)u===u.parent.left?(c=u.parent.right,c.color===1&&(c.color=0,u.parent.color=1,_(t,u.parent),c=u.parent.right),c.left.color===0&&c.right.color===0?(c.color=1,u=u.parent):(c.right.color===0&&(c.left.color=0,c.color=1,g(t,c),c=u.parent.right),c.color=u.parent.color,u.parent.color=0,c.right.color=0,_(t,u.parent),u=t.root)):(c=u.parent.left,c.color===1&&(c.color=0,u.parent.color=1,g(t,u.parent),c=u.parent.left),c.left.color===0&&c.right.color===0?(c.color=1,u=u.parent):(c.left.color===0&&(c.right.color=0,c.color=1,_(t,c),c=u.parent.left),c.color=u.parent.color,u.parent.color=0,c.left.color=0,g(t,u.parent),u=t.root));u.color=0,f()}e.rbDelete=C;function s(t,a){for(n(t,a);a!==t.root&&a.parent.color===1;)if(a.parent===a.parent.parent.left){const u=a.parent.parent.right;u.color===1?(a.parent.color=0,u.color=0,a.parent.parent.color=1,a=a.parent.parent):(a===a.parent.right&&(a=a.parent,_(t,a)),a.parent.color=0,a.parent.parent.color=1,g(t,a.parent.parent))}else{const u=a.parent.parent.left;u.color===1?(a.parent.color=0,u.color=0,a.parent.parent.color=1,a=a.parent.parent):(a===a.parent.left&&(a=a.parent,g(t,a)),a.parent.color=0,a.parent.parent.color=1,_(t,a.parent.parent))}t.root.color=0}e.fixInsert=s;function i(t,a,u,h){for(;a!==t.root&&a!==e.SENTINEL;)a.parent.left===a&&(a.parent.size_left+=u,a.parent.lf_left+=h),a=a.parent}e.updateTreeMetadata=i;function n(t,a){let u=0,h=0;if(a!==t.root){for(;a!==t.root&&a===a.parent.right;)a=a.parent;if(a!==t.root)for(a=a.parent,u=D(a.left)-a.size_left,h=S(a.left)-a.lf_left,a.size_left+=u,a.lf_left+=h;a!==t.root&&(u!==0||h!==0);)a.parent.left===a&&(a.parent.size_left+=u,a.parent.lf_left+=h),a=a.parent}}e.recomputeTreeMetadata=n}),define(ne[281],se([1,0,14,169]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PrefixSumIndexOfResult=e.ConstantTimePrefixSumComputer=e.PrefixSumComputer=void 0;class y{constructor(_){this.values=_,this.prefixSum=new Uint32Array(_.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(_,g){_=(0,k.toUint32)(_);const C=this.values,s=this.prefixSum,i=g.length;return i===0?!1:(this.values=new Uint32Array(C.length+i),this.values.set(C.subarray(0,_),0),this.values.set(C.subarray(_),_+i),this.values.set(g,_),_-1=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(_,g){return _=(0,k.toUint32)(_),g=(0,k.toUint32)(g),this.values[_]===g?!1:(this.values[_]=g,_-1=C.length)return!1;const i=C.length-_;return g>=i&&(g=i),g===0?!1:(this.values=new Uint32Array(C.length-g),this.values.set(C.subarray(0,_),0),this.values.set(C.subarray(_+g),_),this.prefixSum=new Uint32Array(this.values.length),_-1=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(_){return _<0?0:(_=(0,k.toUint32)(_),this._getPrefixSum(_))}_getPrefixSum(_){if(_<=this.prefixSumValidIndex[0])return this.prefixSum[_];let g=this.prefixSumValidIndex[0]+1;g===0&&(this.prefixSum[0]=this.values[0],g++),_>=this.values.length&&(_=this.values.length-1);for(let C=g;C<=_;C++)this.prefixSum[C]=this.prefixSum[C-1]+this.values[C];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],_),this.prefixSum[_]}getIndexOf(_){_=Math.floor(_),this.getTotalSum();let g=0,C=this.values.length-1,s=0,i=0,n=0;for(;g<=C;)if(s=g+(C-g)/2|0,i=this.prefixSum[s],n=i-this.values[s],_=i)g=s+1;else break;return new S(s,_-n)}}e.PrefixSumComputer=y;class D{constructor(_){this._values=_,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(_){return this._ensureValid(),_===0?0:this._prefixSum[_-1]}getIndexOf(_){this._ensureValid();const g=this._indexBySum[_],C=g>0?this._prefixSum[g-1]:0;return new S(g,_-C)}removeValues(_,g){this._values.splice(_,g),this._invalidate(_)}insertValues(_,g){this._values=(0,L.arrayInsert)(this._values,_,g),this._invalidate(_)}_invalidate(_){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,_-1)}_ensureValid(){if(!this._isValid){for(let _=this._validEndIndex+1,g=this._values.length;_0?this._prefixSum[_-1]:0;this._prefixSum[_]=s+C;for(let i=0;i=0;let c=null;try{c=L.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:r,global:!0,unicode:!0})}catch{return null}if(!c)return null;let o=!this.isRegex&&!r;return o&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(o=this.matchCase),new S.SearchData(c,this.wordSeparators?(0,k.getMapForWordSeparators)(this.wordSeparators):null,o?this.searchString:null)}}e.SearchParams=_;function g(h){if(!h||h.length===0)return!1;for(let r=0,c=h.length;r=c)break;const d=h.charCodeAt(r);if(d===110||d===114||d===87)return!0}}return!1}e.isMultilineRegexSource=g;function C(h,r,c){if(!c)return new S.FindMatch(h,null);const o=[];for(let d=0,l=r.length;d>0);c[l]>=r?d=l-1:c[l+1]>=r?(o=l,d=l):o=l+1}return o+1}}class i{static findMatches(r,c,o,d,l){const p=c.parseSearchRequest();return p?p.regex.multiline?this._doFindMatchesMultiline(r,o,new u(p.wordSeparators,p.regex),d,l):this._doFindMatchesLineByLine(r,o,p,d,l):[]}static _getMultilineMatchRange(r,c,o,d,l,p){let m,v=0;d?(v=d.findLineFeedCountBeforeOffset(l),m=c+l+v):m=c+l;let b;if(d){const M=d.findLineFeedCountBeforeOffset(l+p.length)-v;b=m+p.length+M}else b=m+p.length;const w=r.getPositionAt(m),E=r.getPositionAt(b);return new D.Range(w.lineNumber,w.column,E.lineNumber,E.column)}static _doFindMatchesMultiline(r,c,o,d,l){const p=r.getOffsetAt(c.getStartPosition()),m=r.getValueInRange(c,1),v=r.getEOL()===`\r -`?new s(m):null,b=[];let w=0,E;for(o.reset(0);E=o.next(m);)if(b[w++]=C(this._getMultilineMatchRange(r,p,m,v,E.index,E[0]),E,d),w>=l)return b;return b}static _doFindMatchesLineByLine(r,c,o,d,l){const p=[];let m=0;if(c.startLineNumber===c.endLineNumber){const b=r.getLineContent(c.startLineNumber).substring(c.startColumn-1,c.endColumn-1);return m=this._findMatchesInLine(o,b,c.startLineNumber,c.startColumn-1,m,p,d,l),p}const v=r.getLineContent(c.startLineNumber).substring(c.startColumn-1);m=this._findMatchesInLine(o,v,c.startLineNumber,c.startColumn-1,m,p,d,l);for(let b=c.startLineNumber+1;b=v))return l;return l}const w=new u(r.wordSeparators,r.regex);let E;w.reset(0);do if(E=w.next(c),E&&(p[l++]=C(new D.Range(o,E.index+1+d,o,E.index+1+E[0].length+d),E,m),l>=v))return l;while(E);return l}static findNextMatch(r,c,o,d){const l=c.parseSearchRequest();if(!l)return null;const p=new u(l.wordSeparators,l.regex);return l.regex.multiline?this._doFindNextMatchMultiline(r,o,p,d):this._doFindNextMatchLineByLine(r,o,p,d)}static _doFindNextMatchMultiline(r,c,o,d){const l=new y.Position(c.lineNumber,1),p=r.getOffsetAt(l),m=r.getLineCount(),v=r.getValueInRange(new D.Range(l.lineNumber,l.column,m,r.getLineMaxColumn(m)),1),b=r.getEOL()===`\r -`?new s(v):null;o.reset(c.column-1);const w=o.next(v);return w?C(this._getMultilineMatchRange(r,p,v,b,w.index,w[0]),w,d):c.lineNumber!==1||c.column!==1?this._doFindNextMatchMultiline(r,new y.Position(1,1),o,d):null}static _doFindNextMatchLineByLine(r,c,o,d){const l=r.getLineCount(),p=c.lineNumber,m=r.getLineContent(p),v=this._findFirstMatchInLine(o,m,p,c.column,d);if(v)return v;for(let b=1;b<=l;b++){const w=(p+b-1)%l,E=r.getLineContent(w+1),I=this._findFirstMatchInLine(o,E,w+1,1,d);if(I)return I}return null}static _findFirstMatchInLine(r,c,o,d,l){r.reset(d-1);const p=r.next(c);return p?C(new D.Range(o,p.index+1,o,p.index+1+p[0].length),p,l):null}static findPreviousMatch(r,c,o,d){const l=c.parseSearchRequest();if(!l)return null;const p=new u(l.wordSeparators,l.regex);return l.regex.multiline?this._doFindPreviousMatchMultiline(r,o,p,d):this._doFindPreviousMatchLineByLine(r,o,p,d)}static _doFindPreviousMatchMultiline(r,c,o,d){const l=this._doFindMatchesMultiline(r,new D.Range(1,1,c.lineNumber,c.column),o,d,10*f);if(l.length>0)return l[l.length-1];const p=r.getLineCount();return c.lineNumber!==p||c.column!==r.getLineMaxColumn(p)?this._doFindPreviousMatchMultiline(r,new y.Position(p,r.getLineMaxColumn(p)),o,d):null}static _doFindPreviousMatchLineByLine(r,c,o,d){const l=r.getLineCount(),p=c.lineNumber,m=r.getLineContent(p).substring(0,c.column-1),v=this._findLastMatchInLine(o,m,p,d);if(v)return v;for(let b=1;b<=l;b++){const w=(l+p-b-1)%l,E=r.getLineContent(w+1),I=this._findLastMatchInLine(o,E,w+1,d);if(I)return I}return null}static _findLastMatchInLine(r,c,o,d){let l=null,p;for(r.reset(0);p=r.next(c);)l=C(new D.Range(o,p.index+1,o,p.index+1+p[0].length),p,d);return l}}e.TextModelSearch=i;function n(h,r,c,o,d){if(o===0)return!0;const l=r.charCodeAt(o-1);if(h.get(l)!==0||l===13||l===10)return!0;if(d>0){const p=r.charCodeAt(o);if(h.get(p)!==0)return!0}return!1}function t(h,r,c,o,d){if(o+d===c)return!0;const l=r.charCodeAt(o+d);if(h.get(l)!==0||l===13||l===10)return!0;if(d>0){const p=r.charCodeAt(o+d-1);if(h.get(p)!==0)return!0}return!1}function a(h,r,c,o,d){return n(h,r,c,o,d)&&t(h,r,c,o,d)}e.isValidMatch=a;class u{constructor(r,c){this._wordSeparators=r,this._searchRegex=c,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(r){this._searchRegex.lastIndex=r,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(r){const c=r.length;let o;do{if(this._prevMatchStartIndex+this._prevMatchLength===c||(o=this._searchRegex.exec(r),!o))return null;const d=o.index,l=o[0].length;if(d===this._prevMatchStartIndex&&l===this._prevMatchLength){if(l===0){L.getNextCodePoint(r,c,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=d,this._prevMatchLength=l,!this._wordSeparators||a(this._wordSeparators,r,c,d,l))return o}while(o);return null}}e.Searcher=u}),define(ne[283],se([1,0,12,5,48,511,181]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeBase=e.StringBuffer=e.Piece=e.createLineStarts=e.createLineStartsFast=void 0;const f=65535;function _(h){let r;return h[h.length-1]<65536?r=new Uint16Array(h.length):r=new Uint32Array(h.length),r.set(h,0),r}class g{constructor(r,c,o,d,l){this.lineStarts=r,this.cr=c,this.lf=o,this.crlf=d,this.isBasicASCII=l}}function C(h,r=!0){const c=[0];let o=1;for(let d=0,l=h.length;d126)&&(p=!1)}const m=new g(_(h),o,d,l,p);return h.length=0,m}e.createLineStarts=s;class i{constructor(r,c,o,d,l){this.bufferIndex=r,this.start=c,this.end=o,this.lineFeedCnt=d,this.length=l}}e.Piece=i;class n{constructor(r,c){this.buffer=r,this.lineStarts=c}}e.StringBuffer=n;class t{constructor(r,c){this._pieces=[],this._tree=r,this._BOM=c,this._index=0,r.root!==D.SENTINEL&&r.iterate(r.root,o=>(o!==D.SENTINEL&&this._pieces.push(o.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class a{constructor(r){this._limit=r,this._cache=[]}get(r){for(let c=this._cache.length-1;c>=0;c--){const o=this._cache[c];if(o.nodeStartOffset<=r&&o.nodeStartOffset+o.node.piece.length>=r)return o}return null}get2(r){for(let c=this._cache.length-1;c>=0;c--){const o=this._cache[c];if(o.nodeStartLineNumber&&o.nodeStartLineNumber=r)return o}return null}set(r){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(r)}validate(r){let c=!1;const o=this._cache;for(let d=0;d=r){o[d]=null,c=!0;continue}}if(c){const d=[];for(const l of o)l!==null&&d.push(l);this._cache=d}}}class u{constructor(r,c,o){this.create(r,c,o)}create(r,c,o){this._buffers=[new n("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=D.SENTINEL,this._lineCnt=1,this._length=0,this._EOL=c,this._EOLLength=c.length,this._EOLNormalized=o;let d=null;for(let l=0,p=r.length;l0){r[l].lineStarts||(r[l].lineStarts=C(r[l].buffer));const m=new i(l+1,{line:0,column:0},{line:r[l].lineStarts.length-1,column:r[l].buffer.length-r[l].lineStarts[r[l].lineStarts.length-1]},r[l].lineStarts.length-1,r[l].buffer.length);this._buffers.push(r[l]),d=this.rbInsertRight(d,m)}this._searchCache=new a(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(r){const c=f,o=c-Math.floor(c/3),d=o*2;let l="",p=0;const m=[];if(this.iterate(this.root,v=>{const b=this.getNodeContent(v),w=b.length;if(p<=o||p+w0){const v=l.replace(/\r\n|\r|\n/g,r);m.push(new n(v,C(v)))}this.create(m,r,!0)}getEOL(){return this._EOL}setEOL(r){this._EOL=r,this._EOLLength=this._EOL.length,this.normalizeEOL(r)}createSnapshot(r){return new t(this,r)}getOffsetAt(r,c){let o=0,d=this.root;for(;d!==D.SENTINEL;)if(d.left!==D.SENTINEL&&d.lf_left+1>=r)d=d.left;else if(d.lf_left+d.piece.lineFeedCnt+1>=r){o+=d.size_left;const l=this.getAccumulatedValue(d,r-d.lf_left-2);return o+=l+c-1}else r-=d.lf_left+d.piece.lineFeedCnt,o+=d.size_left+d.piece.length,d=d.right;return o}getPositionAt(r){r=Math.floor(r),r=Math.max(0,r);let c=this.root,o=0;const d=r;for(;c!==D.SENTINEL;)if(c.size_left!==0&&c.size_left>=r)c=c.left;else if(c.size_left+c.piece.length>=r){const l=this.getIndexOf(c,r-c.size_left);if(o+=c.lf_left+l.index,l.index===0){const p=this.getOffsetAt(o+1,1),m=d-p;return new L.Position(o+1,m+1)}return new L.Position(o+1,l.remainder+1)}else if(r-=c.size_left+c.piece.length,o+=c.lf_left+c.piece.lineFeedCnt,c.right===D.SENTINEL){const l=this.getOffsetAt(o+1,1),p=d-r-l;return new L.Position(o+1,p+1)}else c=c.right;return new L.Position(1,1)}getValueInRange(r,c){if(r.startLineNumber===r.endLineNumber&&r.startColumn===r.endColumn)return"";const o=this.nodeAt2(r.startLineNumber,r.startColumn),d=this.nodeAt2(r.endLineNumber,r.endColumn),l=this.getValueInRange2(o,d);return c?c!==this._EOL||!this._EOLNormalized?l.replace(/\r\n|\r|\n/g,c):c===this.getEOL()&&this._EOLNormalized?l:l.replace(/\r\n|\r|\n/g,c):l}getValueInRange2(r,c){if(r.node===c.node){const m=r.node,v=this._buffers[m.piece.bufferIndex].buffer,b=this.offsetInBuffer(m.piece.bufferIndex,m.piece.start);return v.substring(b+r.remainder,b+c.remainder)}let o=r.node;const d=this._buffers[o.piece.bufferIndex].buffer,l=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);let p=d.substring(l+r.remainder,l+o.piece.length);for(o=o.next();o!==D.SENTINEL;){const m=this._buffers[o.piece.bufferIndex].buffer,v=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);if(o===c.node){p+=m.substring(v,v+c.remainder);break}else p+=m.substr(v,o.piece.length);o=o.next()}return p}getLinesContent(){const r=[];let c=0,o="",d=!1;return this.iterate(this.root,l=>{if(l===D.SENTINEL)return!0;const p=l.piece;let m=p.length;if(m===0)return!0;const v=this._buffers[p.bufferIndex].buffer,b=this._buffers[p.bufferIndex].lineStarts,w=p.start.line,E=p.end.line;let I=b[w]+p.start.column;if(d&&(v.charCodeAt(I)===10&&(I++,m--),r[c++]=o,o="",d=!1,m===0))return!0;if(w===E)return!this._EOLNormalized&&v.charCodeAt(I+m-1)===13?(d=!0,o+=v.substr(I,m-1)):o+=v.substr(I,m),!0;o+=this._EOLNormalized?v.substring(I,Math.max(I,b[w+1]-this._EOLLength)):v.substring(I,b[w+1]).replace(/(\r\n|\r|\n)$/,""),r[c++]=o;for(let M=w+1;MO+P,c.reset(0)):(N=I.buffer,F=O=>O,c.reset(P));do if(T=c.next(N),T){if(F(T.index)>=x)return w;this.positionInBuffer(r,F(T.index)-M,A);const O=this.getLineFeedCnt(r.piece.bufferIndex,l,A),W=A.line===l.line?A.column-l.column+d:A.column+1,U=W+T[0].length;if(E[w++]=(0,S.createFindMatch)(new k.Range(o+O,W,o+O,U),T,v),F(T.index)+T[0].length>=x||w>=b)return w}while(T);return w}findMatchesLineByLine(r,c,o,d){const l=[];let p=0;const m=new S.Searcher(c.wordSeparators,c.regex);let v=this.nodeAt2(r.startLineNumber,r.startColumn);if(v===null)return[];const b=this.nodeAt2(r.endLineNumber,r.endColumn);if(b===null)return[];let w=this.positionInBuffer(v.node,v.remainder);const E=this.positionInBuffer(b.node,b.remainder);if(v.node===b.node)return this.findMatchesInNode(v.node,m,r.startLineNumber,r.startColumn,w,E,c,o,d,p,l),l;let I=r.startLineNumber,M=v.node;for(;M!==b.node;){const x=this.getLineFeedCnt(M.piece.bufferIndex,w,M.piece.end);if(x>=1){const A=this._buffers[M.piece.bufferIndex].lineStarts,N=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start),F=A[w.line+x],O=I===r.startLineNumber?r.startColumn:1;if(p=this.findMatchesInNode(M,m,I,O,w,this.positionInBuffer(M,F-N),c,o,d,p,l),p>=d)return l;I+=x}const T=I===r.startLineNumber?r.startColumn-1:0;if(I===r.endLineNumber){const A=this.getLineContent(I).substring(T,r.endColumn-1);return p=this._findMatchesInLine(c,m,A,r.endLineNumber,T,p,l,o,d),l}if(p=this._findMatchesInLine(c,m,this.getLineContent(I).substr(T),I,T,p,l,o,d),p>=d)return l;I++,v=this.nodeAt2(I,1),M=v.node,w=this.positionInBuffer(v.node,v.remainder)}if(I===r.endLineNumber){const x=I===r.startLineNumber?r.startColumn-1:0,T=this.getLineContent(I).substring(x,r.endColumn-1);return p=this._findMatchesInLine(c,m,T,r.endLineNumber,x,p,l,o,d),l}const P=I===r.startLineNumber?r.startColumn:1;return p=this.findMatchesInNode(b.node,m,I,P,w,E,c,o,d,p,l),l}_findMatchesInLine(r,c,o,d,l,p,m,v,b){const w=r.wordSeparators;if(!v&&r.simpleSearch){const I=r.simpleSearch,M=I.length,P=o.length;let x=-M;for(;(x=o.indexOf(I,x+M))!==-1;)if((!w||(0,S.isValidMatch)(w,o,P,x,M))&&(m[p++]=new y.FindMatch(new k.Range(d,x+1+l,d,x+1+M+l),null),p>=b))return p;return p}let E;c.reset(0);do if(E=c.next(o),E&&(m[p++]=(0,S.createFindMatch)(new k.Range(d,E.index+1+l,d,E.index+1+E[0].length+l),E,v),p>=b))return p;while(E);return p}insert(r,c,o=!1){if(this._EOLNormalized=this._EOLNormalized&&o,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==D.SENTINEL){const{node:d,remainder:l,nodeStartOffset:p}=this.nodeAt(r),m=d.piece,v=m.bufferIndex,b=this.positionInBuffer(d,l);if(d.piece.bufferIndex===0&&m.end.line===this._lastChangeBufferPos.line&&m.end.column===this._lastChangeBufferPos.column&&p+m.length===r&&c.lengthr){const w=[];let E=new i(m.bufferIndex,b,m.end,this.getLineFeedCnt(m.bufferIndex,b,m.end),this.offsetInBuffer(v,m.end)-this.offsetInBuffer(v,b));if(this.shouldCheckCRLF()&&this.endWithCR(c)&&this.nodeCharCodeAt(d,l)===10){const x={line:E.start.line+1,column:0};E=new i(E.bufferIndex,x,E.end,this.getLineFeedCnt(E.bufferIndex,x,E.end),E.length-1),c+=` -`}if(this.shouldCheckCRLF()&&this.startWithLF(c))if(this.nodeCharCodeAt(d,l-1)===13){const x=this.positionInBuffer(d,l-1);this.deleteNodeTail(d,x),c="\r"+c,d.piece.length===0&&w.push(d)}else this.deleteNodeTail(d,b);else this.deleteNodeTail(d,b);const I=this.createNewPieces(c);E.length>0&&this.rbInsertRight(d,E);let M=d;for(let P=0;P=0;p--)l=this.rbInsertLeft(l,d[p]);this.validateCRLFWithPrevNode(l),this.deleteNodes(o)}insertContentToNodeRight(r,c){this.adjustCarriageReturnFromNext(r,c)&&(r+=` -`);const o=this.createNewPieces(r),d=this.rbInsertRight(c,o[0]);let l=d;for(let p=1;p=I)b=E+1;else break;return o?(o.line=E,o.column=v-M,null):{line:E,column:v-M}}getLineFeedCnt(r,c,o){if(o.column===0)return o.line-c.line;const d=this._buffers[r].lineStarts;if(o.line===d.length-1)return o.line-c.line;const l=d[o.line+1],p=d[o.line]+o.column;if(l>p+1)return o.line-c.line;const m=p-1;return this._buffers[r].buffer.charCodeAt(m)===13?o.line-c.line+1:o.line-c.line}offsetInBuffer(r,c){return this._buffers[r].lineStarts[c.line]+c.column}deleteNodes(r){for(let c=0;cf){const w=[];for(;r.length>f;){const I=r.charCodeAt(f-1);let M;I===13||I>=55296&&I<=56319?(M=r.substring(0,f-1),r=r.substring(f-1)):(M=r.substring(0,f),r=r.substring(f));const P=C(M);w.push(new i(this._buffers.length,{line:0,column:0},{line:P.length-1,column:M.length-P[P.length-1]},P.length-1,M.length)),this._buffers.push(new n(M,P))}const E=C(r);return w.push(new i(this._buffers.length,{line:0,column:0},{line:E.length-1,column:r.length-E[E.length-1]},E.length-1,r.length)),this._buffers.push(new n(r,E)),w}let c=this._buffers[0].buffer.length;const o=C(r,!1);let d=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===c&&c!==0&&this.startWithLF(r)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},d=this._lastChangeBufferPos;for(let w=0;w=r-1)o=o.left;else if(o.lf_left+o.piece.lineFeedCnt>r-1){const v=this.getAccumulatedValue(o,r-o.lf_left-2),b=this.getAccumulatedValue(o,r-o.lf_left-1),w=this._buffers[o.piece.bufferIndex].buffer,E=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);return p+=o.size_left,this._searchCache.set({node:o,nodeStartOffset:p,nodeStartLineNumber:m-(r-1-o.lf_left)}),w.substring(E+v,E+b-c)}else if(o.lf_left+o.piece.lineFeedCnt===r-1){const v=this.getAccumulatedValue(o,r-o.lf_left-2),b=this._buffers[o.piece.bufferIndex].buffer,w=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);d=b.substring(w+v,w+o.piece.length);break}else r-=o.lf_left+o.piece.lineFeedCnt,p+=o.size_left+o.piece.length,o=o.right}for(o=o.next();o!==D.SENTINEL;){const p=this._buffers[o.piece.bufferIndex].buffer;if(o.piece.lineFeedCnt>0){const m=this.getAccumulatedValue(o,0),v=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);return d+=p.substring(v,v+m-c),d}else{const m=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);d+=p.substr(m,o.piece.length)}o=o.next()}return d}computeBufferMetadata(){let r=this.root,c=1,o=0;for(;r!==D.SENTINEL;)c+=r.lf_left+r.piece.lineFeedCnt,o+=r.size_left+r.piece.length,r=r.right;this._lineCnt=c,this._length=o,this._searchCache.validate(this._length)}getIndexOf(r,c){const o=r.piece,d=this.positionInBuffer(r,c),l=d.line-o.start.line;if(this.offsetInBuffer(o.bufferIndex,o.end)-this.offsetInBuffer(o.bufferIndex,o.start)===c){const p=this.getLineFeedCnt(r.piece.bufferIndex,o.start,d);if(p!==l)return{index:p,remainder:0}}return{index:l,remainder:d.column}}getAccumulatedValue(r,c){if(c<0)return 0;const o=r.piece,d=this._buffers[o.bufferIndex].lineStarts,l=o.start.line+c+1;return l>o.end.line?d[o.end.line]+o.end.column-d[o.start.line]-o.start.column:d[l]-d[o.start.line]-o.start.column}deleteNodeTail(r,c){const o=r.piece,d=o.lineFeedCnt,l=this.offsetInBuffer(o.bufferIndex,o.end),p=c,m=this.offsetInBuffer(o.bufferIndex,p),v=this.getLineFeedCnt(o.bufferIndex,o.start,p),b=v-d,w=m-l,E=o.length+w;r.piece=new i(o.bufferIndex,o.start,p,v,E),(0,D.updateTreeMetadata)(this,r,w,b)}deleteNodeHead(r,c){const o=r.piece,d=o.lineFeedCnt,l=this.offsetInBuffer(o.bufferIndex,o.start),p=c,m=this.getLineFeedCnt(o.bufferIndex,p,o.end),v=this.offsetInBuffer(o.bufferIndex,p),b=m-d,w=l-v,E=o.length+w;r.piece=new i(o.bufferIndex,p,o.end,m,E),(0,D.updateTreeMetadata)(this,r,w,b)}shrinkNode(r,c,o){const d=r.piece,l=d.start,p=d.end,m=d.length,v=d.lineFeedCnt,b=c,w=this.getLineFeedCnt(d.bufferIndex,d.start,b),E=this.offsetInBuffer(d.bufferIndex,c)-this.offsetInBuffer(d.bufferIndex,l);r.piece=new i(d.bufferIndex,d.start,b,w,E),(0,D.updateTreeMetadata)(this,r,E-m,w-v);const I=new i(d.bufferIndex,o,p,this.getLineFeedCnt(d.bufferIndex,o,p),this.offsetInBuffer(d.bufferIndex,p)-this.offsetInBuffer(d.bufferIndex,o)),M=this.rbInsertRight(r,I);this.validateCRLFWithPrevNode(M)}appendToNode(r,c){this.adjustCarriageReturnFromNext(c,r)&&(c+=` -`);const o=this.shouldCheckCRLF()&&this.startWithLF(c)&&this.endWithCR(r),d=this._buffers[0].buffer.length;this._buffers[0].buffer+=c;const l=C(c,!1);for(let M=0;Mr)c=c.left;else if(c.size_left+c.piece.length>=r){d+=c.size_left;const l={node:c,remainder:r-c.size_left,nodeStartOffset:d};return this._searchCache.set(l),l}else r-=c.size_left+c.piece.length,d+=c.size_left+c.piece.length,c=c.right;return null}nodeAt2(r,c){let o=this.root,d=0;for(;o!==D.SENTINEL;)if(o.left!==D.SENTINEL&&o.lf_left>=r-1)o=o.left;else if(o.lf_left+o.piece.lineFeedCnt>r-1){const l=this.getAccumulatedValue(o,r-o.lf_left-2),p=this.getAccumulatedValue(o,r-o.lf_left-1);return d+=o.size_left,{node:o,remainder:Math.min(l+c-1,p),nodeStartOffset:d}}else if(o.lf_left+o.piece.lineFeedCnt===r-1){const l=this.getAccumulatedValue(o,r-o.lf_left-2);if(l+c-1<=o.piece.length)return{node:o,remainder:l+c-1,nodeStartOffset:d};c-=o.piece.length-l;break}else r-=o.lf_left+o.piece.lineFeedCnt,d+=o.size_left+o.piece.length,o=o.right;for(o=o.next();o!==D.SENTINEL;){if(o.piece.lineFeedCnt>0){const l=this.getAccumulatedValue(o,0),p=this.offsetOfNode(o);return{node:o,remainder:Math.min(c-1,l),nodeStartOffset:p}}else if(o.piece.length>=c-1){const l=this.offsetOfNode(o);return{node:o,remainder:c-1,nodeStartOffset:l}}else c-=o.piece.length;o=o.next()}return null}nodeCharCodeAt(r,c){if(r.piece.lineFeedCnt<1)return-1;const o=this._buffers[r.piece.bufferIndex],d=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start)+c;return o.buffer.charCodeAt(d)}offsetOfNode(r){if(!r)return 0;let c=r.size_left;for(;r!==this.root;)r.parent.right===r&&(c+=r.parent.size_left+r.parent.piece.length),r=r.parent;return c}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===` -`)}startWithLF(r){if(typeof r=="string")return r.charCodeAt(0)===10;if(r===D.SENTINEL||r.piece.lineFeedCnt===0)return!1;const c=r.piece,o=this._buffers[c.bufferIndex].lineStarts,d=c.start.line,l=o[d]+c.start.column;return d===o.length-1||o[d+1]>l+1?!1:this._buffers[c.bufferIndex].buffer.charCodeAt(l)===10}endWithCR(r){return typeof r=="string"?r.charCodeAt(r.length-1)===13:r===D.SENTINEL||r.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(r,r.piece.length-1)===13}validateCRLFWithPrevNode(r){if(this.shouldCheckCRLF()&&this.startWithLF(r)){const c=r.prev();this.endWithCR(c)&&this.fixCRLF(c,r)}}validateCRLFWithNextNode(r){if(this.shouldCheckCRLF()&&this.endWithCR(r)){const c=r.next();this.startWithLF(c)&&this.fixCRLF(r,c)}}fixCRLF(r,c){const o=[],d=this._buffers[r.piece.bufferIndex].lineStarts;let l;r.piece.end.column===0?l={line:r.piece.end.line-1,column:d[r.piece.end.line]-d[r.piece.end.line-1]-1}:l={line:r.piece.end.line,column:r.piece.end.column-1};const p=r.piece.length-1,m=r.piece.lineFeedCnt-1;r.piece=new i(r.piece.bufferIndex,r.piece.start,l,m,p),(0,D.updateTreeMetadata)(this,r,-1,-1),r.piece.length===0&&o.push(r);const v={line:c.piece.start.line+1,column:0},b=c.piece.length-1,w=this.getLineFeedCnt(c.piece.bufferIndex,v,c.piece.end);c.piece=new i(c.piece.bufferIndex,v,c.piece.end,w,b),(0,D.updateTreeMetadata)(this,c,-1,-1),c.piece.length===0&&o.push(c);const E=this.createNewPieces(`\r -`);this.rbInsertRight(r,E[0]);for(let I=0;I0?this.wrappedTextIndentLength:0}getLineLength(s){const i=s>0?this.breakOffsets[s-1]:0;let t=this.breakOffsets[s]-i;return s>0&&(t+=this.wrappedTextIndentLength),t}getMaxOutputOffset(s){return this.getLineLength(s)}translateToInputOffset(s,i){s>0&&(i=Math.max(0,i-this.wrappedTextIndentLength));let t=s===0?i:this.breakOffsets[s-1]+i;if(this.injectionOffsets!==null)for(let a=0;athis.injectionOffsets[a];a++)t0?this.breakOffsets[a-1]:0,i===0)if(s<=u)t=a-1;else if(s>r)n=a+1;else break;else if(s=r)n=a+1;else break}let h=s-u;return a>0&&(h+=this.wrappedTextIndentLength),new g(a,h)}normalizeOutputPosition(s,i,n){if(this.injectionOffsets!==null){const t=this.outputPositionToOffsetInInputWithInjections(s,i),a=this.normalizeOffsetInInputWithInjectionsAroundInjections(t,n);if(a!==t)return this.offsetInInputWithInjectionsToOutputPosition(a,n)}if(n===0){if(s>0&&i===this.getMinOutputOffset(s))return new g(s-1,this.getMaxOutputOffset(s-1))}else if(n===1){const t=this.getOutputLineCount()-1;if(s0&&(i=Math.max(0,i-this.wrappedTextIndentLength)),(s>0?this.breakOffsets[s-1]:0)+i}normalizeOffsetInInputWithInjectionsAroundInjections(s,i){const n=this.getInjectedTextAtOffset(s);if(!n)return s;if(i===2){if(s===n.offsetInInputWithInjections+n.length&&S(this.injectionOptions[n.injectedTextIndex].cursorStops))return n.offsetInInputWithInjections+n.length;{let t=n.offsetInInputWithInjections;if(f(this.injectionOptions[n.injectedTextIndex].cursorStops))return t;let a=n.injectedTextIndex-1;for(;a>=0&&this.injectionOffsets[a]===this.injectionOffsets[n.injectedTextIndex]&&!(S(this.injectionOptions[a].cursorStops)||(t-=this.injectionOptions[a].content.length,f(this.injectionOptions[a].cursorStops)));)a--;return t}}else if(i===1||i===4){let t=n.offsetInInputWithInjections+n.length,a=n.injectedTextIndex;for(;a+1=0&&this.injectionOffsets[a-1]===this.injectionOffsets[a];)t-=this.injectionOptions[a-1].content.length,a--;return t}(0,L.assertNever)(i)}getInjectedText(s,i){const n=this.outputPositionToOffsetInInputWithInjections(s,i),t=this.getInjectedTextAtOffset(n);return t?{options:this.injectionOptions[t.injectedTextIndex]}:null}getInjectedTextAtOffset(s){const i=this.injectionOffsets,n=this.injectionOptions;if(i!==null){let t=0;for(let a=0;as)break;if(s<=r)return{injectedTextIndex:a,offsetInInputWithInjections:h,length:u};t+=u}}}}e.ModelLineProjectionData=D;function S(C){return C==null?!0:C===y.InjectedTextCursorStops.Right||C===y.InjectedTextCursorStops.Both}function f(C){return C==null?!0:C===y.InjectedTextCursorStops.Left||C===y.InjectedTextCursorStops.Both}class _{constructor(s){this.options=s}}e.InjectedText=_;class g{constructor(s,i){this.outputLineIndex=s,this.outputOffset=i}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(s){return new k.Position(s+this.outputLineIndex,this.outputOffset+1)}}e.OutputPosition=g}),define(ne[285],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DraggedTreeItemsIdentifier=e.TreeViewsDnDService=void 0;class L{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(D){if(D&&this._dragOperations.has(D)){const S=this._dragOperations.get(D);return this._dragOperations.delete(D),S}}}e.TreeViewsDnDService=L;class k{constructor(D){this.identifier=D}}e.DraggedTreeItemsIdentifier=k}),define(ne[286],se([1,0,5,181,11,85,147]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeTextModelHighlighter=void 0;class f{static computeUnicodeHighlights(i,n,t){const a=t?t.startLineNumber:1,u=t?t.endLineNumber:i.getLineCount(),h=new g(n),r=h.getCandidateCodePoints();let c;r==="allNonBasicAscii"?c=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):c=new RegExp(`${_(Array.from(r))}`,"g");const o=new k.Searcher(null,c),d=[];let l=!1,p,m=0,v=0,b=0;e:for(let w=a,E=u;w<=E;w++){const I=i.getLineContent(w),M=I.length;o.reset(0);do if(p=o.next(I),p){let P=p.index,x=p.index+p[0].length;if(P>0){const F=I.charCodeAt(P-1);y.isHighSurrogate(F)&&P--}if(x+1=F){l=!0;break e}d.push(new L.Range(w,P+1,w,x+1))}}while(p)}return{ranges:d,hasMore:l,ambiguousCharacterCount:m,invisibleCharacterCount:v,nonBasicAsciiCharacterCount:b}}static computeUnicodeHighlightReason(i,n){const t=new g(n);switch(t.shouldHighlightNonBasicASCII(i,null)){case 0:return null;case 2:return{kind:1};case 3:{const u=i.codePointAt(0),h=t.ambiguousCharacters.getPrimaryConfusable(u),r=y.AmbiguousCharacters.getLocales().filter(c=>!y.AmbiguousCharacters.getInstance(new Set([...n.allowedLocales,c])).isAmbiguous(u));return{kind:0,confusableWith:String.fromCodePoint(h),notAmbiguousInLocales:r}}case 1:return{kind:2}}}}e.UnicodeTextModelHighlighter=f;function _(s,i){return`[${y.escapeRegExpCharacters(s.map(t=>String.fromCodePoint(t)).join(""))}]`}class g{constructor(i){this.options=i,this.allowedCodePoints=new Set(i.allowedCodePoints),this.ambiguousCharacters=y.AmbiguousCharacters.getInstance(new Set(i.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const i=new Set;if(this.options.invisibleCharacters)for(const n of y.InvisibleCharacters.codePoints)C(String.fromCodePoint(n))||i.add(n);if(this.options.ambiguousCharacters)for(const n of this.ambiguousCharacters.getConfusableCodePoints())i.add(n);for(const n of this.allowedCodePoints)i.delete(n);return i}shouldHighlightNonBasicASCII(i,n){const t=i.codePointAt(0);if(this.allowedCodePoints.has(t))return 0;if(this.options.nonBasicASCII)return 1;let a=!1,u=!1;if(n)for(const h of n){const r=h.codePointAt(0),c=y.isBasicASCII(h);a=a||c,!c&&!this.ambiguousCharacters.isAmbiguous(r)&&!y.InvisibleCharacters.isInvisibleCharacter(r)&&(u=!0)}return!a&&u?0:this.options.invisibleCharacters&&!C(i)&&y.InvisibleCharacters.isInvisibleCharacter(t)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(t)?3:0}}function C(s){return s===" "||s===` -`||s===" "}}),define(ne[208],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WrappingIndent=e.TrackedRangeStickiness=e.TextEditorCursorStyle=e.TextEditorCursorBlinkingStyle=e.SymbolTag=e.SymbolKind=e.SignatureHelpTriggerKind=e.SelectionDirection=e.ScrollbarVisibility=e.ScrollType=e.RenderMinimap=e.RenderLineNumbersType=e.PositionAffinity=e.OverviewRulerLane=e.OverlayWidgetPositionPreference=e.MouseTargetType=e.MinimapPosition=e.MarkerTag=e.MarkerSeverity=e.KeyCode=e.InlineCompletionTriggerKind=e.InlayHintKind=e.InjectedTextCursorStops=e.IndentAction=e.GlyphMarginLane=e.EndOfLineSequence=e.EndOfLinePreference=e.EditorOption=e.EditorAutoIndentStrategy=e.DocumentHighlightKind=e.DefaultEndOfLine=e.CursorChangeReason=e.ContentWidgetPositionPreference=e.CompletionTriggerKind=e.CompletionItemTag=e.CompletionItemKind=e.CompletionItemInsertTextRule=e.CodeActionTriggerType=e.AccessibilitySupport=void 0;var L;(function(R){R[R.Unknown=0]="Unknown",R[R.Disabled=1]="Disabled",R[R.Enabled=2]="Enabled"})(L||(e.AccessibilitySupport=L={}));var k;(function(R){R[R.Invoke=1]="Invoke",R[R.Auto=2]="Auto"})(k||(e.CodeActionTriggerType=k={}));var y;(function(R){R[R.None=0]="None",R[R.KeepWhitespace=1]="KeepWhitespace",R[R.InsertAsSnippet=4]="InsertAsSnippet"})(y||(e.CompletionItemInsertTextRule=y={}));var D;(function(R){R[R.Method=0]="Method",R[R.Function=1]="Function",R[R.Constructor=2]="Constructor",R[R.Field=3]="Field",R[R.Variable=4]="Variable",R[R.Class=5]="Class",R[R.Struct=6]="Struct",R[R.Interface=7]="Interface",R[R.Module=8]="Module",R[R.Property=9]="Property",R[R.Event=10]="Event",R[R.Operator=11]="Operator",R[R.Unit=12]="Unit",R[R.Value=13]="Value",R[R.Constant=14]="Constant",R[R.Enum=15]="Enum",R[R.EnumMember=16]="EnumMember",R[R.Keyword=17]="Keyword",R[R.Text=18]="Text",R[R.Color=19]="Color",R[R.File=20]="File",R[R.Reference=21]="Reference",R[R.Customcolor=22]="Customcolor",R[R.Folder=23]="Folder",R[R.TypeParameter=24]="TypeParameter",R[R.User=25]="User",R[R.Issue=26]="Issue",R[R.Snippet=27]="Snippet"})(D||(e.CompletionItemKind=D={}));var S;(function(R){R[R.Deprecated=1]="Deprecated"})(S||(e.CompletionItemTag=S={}));var f;(function(R){R[R.Invoke=0]="Invoke",R[R.TriggerCharacter=1]="TriggerCharacter",R[R.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(f||(e.CompletionTriggerKind=f={}));var _;(function(R){R[R.EXACT=0]="EXACT",R[R.ABOVE=1]="ABOVE",R[R.BELOW=2]="BELOW"})(_||(e.ContentWidgetPositionPreference=_={}));var g;(function(R){R[R.NotSet=0]="NotSet",R[R.ContentFlush=1]="ContentFlush",R[R.RecoverFromMarkers=2]="RecoverFromMarkers",R[R.Explicit=3]="Explicit",R[R.Paste=4]="Paste",R[R.Undo=5]="Undo",R[R.Redo=6]="Redo"})(g||(e.CursorChangeReason=g={}));var C;(function(R){R[R.LF=1]="LF",R[R.CRLF=2]="CRLF"})(C||(e.DefaultEndOfLine=C={}));var s;(function(R){R[R.Text=0]="Text",R[R.Read=1]="Read",R[R.Write=2]="Write"})(s||(e.DocumentHighlightKind=s={}));var i;(function(R){R[R.None=0]="None",R[R.Keep=1]="Keep",R[R.Brackets=2]="Brackets",R[R.Advanced=3]="Advanced",R[R.Full=4]="Full"})(i||(e.EditorAutoIndentStrategy=i={}));var n;(function(R){R[R.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",R[R.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",R[R.accessibilitySupport=2]="accessibilitySupport",R[R.accessibilityPageSize=3]="accessibilityPageSize",R[R.ariaLabel=4]="ariaLabel",R[R.ariaRequired=5]="ariaRequired",R[R.autoClosingBrackets=6]="autoClosingBrackets",R[R.screenReaderAnnounceInlineSuggestion=7]="screenReaderAnnounceInlineSuggestion",R[R.autoClosingDelete=8]="autoClosingDelete",R[R.autoClosingOvertype=9]="autoClosingOvertype",R[R.autoClosingQuotes=10]="autoClosingQuotes",R[R.autoIndent=11]="autoIndent",R[R.automaticLayout=12]="automaticLayout",R[R.autoSurround=13]="autoSurround",R[R.bracketPairColorization=14]="bracketPairColorization",R[R.guides=15]="guides",R[R.codeLens=16]="codeLens",R[R.codeLensFontFamily=17]="codeLensFontFamily",R[R.codeLensFontSize=18]="codeLensFontSize",R[R.colorDecorators=19]="colorDecorators",R[R.colorDecoratorsLimit=20]="colorDecoratorsLimit",R[R.columnSelection=21]="columnSelection",R[R.comments=22]="comments",R[R.contextmenu=23]="contextmenu",R[R.copyWithSyntaxHighlighting=24]="copyWithSyntaxHighlighting",R[R.cursorBlinking=25]="cursorBlinking",R[R.cursorSmoothCaretAnimation=26]="cursorSmoothCaretAnimation",R[R.cursorStyle=27]="cursorStyle",R[R.cursorSurroundingLines=28]="cursorSurroundingLines",R[R.cursorSurroundingLinesStyle=29]="cursorSurroundingLinesStyle",R[R.cursorWidth=30]="cursorWidth",R[R.disableLayerHinting=31]="disableLayerHinting",R[R.disableMonospaceOptimizations=32]="disableMonospaceOptimizations",R[R.domReadOnly=33]="domReadOnly",R[R.dragAndDrop=34]="dragAndDrop",R[R.dropIntoEditor=35]="dropIntoEditor",R[R.emptySelectionClipboard=36]="emptySelectionClipboard",R[R.experimentalWhitespaceRendering=37]="experimentalWhitespaceRendering",R[R.extraEditorClassName=38]="extraEditorClassName",R[R.fastScrollSensitivity=39]="fastScrollSensitivity",R[R.find=40]="find",R[R.fixedOverflowWidgets=41]="fixedOverflowWidgets",R[R.folding=42]="folding",R[R.foldingStrategy=43]="foldingStrategy",R[R.foldingHighlight=44]="foldingHighlight",R[R.foldingImportsByDefault=45]="foldingImportsByDefault",R[R.foldingMaximumRegions=46]="foldingMaximumRegions",R[R.unfoldOnClickAfterEndOfLine=47]="unfoldOnClickAfterEndOfLine",R[R.fontFamily=48]="fontFamily",R[R.fontInfo=49]="fontInfo",R[R.fontLigatures=50]="fontLigatures",R[R.fontSize=51]="fontSize",R[R.fontWeight=52]="fontWeight",R[R.fontVariations=53]="fontVariations",R[R.formatOnPaste=54]="formatOnPaste",R[R.formatOnType=55]="formatOnType",R[R.glyphMargin=56]="glyphMargin",R[R.gotoLocation=57]="gotoLocation",R[R.hideCursorInOverviewRuler=58]="hideCursorInOverviewRuler",R[R.hover=59]="hover",R[R.inDiffEditor=60]="inDiffEditor",R[R.inlineSuggest=61]="inlineSuggest",R[R.letterSpacing=62]="letterSpacing",R[R.lightbulb=63]="lightbulb",R[R.lineDecorationsWidth=64]="lineDecorationsWidth",R[R.lineHeight=65]="lineHeight",R[R.lineNumbers=66]="lineNumbers",R[R.lineNumbersMinChars=67]="lineNumbersMinChars",R[R.linkedEditing=68]="linkedEditing",R[R.links=69]="links",R[R.matchBrackets=70]="matchBrackets",R[R.minimap=71]="minimap",R[R.mouseStyle=72]="mouseStyle",R[R.mouseWheelScrollSensitivity=73]="mouseWheelScrollSensitivity",R[R.mouseWheelZoom=74]="mouseWheelZoom",R[R.multiCursorMergeOverlapping=75]="multiCursorMergeOverlapping",R[R.multiCursorModifier=76]="multiCursorModifier",R[R.multiCursorPaste=77]="multiCursorPaste",R[R.multiCursorLimit=78]="multiCursorLimit",R[R.occurrencesHighlight=79]="occurrencesHighlight",R[R.overviewRulerBorder=80]="overviewRulerBorder",R[R.overviewRulerLanes=81]="overviewRulerLanes",R[R.padding=82]="padding",R[R.pasteAs=83]="pasteAs",R[R.parameterHints=84]="parameterHints",R[R.peekWidgetDefaultFocus=85]="peekWidgetDefaultFocus",R[R.definitionLinkOpensInPeek=86]="definitionLinkOpensInPeek",R[R.quickSuggestions=87]="quickSuggestions",R[R.quickSuggestionsDelay=88]="quickSuggestionsDelay",R[R.readOnly=89]="readOnly",R[R.readOnlyMessage=90]="readOnlyMessage",R[R.renameOnType=91]="renameOnType",R[R.renderControlCharacters=92]="renderControlCharacters",R[R.renderFinalNewline=93]="renderFinalNewline",R[R.renderLineHighlight=94]="renderLineHighlight",R[R.renderLineHighlightOnlyWhenFocus=95]="renderLineHighlightOnlyWhenFocus",R[R.renderValidationDecorations=96]="renderValidationDecorations",R[R.renderWhitespace=97]="renderWhitespace",R[R.revealHorizontalRightPadding=98]="revealHorizontalRightPadding",R[R.roundedSelection=99]="roundedSelection",R[R.rulers=100]="rulers",R[R.scrollbar=101]="scrollbar",R[R.scrollBeyondLastColumn=102]="scrollBeyondLastColumn",R[R.scrollBeyondLastLine=103]="scrollBeyondLastLine",R[R.scrollPredominantAxis=104]="scrollPredominantAxis",R[R.selectionClipboard=105]="selectionClipboard",R[R.selectionHighlight=106]="selectionHighlight",R[R.selectOnLineNumbers=107]="selectOnLineNumbers",R[R.showFoldingControls=108]="showFoldingControls",R[R.showUnused=109]="showUnused",R[R.snippetSuggestions=110]="snippetSuggestions",R[R.smartSelect=111]="smartSelect",R[R.smoothScrolling=112]="smoothScrolling",R[R.stickyScroll=113]="stickyScroll",R[R.stickyTabStops=114]="stickyTabStops",R[R.stopRenderingLineAfter=115]="stopRenderingLineAfter",R[R.suggest=116]="suggest",R[R.suggestFontSize=117]="suggestFontSize",R[R.suggestLineHeight=118]="suggestLineHeight",R[R.suggestOnTriggerCharacters=119]="suggestOnTriggerCharacters",R[R.suggestSelection=120]="suggestSelection",R[R.tabCompletion=121]="tabCompletion",R[R.tabIndex=122]="tabIndex",R[R.unicodeHighlighting=123]="unicodeHighlighting",R[R.unusualLineTerminators=124]="unusualLineTerminators",R[R.useShadowDOM=125]="useShadowDOM",R[R.useTabStops=126]="useTabStops",R[R.wordBreak=127]="wordBreak",R[R.wordSeparators=128]="wordSeparators",R[R.wordWrap=129]="wordWrap",R[R.wordWrapBreakAfterCharacters=130]="wordWrapBreakAfterCharacters",R[R.wordWrapBreakBeforeCharacters=131]="wordWrapBreakBeforeCharacters",R[R.wordWrapColumn=132]="wordWrapColumn",R[R.wordWrapOverride1=133]="wordWrapOverride1",R[R.wordWrapOverride2=134]="wordWrapOverride2",R[R.wrappingIndent=135]="wrappingIndent",R[R.wrappingStrategy=136]="wrappingStrategy",R[R.showDeprecated=137]="showDeprecated",R[R.inlayHints=138]="inlayHints",R[R.editorClassName=139]="editorClassName",R[R.pixelRatio=140]="pixelRatio",R[R.tabFocusMode=141]="tabFocusMode",R[R.layoutInfo=142]="layoutInfo",R[R.wrappingInfo=143]="wrappingInfo",R[R.defaultColorDecorators=144]="defaultColorDecorators",R[R.colorDecoratorsActivatedOn=145]="colorDecoratorsActivatedOn",R[R.inlineCompletionsAccessibilityVerbose=146]="inlineCompletionsAccessibilityVerbose"})(n||(e.EditorOption=n={}));var t;(function(R){R[R.TextDefined=0]="TextDefined",R[R.LF=1]="LF",R[R.CRLF=2]="CRLF"})(t||(e.EndOfLinePreference=t={}));var a;(function(R){R[R.LF=0]="LF",R[R.CRLF=1]="CRLF"})(a||(e.EndOfLineSequence=a={}));var u;(function(R){R[R.Left=1]="Left",R[R.Right=2]="Right"})(u||(e.GlyphMarginLane=u={}));var h;(function(R){R[R.None=0]="None",R[R.Indent=1]="Indent",R[R.IndentOutdent=2]="IndentOutdent",R[R.Outdent=3]="Outdent"})(h||(e.IndentAction=h={}));var r;(function(R){R[R.Both=0]="Both",R[R.Right=1]="Right",R[R.Left=2]="Left",R[R.None=3]="None"})(r||(e.InjectedTextCursorStops=r={}));var c;(function(R){R[R.Type=1]="Type",R[R.Parameter=2]="Parameter"})(c||(e.InlayHintKind=c={}));var o;(function(R){R[R.Automatic=0]="Automatic",R[R.Explicit=1]="Explicit"})(o||(e.InlineCompletionTriggerKind=o={}));var d;(function(R){R[R.DependsOnKbLayout=-1]="DependsOnKbLayout",R[R.Unknown=0]="Unknown",R[R.Backspace=1]="Backspace",R[R.Tab=2]="Tab",R[R.Enter=3]="Enter",R[R.Shift=4]="Shift",R[R.Ctrl=5]="Ctrl",R[R.Alt=6]="Alt",R[R.PauseBreak=7]="PauseBreak",R[R.CapsLock=8]="CapsLock",R[R.Escape=9]="Escape",R[R.Space=10]="Space",R[R.PageUp=11]="PageUp",R[R.PageDown=12]="PageDown",R[R.End=13]="End",R[R.Home=14]="Home",R[R.LeftArrow=15]="LeftArrow",R[R.UpArrow=16]="UpArrow",R[R.RightArrow=17]="RightArrow",R[R.DownArrow=18]="DownArrow",R[R.Insert=19]="Insert",R[R.Delete=20]="Delete",R[R.Digit0=21]="Digit0",R[R.Digit1=22]="Digit1",R[R.Digit2=23]="Digit2",R[R.Digit3=24]="Digit3",R[R.Digit4=25]="Digit4",R[R.Digit5=26]="Digit5",R[R.Digit6=27]="Digit6",R[R.Digit7=28]="Digit7",R[R.Digit8=29]="Digit8",R[R.Digit9=30]="Digit9",R[R.KeyA=31]="KeyA",R[R.KeyB=32]="KeyB",R[R.KeyC=33]="KeyC",R[R.KeyD=34]="KeyD",R[R.KeyE=35]="KeyE",R[R.KeyF=36]="KeyF",R[R.KeyG=37]="KeyG",R[R.KeyH=38]="KeyH",R[R.KeyI=39]="KeyI",R[R.KeyJ=40]="KeyJ",R[R.KeyK=41]="KeyK",R[R.KeyL=42]="KeyL",R[R.KeyM=43]="KeyM",R[R.KeyN=44]="KeyN",R[R.KeyO=45]="KeyO",R[R.KeyP=46]="KeyP",R[R.KeyQ=47]="KeyQ",R[R.KeyR=48]="KeyR",R[R.KeyS=49]="KeyS",R[R.KeyT=50]="KeyT",R[R.KeyU=51]="KeyU",R[R.KeyV=52]="KeyV",R[R.KeyW=53]="KeyW",R[R.KeyX=54]="KeyX",R[R.KeyY=55]="KeyY",R[R.KeyZ=56]="KeyZ",R[R.Meta=57]="Meta",R[R.ContextMenu=58]="ContextMenu",R[R.F1=59]="F1",R[R.F2=60]="F2",R[R.F3=61]="F3",R[R.F4=62]="F4",R[R.F5=63]="F5",R[R.F6=64]="F6",R[R.F7=65]="F7",R[R.F8=66]="F8",R[R.F9=67]="F9",R[R.F10=68]="F10",R[R.F11=69]="F11",R[R.F12=70]="F12",R[R.F13=71]="F13",R[R.F14=72]="F14",R[R.F15=73]="F15",R[R.F16=74]="F16",R[R.F17=75]="F17",R[R.F18=76]="F18",R[R.F19=77]="F19",R[R.F20=78]="F20",R[R.F21=79]="F21",R[R.F22=80]="F22",R[R.F23=81]="F23",R[R.F24=82]="F24",R[R.NumLock=83]="NumLock",R[R.ScrollLock=84]="ScrollLock",R[R.Semicolon=85]="Semicolon",R[R.Equal=86]="Equal",R[R.Comma=87]="Comma",R[R.Minus=88]="Minus",R[R.Period=89]="Period",R[R.Slash=90]="Slash",R[R.Backquote=91]="Backquote",R[R.BracketLeft=92]="BracketLeft",R[R.Backslash=93]="Backslash",R[R.BracketRight=94]="BracketRight",R[R.Quote=95]="Quote",R[R.OEM_8=96]="OEM_8",R[R.IntlBackslash=97]="IntlBackslash",R[R.Numpad0=98]="Numpad0",R[R.Numpad1=99]="Numpad1",R[R.Numpad2=100]="Numpad2",R[R.Numpad3=101]="Numpad3",R[R.Numpad4=102]="Numpad4",R[R.Numpad5=103]="Numpad5",R[R.Numpad6=104]="Numpad6",R[R.Numpad7=105]="Numpad7",R[R.Numpad8=106]="Numpad8",R[R.Numpad9=107]="Numpad9",R[R.NumpadMultiply=108]="NumpadMultiply",R[R.NumpadAdd=109]="NumpadAdd",R[R.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",R[R.NumpadSubtract=111]="NumpadSubtract",R[R.NumpadDecimal=112]="NumpadDecimal",R[R.NumpadDivide=113]="NumpadDivide",R[R.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",R[R.ABNT_C1=115]="ABNT_C1",R[R.ABNT_C2=116]="ABNT_C2",R[R.AudioVolumeMute=117]="AudioVolumeMute",R[R.AudioVolumeUp=118]="AudioVolumeUp",R[R.AudioVolumeDown=119]="AudioVolumeDown",R[R.BrowserSearch=120]="BrowserSearch",R[R.BrowserHome=121]="BrowserHome",R[R.BrowserBack=122]="BrowserBack",R[R.BrowserForward=123]="BrowserForward",R[R.MediaTrackNext=124]="MediaTrackNext",R[R.MediaTrackPrevious=125]="MediaTrackPrevious",R[R.MediaStop=126]="MediaStop",R[R.MediaPlayPause=127]="MediaPlayPause",R[R.LaunchMediaPlayer=128]="LaunchMediaPlayer",R[R.LaunchMail=129]="LaunchMail",R[R.LaunchApp2=130]="LaunchApp2",R[R.Clear=131]="Clear",R[R.MAX_VALUE=132]="MAX_VALUE"})(d||(e.KeyCode=d={}));var l;(function(R){R[R.Hint=1]="Hint",R[R.Info=2]="Info",R[R.Warning=4]="Warning",R[R.Error=8]="Error"})(l||(e.MarkerSeverity=l={}));var p;(function(R){R[R.Unnecessary=1]="Unnecessary",R[R.Deprecated=2]="Deprecated"})(p||(e.MarkerTag=p={}));var m;(function(R){R[R.Inline=1]="Inline",R[R.Gutter=2]="Gutter"})(m||(e.MinimapPosition=m={}));var v;(function(R){R[R.UNKNOWN=0]="UNKNOWN",R[R.TEXTAREA=1]="TEXTAREA",R[R.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",R[R.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",R[R.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",R[R.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",R[R.CONTENT_TEXT=6]="CONTENT_TEXT",R[R.CONTENT_EMPTY=7]="CONTENT_EMPTY",R[R.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",R[R.CONTENT_WIDGET=9]="CONTENT_WIDGET",R[R.OVERVIEW_RULER=10]="OVERVIEW_RULER",R[R.SCROLLBAR=11]="SCROLLBAR",R[R.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",R[R.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(v||(e.MouseTargetType=v={}));var b;(function(R){R[R.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",R[R.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",R[R.TOP_CENTER=2]="TOP_CENTER"})(b||(e.OverlayWidgetPositionPreference=b={}));var w;(function(R){R[R.Left=1]="Left",R[R.Center=2]="Center",R[R.Right=4]="Right",R[R.Full=7]="Full"})(w||(e.OverviewRulerLane=w={}));var E;(function(R){R[R.Left=0]="Left",R[R.Right=1]="Right",R[R.None=2]="None",R[R.LeftOfInjectedText=3]="LeftOfInjectedText",R[R.RightOfInjectedText=4]="RightOfInjectedText"})(E||(e.PositionAffinity=E={}));var I;(function(R){R[R.Off=0]="Off",R[R.On=1]="On",R[R.Relative=2]="Relative",R[R.Interval=3]="Interval",R[R.Custom=4]="Custom"})(I||(e.RenderLineNumbersType=I={}));var M;(function(R){R[R.None=0]="None",R[R.Text=1]="Text",R[R.Blocks=2]="Blocks"})(M||(e.RenderMinimap=M={}));var P;(function(R){R[R.Smooth=0]="Smooth",R[R.Immediate=1]="Immediate"})(P||(e.ScrollType=P={}));var x;(function(R){R[R.Auto=1]="Auto",R[R.Hidden=2]="Hidden",R[R.Visible=3]="Visible"})(x||(e.ScrollbarVisibility=x={}));var T;(function(R){R[R.LTR=0]="LTR",R[R.RTL=1]="RTL"})(T||(e.SelectionDirection=T={}));var A;(function(R){R[R.Invoke=1]="Invoke",R[R.TriggerCharacter=2]="TriggerCharacter",R[R.ContentChange=3]="ContentChange"})(A||(e.SignatureHelpTriggerKind=A={}));var N;(function(R){R[R.File=0]="File",R[R.Module=1]="Module",R[R.Namespace=2]="Namespace",R[R.Package=3]="Package",R[R.Class=4]="Class",R[R.Method=5]="Method",R[R.Property=6]="Property",R[R.Field=7]="Field",R[R.Constructor=8]="Constructor",R[R.Enum=9]="Enum",R[R.Interface=10]="Interface",R[R.Function=11]="Function",R[R.Variable=12]="Variable",R[R.Constant=13]="Constant",R[R.String=14]="String",R[R.Number=15]="Number",R[R.Boolean=16]="Boolean",R[R.Array=17]="Array",R[R.Object=18]="Object",R[R.Key=19]="Key",R[R.Null=20]="Null",R[R.EnumMember=21]="EnumMember",R[R.Struct=22]="Struct",R[R.Event=23]="Event",R[R.Operator=24]="Operator",R[R.TypeParameter=25]="TypeParameter"})(N||(e.SymbolKind=N={}));var F;(function(R){R[R.Deprecated=1]="Deprecated"})(F||(e.SymbolTag=F={}));var O;(function(R){R[R.Hidden=0]="Hidden",R[R.Blink=1]="Blink",R[R.Smooth=2]="Smooth",R[R.Phase=3]="Phase",R[R.Expand=4]="Expand",R[R.Solid=5]="Solid"})(O||(e.TextEditorCursorBlinkingStyle=O={}));var W;(function(R){R[R.Line=1]="Line",R[R.Block=2]="Block",R[R.Underline=3]="Underline",R[R.LineThin=4]="LineThin",R[R.BlockOutline=5]="BlockOutline",R[R.UnderlineThin=6]="UnderlineThin"})(W||(e.TextEditorCursorStyle=W={}));var U;(function(R){R[R.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",R[R.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",R[R.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",R[R.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(U||(e.TrackedRangeStickiness=U={}));var j;(function(R){R[R.None=0]="None",R[R.Same=1]="Same",R[R.Indent=2]="Indent",R[R.DeepIndent=3]="DeepIndent"})(j||(e.WrappingIndent=j={}))}),define(ne[513],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairWithMinIndentationInfo=e.BracketPairInfo=e.BracketInfo=void 0;class L{constructor(S,f,_,g){this.range=S,this.nestingLevel=f,this.nestingLevelOfEqualBracketType=_,this.isInvalid=g}}e.BracketInfo=L;class k{constructor(S,f,_,g,C,s){this.range=S,this.openingBracketRange=f,this.closingBracketRange=_,this.nestingLevel=g,this.nestingLevelOfEqualBracketType=C,this.bracketPairNode=s}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}e.BracketPairInfo=k;class y extends k{constructor(S,f,_,g,C,s,i){super(S,f,_,g,C,s),this.minVisibleColumnIndentation=i}}e.BracketPairWithMinIndentationInfo=y}),define(ne[514],se([1,0,6,2,513,179,280,91,279,126,206,14,278]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairsTree=void 0;class n extends k.Disposable{didLanguageChange(o){return this.brackets.didLanguageChange(o)}constructor(o,d){if(super(),this.textModel=o,this.getLanguageConfiguration=d,this.didChangeEmitter=new L.Emitter,this.denseKeyProvider=new g.DenseKeyProvider,this.brackets=new S.LanguageAgnosticBracketTokens(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],o.tokenization.hasTokens)o.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const l=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),p=new C.FastTokenizer(this.textModel.getValue(),l);this.initialAstWithoutTokens=(0,_.parseDocument)(p,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const o=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,o||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:o}){const d=o.map(l=>new D.TextEditInfo((0,f.toLength)(l.fromLineNumber-1,0),(0,f.toLength)(l.toLineNumber,0),(0,f.toLength)(l.toLineNumber-l.fromLineNumber+1,0)));this.handleEdits(d,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(o){const d=D.TextEditInfo.fromModelContentChanges(o.changes);this.handleEdits(d,!1)}handleEdits(o,d){const l=(0,i.combineTextEditInfos)(this.queuedTextEdits,o);this.queuedTextEdits=l,this.initialAstWithoutTokens&&!d&&(this.queuedTextEditsForInitialAstWithoutTokens=(0,i.combineTextEditInfos)(this.queuedTextEditsForInitialAstWithoutTokens,o))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(o,d,l){const m=d,v=new C.TextBufferTokenizer(this.textModel,this.brackets);return(0,_.parseDocument)(v,o,m,l)}getBracketsInRange(o,d){this.flushQueue();const l=(0,f.toLength)(o.startLineNumber-1,o.startColumn-1),p=(0,f.toLength)(o.endLineNumber-1,o.endColumn-1);return new s.CallbackIterable(m=>{const v=this.initialAstWithoutTokens||this.astWithTokens;u(v,f.lengthZero,v.length,l,p,m,0,0,new Map,d)})}getBracketPairsInRange(o,d){this.flushQueue();const l=(0,f.positionToLength)(o.getStartPosition()),p=(0,f.positionToLength)(o.getEndPosition());return new s.CallbackIterable(m=>{const v=this.initialAstWithoutTokens||this.astWithTokens,b=new h(m,d,this.textModel);r(v,f.lengthZero,v.length,l,p,b,0,new Map)})}getFirstBracketAfter(o){this.flushQueue();const d=this.initialAstWithoutTokens||this.astWithTokens;return a(d,f.lengthZero,d.length,(0,f.positionToLength)(o))}getFirstBracketBefore(o){this.flushQueue();const d=this.initialAstWithoutTokens||this.astWithTokens;return t(d,f.lengthZero,d.length,(0,f.positionToLength)(o))}}e.BracketPairsTree=n;function t(c,o,d,l){if(c.kind===4||c.kind===2){const p=[];for(const m of c.children)d=(0,f.lengthAdd)(o,m.length),p.push({nodeOffsetStart:o,nodeOffsetEnd:d}),o=d;for(let m=p.length-1;m>=0;m--){const{nodeOffsetStart:v,nodeOffsetEnd:b}=p[m];if((0,f.lengthLessThan)(v,l)){const w=t(c.children[m],v,b,l);if(w)return w}}return null}else{if(c.kind===3)return null;if(c.kind===1){const p=(0,f.lengthsToRange)(o,d);return{bracketInfo:c.bracketInfo,range:p}}}return null}function a(c,o,d,l){if(c.kind===4||c.kind===2){for(const p of c.children){if(d=(0,f.lengthAdd)(o,p.length),(0,f.lengthLessThan)(l,d)){const m=a(p,o,d,l);if(m)return m}o=d}return null}else{if(c.kind===3)return null;if(c.kind===1){const p=(0,f.lengthsToRange)(o,d);return{bracketInfo:c.bracketInfo,range:p}}}return null}function u(c,o,d,l,p,m,v,b,w,E,I=!1){if(v>200)return!0;e:for(;;)switch(c.kind){case 4:{const M=c.childrenLength;for(let P=0;P200)return!0;let E=!0;if(c.kind===2){let I=0;if(b){let x=b.get(c.openingBracket.text);x===void 0&&(x=0),I=x,x++,b.set(c.openingBracket.text,x)}const M=(0,f.lengthAdd)(o,c.openingBracket.length);let P=-1;if(m.includeMinIndentation&&(P=c.computeMinIndentation(o,m.textModel)),E=m.push(new y.BracketPairWithMinIndentationInfo((0,f.lengthsToRange)(o,d),(0,f.lengthsToRange)(o,M),c.closingBracket?(0,f.lengthsToRange)((0,f.lengthAdd)(M,((w=c.child)===null||w===void 0?void 0:w.length)||f.lengthZero),d):void 0,v,I,c,P)),o=M,E&&c.child){const x=c.child;if(d=(0,f.lengthAdd)(o,x.length),(0,f.lengthLessThanEqual)(o,p)&&(0,f.lengthGreaterThanEqual)(d,l)&&(E=r(x,o,d,l,p,m,v+1,b),!E))return!1}b?.set(c.openingBracket.text,I)}else{let I=o;for(const M of c.children){const P=I;if(I=(0,f.lengthAdd)(I,M.length),(0,f.lengthLessThanEqual)(P,p)&&(0,f.lengthLessThanEqual)(l,I)&&(E=r(M,P,I,l,p,m,v,b),!E))return!1}}return E}}),define(ne[111],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InternalModelContentChangeEvent=e.ModelInjectedTextChangedEvent=e.ModelRawContentChangedEvent=e.ModelRawEOLChanged=e.ModelRawLinesInserted=e.ModelRawLinesDeleted=e.ModelRawLineChanged=e.LineInjectedText=e.ModelRawFlush=void 0;class L{constructor(){this.changeType=1}}e.ModelRawFlush=L;class k{static applyInjectedText(i,n){if(!n||n.length===0)return i;let t="",a=0;for(const u of n)t+=i.substring(a,u.column-1),a=u.column-1,t+=u.options.content;return t+=i.substring(a),t}static fromDecorations(i){const n=[];for(const t of i)t.options.before&&t.options.before.content.length>0&&n.push(new k(t.ownerId,t.range.startLineNumber,t.range.startColumn,t.options.before,0)),t.options.after&&t.options.after.content.length>0&&n.push(new k(t.ownerId,t.range.endLineNumber,t.range.endColumn,t.options.after,1));return n.sort((t,a)=>t.lineNumber===a.lineNumber?t.column===a.column?t.order-a.order:t.column-a.column:t.lineNumber-a.lineNumber),n}constructor(i,n,t,a,u){this.ownerId=i,this.lineNumber=n,this.column=t,this.options=a,this.order=u}}e.LineInjectedText=k;class y{constructor(i,n,t){this.changeType=2,this.lineNumber=i,this.detail=n,this.injectedText=t}}e.ModelRawLineChanged=y;class D{constructor(i,n){this.changeType=3,this.fromLineNumber=i,this.toLineNumber=n}}e.ModelRawLinesDeleted=D;class S{constructor(i,n,t,a){this.changeType=4,this.injectedTexts=a,this.fromLineNumber=i,this.toLineNumber=n,this.detail=t}}e.ModelRawLinesInserted=S;class f{constructor(){this.changeType=5}}e.ModelRawEOLChanged=f;class _{constructor(i,n,t,a){this.changes=i,this.versionId=n,this.isUndoing=t,this.isRedoing=a,this.resultingSelection=null}containsEvent(i){for(let n=0,t=this.changes.length;nu)throw new g.BugIndicatingError("Illegal value for lineNumber");const h=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(h&&h.offSide);let c=-2,o=-1,d=-2,l=-1;const p=N=>{if(c!==-1&&(c===-2||c>N-1)){c=-1,o=-1;for(let F=N-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){c=F,o=O;break}}}if(d===-2){d=-1,l=-1;for(let F=N;F=0){d=F,l=O;break}}}};let m=-2,v=-1,b=-2,w=-1;const E=N=>{if(m===-2){m=-1,v=-1;for(let F=N-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){m=F,v=O;break}}}if(b!==-1&&(b===-2||b=0){b=F,w=O;break}}}};let I=0,M=!0,P=0,x=!0,T=0,A=0;for(let N=0;M||x;N++){const F=n-N,O=n+N;N>1&&(F<1||F1&&(O>u||O>a)&&(x=!1),N>5e4&&(M=!1,x=!1);let W=-1;if(M&&F>=1){const j=this._computeIndentLevel(F-1);j>=0?(d=F-1,l=j,W=Math.ceil(j/this.textModel.getOptions().indentSize)):(p(F),W=this._getIndentLevelForWhitespaceLine(r,o,l))}let U=-1;if(x&&O<=u){const j=this._computeIndentLevel(O-1);j>=0?(m=O-1,v=j,U=Math.ceil(j/this.textModel.getOptions().indentSize)):(E(O),U=this._getIndentLevelForWhitespaceLine(r,v,w))}if(N===0){A=W;continue}if(N===1){if(O<=u&&U>=0&&A+1===U){M=!1,I=O,P=O,T=U;continue}if(F>=1&&W>=0&&W-1===A){x=!1,I=F,P=F,T=W;continue}if(I=n,P=n,T=A,T===0)return{startLineNumber:I,endLineNumber:P,indent:T}}M&&(W>=T?I=F:M=!1),x&&(U>=T?P=O:x=!1)}return{startLineNumber:I,endLineNumber:P,indent:T}}getLinesBracketGuides(n,t,a,u){var h;const r=[];for(let m=n;m<=t;m++)r.push([]);const c=!0,o=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new D.Range(n,1,t,this.textModel.getLineMaxColumn(t))).toArray();let d;if(a&&o.length>0){const m=(n<=a.lineNumber&&a.lineNumber<=t?o:this.textModel.bracketPairs.getBracketPairsInRange(D.Range.fromPositions(a)).toArray()).filter(v=>D.Range.strictContainsPosition(v.range,a));d=(h=(0,L.findLast)(m,v=>c||v.range.startLineNumber!==v.range.endLineNumber))===null||h===void 0?void 0:h.range}const l=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,p=new s;for(const m of o){if(!m.closingBracketRange)continue;const v=d&&m.range.equalsRange(d);if(!v&&!u.includeInactive)continue;const b=p.getInlineClassName(m.nestingLevel,m.nestingLevelOfEqualBracketType,l)+(u.highlightActive&&v?" "+p.activeClassName:""),w=m.openingBracketRange.getStartPosition(),E=m.closingBracketRange.getStartPosition(),I=u.horizontalGuides===_.HorizontalGuidesState.Enabled||u.horizontalGuides===_.HorizontalGuidesState.EnabledForActive&&v;if(m.range.startLineNumber===m.range.endLineNumber){c&&I&&r[m.range.startLineNumber-n].push(new _.IndentGuide(-1,m.openingBracketRange.getEndPosition().column,b,new _.IndentGuideHorizontalLine(!1,E.column),-1,-1));continue}const M=this.getVisibleColumnFromPosition(E),P=this.getVisibleColumnFromPosition(m.openingBracketRange.getStartPosition()),x=Math.min(P,M,m.minVisibleColumnIndentation+1);let T=!1;k.firstNonWhitespaceIndex(this.textModel.getLineContent(m.closingBracketRange.startLineNumber))=n&&P>x&&r[w.lineNumber-n].push(new _.IndentGuide(x,-1,b,new _.IndentGuideHorizontalLine(!1,w.column),-1,-1)),E.lineNumber<=t&&M>x&&r[E.lineNumber-n].push(new _.IndentGuide(x,-1,b,new _.IndentGuideHorizontalLine(!T,E.column),-1,-1)))}for(const m of r)m.sort((v,b)=>v.visibleColumn-b.visibleColumn);return r}getVisibleColumnFromPosition(n){return y.CursorColumns.visibleColumnFromColumn(this.textModel.getLineContent(n.lineNumber),n.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(n,t){this.assertNotDisposed();const a=this.textModel.getLineCount();if(n<1||n>a)throw new Error("Illegal value for startLineNumber");if(t<1||t>a)throw new Error("Illegal value for endLineNumber");const u=this.textModel.getOptions(),h=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(h&&h.offSide),c=new Array(t-n+1);let o=-2,d=-1,l=-2,p=-1;for(let m=n;m<=t;m++){const v=m-n,b=this._computeIndentLevel(m-1);if(b>=0){o=m-1,d=b,c[v]=Math.ceil(b/u.indentSize);continue}if(o===-2){o=-1,d=-1;for(let w=m-2;w>=0;w--){const E=this._computeIndentLevel(w);if(E>=0){o=w,d=E;break}}}if(l!==-1&&(l===-2||l=0){l=w,p=E;break}}}c[v]=this._getIndentLevelForWhitespaceLine(r,d,p)}return c}_getIndentLevelForWhitespaceLine(n,t,a){const u=this.textModel.getOptions();return t===-1||a===-1?0:t{this._tokenizationSupports.get(f)===_&&(this._tokenizationSupports.delete(f),this.handleChange([f]))})}get(f){return this._tokenizationSupports.get(f)||null}registerFactory(f,_){var g;(g=this._factories.get(f))===null||g===void 0||g.dispose();const C=new D(this,f,_);return this._factories.set(f,C),(0,k.toDisposable)(()=>{const s=this._factories.get(f);!s||s!==C||(this._factories.delete(f),s.dispose())})}getOrCreate(f){return we(this,void 0,void 0,function*(){const _=this.get(f);if(_)return _;const g=this._factories.get(f);return!g||g.isResolved?null:(yield g.resolve(),this.get(f))})}isResolved(f){if(this.get(f))return!0;const g=this._factories.get(f);return!!(!g||g.isResolved)}setColorMap(f){this._colorMap=f,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}e.TokenizationRegistry=y;class D extends k.Disposable{get isResolved(){return this._isResolved}constructor(f,_,g){super(),this._registry=f,this._languageId=_,this._factory=g,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}resolve(){return we(this,void 0,void 0,function*(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise})}_create(){return we(this,void 0,void 0,function*(){const f=yield this._factory.tokenizationSupport;this._isResolved=!0,f&&!this._isDisposed&&this._register(this._registry.register(this._languageId,f))})}}}),define(ne[516],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContiguousMultilineTokens=void 0;class L{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(y,D){this._startLineNumber=y,this._tokens=D}getLineTokens(y){return this._tokens[y-this._startLineNumber]}appendLineTokens(y){this._tokens.push(y)}}e.ContiguousMultilineTokens=L}),define(ne[288],se([1,0,516]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContiguousMultilineTokensBuilder=void 0;class k{constructor(){this._tokens=[]}add(D,S){if(this._tokens.length>0){const f=this._tokens[this._tokens.length-1];if(f.endLineNumber+1===D){f.appendLineTokens(S);return}}this._tokens.push(new L.ContiguousMultilineTokens(D,[S]))}finalize(){return this._tokens}}e.ContiguousMultilineTokensBuilder=k}),define(ne[86],se([1,0,124]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineTokens=void 0;class k{static createEmpty(S,f){const _=k.defaultTokenMetadata,g=new Uint32Array(2);return g[0]=S.length,g[1]=_,new k(g,S,f)}constructor(S,f,_){this._lineTokensBrand=void 0,this._tokens=S,this._tokensCount=this._tokens.length>>>1,this._text=f,this._languageIdCodec=_}equals(S){return S instanceof k?this.slicedEquals(S,0,this._tokensCount):!1}slicedEquals(S,f,_){if(this._text!==S._text||this._tokensCount!==S._tokensCount)return!1;const g=f<<1,C=g+(_<<1);for(let s=g;s0?this._tokens[S-1<<1]:0}getMetadata(S){return this._tokens[(S<<1)+1]}getLanguageId(S){const f=this._tokens[(S<<1)+1],_=L.TokenMetadata.getLanguageId(f);return this._languageIdCodec.decodeLanguageId(_)}getStandardTokenType(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getTokenType(f)}getForeground(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getForeground(f)}getClassName(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getClassNameFromMetadata(f)}getInlineStyle(S,f){const _=this._tokens[(S<<1)+1];return L.TokenMetadata.getInlineStyleFromMetadata(_,f)}getPresentation(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getPresentationFromMetadata(f)}getEndOffset(S){return this._tokens[S<<1]}findTokenIndexAtOffset(S){return k.findIndexInTokensArray(this._tokens,S)}inflate(){return this}sliceAndInflate(S,f,_){return new y(this,S,f,_)}static convertToEndOffset(S,f){const g=(S.length>>>1)-1;for(let C=0;C>>1)-1;for(;_f&&(g=C)}return _}withInserted(S){if(S.length===0)return this;let f=0,_=0,g="";const C=new Array;let s=0;for(;;){const i=fs){g+=this._text.substring(s,n.offset);const t=this._tokens[(f<<1)+1];C.push(g.length,t),s=n.offset}g+=n.text,C.push(g.length,n.tokenMetadata),_++}else break}return new k(new Uint32Array(C),g,this._languageIdCodec)}}e.LineTokens=k,k.defaultTokenMetadata=(0<<11|1<<15|2<<24)>>>0;class y{constructor(S,f,_,g){this._source=S,this._startOffset=f,this._endOffset=_,this._deltaOffset=g,this._firstTokenIndex=S.findTokenIndexAtOffset(f),this._tokensCount=0;for(let C=this._firstTokenIndex,s=S.getCount();C=_);C++)this._tokensCount++}getMetadata(S){return this._source.getMetadata(this._firstTokenIndex+S)}getLanguageId(S){return this._source.getLanguageId(this._firstTokenIndex+S)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(S){return S instanceof y?this._startOffset===S._startOffset&&this._endOffset===S._endOffset&&this._deltaOffset===S._deltaOffset&&this._source.slicedEquals(S._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getForeground(S){return this._source.getForeground(this._firstTokenIndex+S)}getEndOffset(S){const f=this._source.getEndOffset(this._firstTokenIndex+S);return Math.min(this._endOffset,f)-this._startOffset+this._deltaOffset}getClassName(S){return this._source.getClassName(this._firstTokenIndex+S)}getInlineStyle(S,f){return this._source.getInlineStyle(this._firstTokenIndex+S,f)}getPresentation(S){return this._source.getPresentation(this._firstTokenIndex+S)}findTokenIndexAtOffset(S){return this._source.findTokenIndexAtOffset(S+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}}),define(ne[517],se([1,0,86]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toUint32Array=e.ContiguousTokensEditing=e.EMPTY_LINE_TOKENS=void 0,e.EMPTY_LINE_TOKENS=new Uint32Array(0).buffer;class k{static deleteBeginning(S,f){return S===null||S===e.EMPTY_LINE_TOKENS?S:k.delete(S,0,f)}static deleteEnding(S,f){if(S===null||S===e.EMPTY_LINE_TOKENS)return S;const _=y(S),g=_[_.length-2];return k.delete(S,f,g)}static delete(S,f,_){if(S===null||S===e.EMPTY_LINE_TOKENS||f===_)return S;const g=y(S),C=g.length>>>1;if(f===0&&g[g.length-2]===_)return e.EMPTY_LINE_TOKENS;const s=L.LineTokens.findIndexInTokensArray(g,f),i=s>0?g[s-1<<1]:0,n=g[s<<1];if(_a&&(g[t++]=c,g[t++]=g[(r<<1)+1],a=c)}if(t===g.length)return S;const h=new Uint32Array(t);return h.set(g.subarray(0,t),0),h.buffer}static append(S,f){if(f===e.EMPTY_LINE_TOKENS)return S;if(S===e.EMPTY_LINE_TOKENS)return f;if(S===null)return S;if(f===null)return null;const _=y(S),g=y(f),C=g.length>>>1,s=new Uint32Array(_.length+g.length);s.set(_,0);let i=_.length;const n=_[_.length-2];for(let t=0;t>>1;let s=L.LineTokens.findIndexInTokensArray(g,f);s>0&&g[s-1<<1]===f&&s--;for(let i=s;i0}getTokens(C,s,i){let n=null;if(s1&&(t=S.TokenMetadata.getLanguageId(n[1])!==C),!t)return y.EMPTY_LINE_TOKENS}if(!n||n.length===0){const t=new Uint32Array(2);return t[0]=s,t[1]=_(C),t.buffer}return n[n.length-2]=s,n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(C){for(;C>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(C,s){s!==0&&(C+s>this._len&&(s=this._len-C),this._lineTokens.splice(C,s),this._len-=s)}_insertLines(C,s){if(s===0)return;const i=[];for(let n=0;n=this._len)return;if(C.startLineNumber===C.endLineNumber){if(C.startColumn===C.endColumn)return;this._lineTokens[s]=y.ContiguousTokensEditing.delete(this._lineTokens[s],C.startColumn-1,C.endColumn-1);return}this._lineTokens[s]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[s],C.startColumn-1);const i=C.endLineNumber-1;let n=null;i=this._len)){if(s===0){this._lineTokens[n]=y.ContiguousTokensEditing.insert(this._lineTokens[n],C.column-1,i);return}this._lineTokens[n]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[n],C.column-1),this._lineTokens[n]=y.ContiguousTokensEditing.insert(this._lineTokens[n],C.column-1,i),this._insertLines(C.lineNumber,s)}}setMultilineTokens(C,s){if(C.length===0)return{changes:[]};const i=[];for(let n=0,t=C.length;n>>0}}),define(ne[519],se([1,0,12,5,122]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SparseLineTokens=e.SparseMultilineTokens=void 0;class D{static create(g,C){return new D(g,new S(C))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(g,C){this._startLineNumber=g,this._tokens=C,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(g){return this._startLineNumber<=g&&g<=this._endLineNumber?this._tokens.getLineTokens(g-this._startLineNumber):null}getRange(){const g=this._tokens.getRange();return g&&new k.Range(this._startLineNumber+g.startLineNumber,g.startColumn,this._startLineNumber+g.endLineNumber,g.endColumn)}removeTokens(g){const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(C,g.startColumn-1,s,g.endColumn-1),this._updateEndLineNumber()}split(g){const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber,[i,n,t]=this._tokens.split(C,g.startColumn-1,s,g.endColumn-1);return[new D(this._startLineNumber,i),new D(this._startLineNumber+t,n)]}applyEdit(g,C){const[s,i,n]=(0,y.countEOL)(C);this.acceptEdit(g,s,i,n,C.length>0?C.charCodeAt(0):0)}acceptEdit(g,C,s,i,n){this._acceptDeleteRange(g),this._acceptInsertText(new L.Position(g.startLineNumber,g.startColumn),C,s,i,n),this._updateEndLineNumber()}_acceptDeleteRange(g){if(g.startLineNumber===g.endLineNumber&&g.startColumn===g.endColumn)return;const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber;if(s<0){const n=s-C;this._startLineNumber-=n;return}const i=this._tokens.getMaxDeltaLine();if(!(C>=i+1)){if(C<0&&s>=i+1){this._startLineNumber=0,this._tokens.clear();return}if(C<0){const n=-C;this._startLineNumber-=n,this._tokens.acceptDeleteRange(g.startColumn-1,0,0,s,g.endColumn-1)}else this._tokens.acceptDeleteRange(0,C,g.startColumn-1,s,g.endColumn-1)}}_acceptInsertText(g,C,s,i,n){if(C===0&&s===0)return;const t=g.lineNumber-this._startLineNumber;if(t<0){this._startLineNumber+=C;return}const a=this._tokens.getMaxDeltaLine();t>=a+1||this._tokens.acceptInsertText(t,g.column-1,C,s,i,n)}}e.SparseMultilineTokens=D;class S{constructor(g){this._tokens=g,this._tokenCount=g.length/4}toString(g){const C=[];for(let s=0;sg)s=i-1;else{let t=i;for(;t>C&&this._getDeltaLine(t-1)===g;)t--;let a=i;for(;ag||o===g&&l>=C)&&(og||l===g&&m>=C){if(ln?p-=n-s:p=s;else if(d===C&&l===s)if(d===i&&p>n)p-=n-s;else{r=!0;continue}else if(dn)d=C,l=s,p=l+(p-n);else{r=!0;continue}else if(d>i){if(u===0&&!r){h=a;break}d-=u}else if(d===i&&l>=n)g&&d===0&&(l+=g,p+=g),d-=u,l-=n-s,p-=n-s;else throw new Error("Not possible!");const v=4*h;t[v]=d,t[v+1]=l,t[v+2]=p,t[v+3]=m,h++}this._tokenCount=h}acceptInsertText(g,C,s,i,n,t){const a=s===0&&i===1&&(t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122),u=this._tokens,h=this._tokenCount;for(let r=0;r0){const C=f[0].getRange(),s=f[f.length-1].getRange();if(!C||!s)return S;_=S.plusRange(C).plusRange(s)}let g=null;for(let C=0,s=this._pieces.length;C_.endLineNumber){g=g||{index:C};break}if(i.removeTokens(_),i.isEmpty()){this._pieces.splice(C,1),C--,s--;continue}if(i.endLineNumber<_.startLineNumber)continue;if(i.startLineNumber>_.endLineNumber){g=g||{index:C};continue}const[n,t]=i.split(_);if(n.isEmpty()){g=g||{index:C};continue}t.isEmpty()||(this._pieces.splice(C,1,n,t),C++,s++,g=g||{index:C})}return g=g||{index:this._pieces.length},f.length>0&&(this._pieces=L.arrayInsert(this._pieces,g.index,f)),_}isComplete(){return this._isComplete}addSparseTokens(S,f){if(f.getLineContent().length===0)return f;const _=this._pieces;if(_.length===0)return f;const g=y._findFirstPieceWithLine(_,S),C=_[g].getLineTokens(S);if(!C)return f;const s=f.getCount(),i=C.getCount();let n=0;const t=[];let a=0,u=0;const h=(r,c)=>{r!==u&&(u=r,t[a++]=r,t[a++]=c)};for(let r=0;r>>0,p=~l>>>0;for(;nf)g=C-1;else{for(;C>_&&S[C-1].startLineNumber<=f&&f<=S[C-1].endLineNumber;)C--;return C}}return _}acceptEdit(S,f,_,g,C){for(const s of this._pieces)s.acceptEdit(S,f,_,g,C)}}e.SparseTokensStore=y}),define(ne[150],se([1,0,2]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewEventHandler=void 0;class k extends L.Disposable{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(D){return!1}onCompositionEnd(D){return!1}onConfigurationChanged(D){return!1}onCursorStateChanged(D){return!1}onDecorationsChanged(D){return!1}onFlushed(D){return!1}onFocusChanged(D){return!1}onLanguageConfigurationChanged(D){return!1}onLineMappingChanged(D){return!1}onLinesChanged(D){return!1}onLinesDeleted(D){return!1}onLinesInserted(D){return!1}onRevealRangeRequest(D){return!1}onScrollChanged(D){return!1}onThemeChanged(D){return!1}onTokensChanged(D){return!1}onTokensColorsChanged(D){return!1}onZonesChanged(D){return!1}handleEvents(D){let S=!1;for(let f=0,_=D.length;f<_;f++){const g=D[f];switch(g.type){case 0:this.onCompositionStart(g)&&(S=!0);break;case 1:this.onCompositionEnd(g)&&(S=!0);break;case 2:this.onConfigurationChanged(g)&&(S=!0);break;case 3:this.onCursorStateChanged(g)&&(S=!0);break;case 4:this.onDecorationsChanged(g)&&(S=!0);break;case 5:this.onFlushed(g)&&(S=!0);break;case 6:this.onFocusChanged(g)&&(S=!0);break;case 7:this.onLanguageConfigurationChanged(g)&&(S=!0);break;case 8:this.onLineMappingChanged(g)&&(S=!0);break;case 9:this.onLinesChanged(g)&&(S=!0);break;case 10:this.onLinesDeleted(g)&&(S=!0);break;case 11:this.onLinesInserted(g)&&(S=!0);break;case 12:this.onRevealRangeRequest(g)&&(S=!0);break;case 13:this.onScrollChanged(g)&&(S=!0);break;case 15:this.onTokensChanged(g)&&(S=!0);break;case 14:this.onThemeChanged(g)&&(S=!0);break;case 16:this.onTokensColorsChanged(g)&&(S=!0);break;case 17:this.onZonesChanged(g)&&(S=!0);break;default:console.info("View received unknown event: "),console.info(g)}}S&&(this._shouldRender=!0)}}e.ViewEventHandler=k}),define(ne[112],se([1,0,150]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicViewOverlay=void 0;class k extends L.ViewEventHandler{}e.DynamicViewOverlay=k}),define(ne[53],se([1,0,150]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PartFingerprints=e.ViewPart=void 0;class k extends L.ViewEventHandler{constructor(S){super(),this._context=S,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}e.ViewPart=k;class y{static write(S,f){S.setAttribute("data-mprt",String(f))}static read(S){const f=S.getAttribute("data-mprt");return f===null?0:parseInt(f,10)}static collect(S,f){const _=[];let g=0;for(;S&&S!==document.body&&S!==f;)S.nodeType===S.ELEMENT_NODE&&(_[g++]=this.read(S)),S=S.parentElement;const C=new Uint8Array(g);for(let s=0;s{if(t.options.zIndexa.options.zIndex)return 1;const u=t.options.className,h=a.options.className;return uh?1:y.Range.compareRangesUsingStarts(t.range,a.range)});const s=f.visibleRange.startLineNumber,i=f.visibleRange.endLineNumber,n=[];for(let t=s;t<=i;t++){const a=t-s;n[a]=""}this._renderWholeLineDecorations(f,g,n),this._renderNormalDecorations(f,g,n),this._renderResult=n}_renderWholeLineDecorations(f,_,g){const C=String(this._lineHeight),s=f.visibleRange.startLineNumber,i=f.visibleRange.endLineNumber;for(let n=0,t=_.length;n
    ',h=Math.max(a.range.startLineNumber,s),r=Math.min(a.range.endLineNumber,i);for(let c=h;c<=r;c++){const o=c-s;g[o]+=u}}}_renderNormalDecorations(f,_,g){var C;const s=String(this._lineHeight),i=f.visibleRange.startLineNumber;let n=null,t=!1,a=null,u=!1;for(let h=0,r=_.length;h
    ';t[c]+=m}}}render(f,_){if(!this._renderResult)return"";const g=_-f;return g<0||g>=this._renderResult.length?"":this._renderResult[g]}}e.DecorationsOverlay=D}),define(ne[210],se([1,0,35,14,112,53,5,418]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlyphMarginWidgets=e.DedupOverlay=e.VisibleLineDecorationsToRender=e.LineDecorationToRender=e.DecorationToRender=void 0;class f{constructor(u,h,r,c){this._decorationToRenderBrand=void 0,this.startLineNumber=+u,this.endLineNumber=+h,this.className=String(r),this.zIndex=c??0}}e.DecorationToRender=f;class _{constructor(u,h){this.className=u,this.zIndex=h}}e.LineDecorationToRender=_;class g{constructor(){this.decorations=[]}add(u){this.decorations.push(u)}getDecorations(){return this.decorations}}e.VisibleLineDecorationsToRender=g;class C extends y.DynamicViewOverlay{_render(u,h,r){const c=[];for(let l=u;l<=h;l++){const p=l-u;c[p]=new g}if(r.length===0)return c;r.sort((l,p)=>l.className===p.className?l.startLineNumber===p.startLineNumber?l.endLineNumber-p.endLineNumber:l.startLineNumber-p.startLineNumber:l.classNamec)continue;const l=Math.max(d.startLineNumber,r),p=Math.min(o.preference.lane,this._glyphMarginDecorationLaneCount);h.push(new n(l,p,o.preference.zIndex,o))}}_collectSortedGlyphRenderRequests(u){const h=[];return this._collectDecorationBasedGlyphRenderRequest(u,h),this._collectWidgetBasedGlyphRenderRequest(u,h),h.sort((r,c)=>r.lineNumber===c.lineNumber?r.lane===c.lane?r.zIndex===c.zIndex?c.type===r.type?r.type===0&&c.type===0?r.className0;){const c=h.peek();if(!c)break;const o=h.takeWhile(l=>l.lineNumber===c.lineNumber&&l.lane===c.lane);if(!o||o.length===0)break;const d=o[0];if(d.type===0){const l=[];for(const p of o){if(p.zIndex!==d.zIndex||p.type!==d.type)break;(l.length===0||l[l.length-1]!==p.className)&&l.push(p.className)}r.push(d.accept(l.join(" ")))}else d.widget.renderInfo={lineNumber:d.lineNumber,lane:d.lane}}this._decorationGlyphsToRender=r}render(u){if(!this._glyphMargin){for(const r of Object.values(this._widgets))r.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const r=this._managedDomNodes.pop();r?.domNode.remove()}return}const h=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const r of Object.values(this._widgets))if(!r.renderInfo)r.domNode.setDisplay("none");else{const c=u.viewportData.relativeVerticalOffset[r.renderInfo.lineNumber-u.viewportData.startLineNumber],o=this._glyphMarginLeft+(r.renderInfo.lane-1)*this._lineHeight;r.domNode.setDisplay("block"),r.domNode.setTop(c),r.domNode.setLeft(o),r.domNode.setWidth(h),r.domNode.setHeight(this._lineHeight)}for(let r=0;rthis._decorationGlyphsToRender.length;){const r=this._managedDomNodes.pop();r?.domNode.remove()}}}e.GlyphMarginWidgets=s;class i{constructor(u,h,r,c){this.lineNumber=u,this.lane=h,this.zIndex=r,this.className=c,this.type=0}accept(u){return new t(this.lineNumber,this.lane,u)}}class n{constructor(u,h,r,c){this.lineNumber=u,this.lane=h,this.zIndex=r,this.widget=c,this.type=1}}class t{constructor(u,h,r){this.lineNumber=u,this.lane=h,this.combinedClassName=r}}}),define(ne[523],se([1,0,210,422]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinesDecorationsOverlay=void 0;class k extends L.DedupOverlay{constructor(D){super(),this._context=D;const f=this._context.configuration.options.get(142);this._decorationsLeft=f.decorationsLeft,this._decorationsWidth=f.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(D){const f=this._context.configuration.options.get(142);return this._decorationsLeft=f.decorationsLeft,this._decorationsWidth=f.decorationsWidth,!0}onDecorationsChanged(D){return!0}onFlushed(D){return!0}onLinesChanged(D){return!0}onLinesDeleted(D){return!0}onLinesInserted(D){return!0}onScrollChanged(D){return D.scrollTopChanged}onZonesChanged(D){return!0}_getDecorations(D){const S=D.getDecorationsInViewport(),f=[];let _=0;for(let g=0,C=S.length;g
    ',i=[];for(let n=S;n<=f;n++){const t=n-S,a=_[t].getDecorations();let u="";for(const h of a)u+='
    ';g[s]=n}this._renderResult=g}render(D,S){return this._renderResult?this._renderResult[S-D]:""}}e.MarginViewLineDecorationsOverlay=k}),define(ne[525],se([1,0,35,53,426]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewOverlayWidgets=void 0;class y extends k.ViewPart{constructor(S){super(S);const _=this._context.configuration.options.get(142);this._widgets={},this._verticalScrollbarWidth=_.verticalScrollbarWidth,this._minimapWidth=_.minimap.minimapWidth,this._horizontalScrollbarHeight=_.horizontalScrollbarHeight,this._editorHeight=_.height,this._editorWidth=_.width,this._domNode=(0,L.createFastDomNode)(document.createElement("div")),k.PartFingerprints.write(this._domNode,4),this._domNode.setClassName("overlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(S){const _=this._context.configuration.options.get(142);return this._verticalScrollbarWidth=_.verticalScrollbarWidth,this._minimapWidth=_.minimap.minimapWidth,this._horizontalScrollbarHeight=_.horizontalScrollbarHeight,this._editorHeight=_.height,this._editorWidth=_.width,!0}addWidget(S){const f=(0,L.createFastDomNode)(S.getDomNode());this._widgets[S.getId()]={widget:S,preference:null,domNode:f},f.setPosition("absolute"),f.setAttribute("widgetId",S.getId()),this._domNode.appendChild(f),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(S,f){const _=this._widgets[S.getId()];return _.preference===f?(this._updateMaxMinWidth(),!1):(_.preference=f,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(S){const f=S.getId();if(this._widgets.hasOwnProperty(f)){const g=this._widgets[f].domNode.domNode;delete this._widgets[f],g.parentNode.removeChild(g),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var S,f;let _=0;const g=Object.keys(this._widgets);for(let C=0,s=g.length;C0;){const i=(0,L.createFastDomNode)(document.createElement("div"));i.setClassName("view-ruler"),i.setWidth(C),this.domNode.appendChild(i),this._renderedRulers.push(i),s--}return}let _=S-f;for(;_>0;){const g=this._renderedRulers.pop();this.domNode.removeChild(g),_--}}render(S){this._ensureRulersCount();for(let f=0,_=this._rulers.length;f<_;f++){const g=this._renderedRulers[f],C=this._rulers[f];g.setBoxShadow(C.color?`1px 0 0 0 ${C.color} inset`:""),g.setHeight(Math.min(S.scrollHeight,1e6)),g.setLeft(C.column*this._typicalHalfwidthCharacterWidth)}}}e.Rulers=y}),define(ne[527],se([1,0,35,53,428]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollDecorationViewPart=void 0;class y extends k.ViewPart{constructor(S){super(S),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const _=this._context.configuration.options.get(101);this._useShadows=_.useShadows,this._domNode=(0,L.createFastDomNode)(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true")}dispose(){super.dispose()}_updateShouldShow(){const S=this._useShadows&&this._scrollTop>0;return this._shouldShow!==S?(this._shouldShow=S,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const f=this._context.configuration.options.get(142);f.minimap.renderMinimap===0||f.minimap.minimapWidth>0&&f.minimap.minimapLeft===0?this._width=f.width:this._width=f.width-f.verticalScrollbarWidth}onConfigurationChanged(S){const _=this._context.configuration.options.get(101);return this._useShadows=_.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(S){return this._scrollTop=S.scrollTop,this._updateShouldShow()}prepareRender(S){}render(S){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}e.ScrollDecorationViewPart=y}),define(ne[528],se([1,0,35,9,53,12]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewZones=void 0;const S=()=>{throw new Error("Invalid change accessor")};class f extends y.ViewPart{constructor(C){super(C);const s=this._context.configuration.options,i=s.get(142);this._lineHeight=s.get(65),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=(0,L.createFastDomNode)(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=(0,L.createFastDomNode)(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const C=this._context.viewLayout.getWhitespaces(),s=new Map;for(const n of C)s.set(n.id,n);let i=!1;return this._context.viewModel.changeWhitespace(n=>{const t=Object.keys(this._zones);for(let a=0,u=t.length;a{const n={addZone:t=>(s=!0,this._addZone(i,t)),removeZone:t=>{t&&(s=this._removeZone(i,t)||s)},layoutZone:t=>{t&&(s=this._layoutZone(i,t)||s)}};_(C,n),n.addZone=S,n.removeZone=S,n.layoutZone=S}),s}_addZone(C,s){const i=this._computeWhitespaceProps(s),t={whitespaceId:C.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(s),i.heightInPx,i.minWidthInPx),delegate:s,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:(0,L.createFastDomNode)(s.domNode),marginDomNode:s.marginDomNode?(0,L.createFastDomNode)(s.marginDomNode):null};return this._safeCallOnComputedHeight(t.delegate,i.heightInPx),t.domNode.setPosition("absolute"),t.domNode.domNode.style.width="100%",t.domNode.setDisplay("none"),t.domNode.setAttribute("monaco-view-zone",t.whitespaceId),this.domNode.appendChild(t.domNode),t.marginDomNode&&(t.marginDomNode.setPosition("absolute"),t.marginDomNode.domNode.style.width="100%",t.marginDomNode.setDisplay("none"),t.marginDomNode.setAttribute("monaco-view-zone",t.whitespaceId),this.marginDomNode.appendChild(t.marginDomNode)),this._zones[t.whitespaceId]=t,this.setShouldRender(),t.whitespaceId}_removeZone(C,s){if(this._zones.hasOwnProperty(s)){const i=this._zones[s];return delete this._zones[s],C.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.parentNode.removeChild(i.domNode.domNode),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}_layoutZone(C,s){if(this._zones.hasOwnProperty(s)){const i=this._zones[s],n=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=n.isInHiddenArea,C.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(C){return this._zones.hasOwnProperty(C)?!!this._zones[C].delegate.suppressMouseDown:!1}_heightInPixels(C){return typeof C.heightInPx=="number"?C.heightInPx:typeof C.heightInLines=="number"?this._lineHeight*C.heightInLines:this._lineHeight}_minWidthInPixels(C){return typeof C.minWidthInPx=="number"?C.minWidthInPx:0}_safeCallOnComputedHeight(C,s){if(typeof C.onComputedHeight=="function")try{C.onComputedHeight(s)}catch(i){(0,k.onUnexpectedError)(i)}}_safeCallOnDomNodeTop(C,s){if(typeof C.onDomNodeTop=="function")try{C.onDomNodeTop(s)}catch(i){(0,k.onUnexpectedError)(i)}}prepareRender(C){}render(C){const s=C.viewportData.whitespaceViewportData,i={};let n=!1;for(const a of s)this._zones[a.id].isInHiddenArea||(i[a.id]=a,n=!0);const t=Object.keys(this._zones);for(let a=0,u=t.length;a=i||(t[a++]=new k(Math.max(1,u.startColumn-s+1),Math.min(n+1,u.endColumn-s+1),u.className,u.type));return t}static filter(_,g,C,s){if(_.length===0)return[];const i=[];let n=0;for(let t=0,a=_.length;tg||h.isEmpty()&&(u.type===0||u.type===3))continue;const r=h.startLineNumber===g?h.startColumn:C,c=h.endLineNumber===g?h.endColumn:s;i[n++]=new k(r,c,u.inlineClassName,u.type)}return i}static _typeCompare(_,g){const C=[2,0,1,3];return C[_]-C[g]}static compare(_,g){if(_.startColumn!==g.startColumn)return _.startColumn-g.startColumn;if(_.endColumn!==g.endColumn)return _.endColumn-g.endColumn;const C=k._typeCompare(_.type,g.type);return C!==0?C:_.className!==g.className?_.className0&&this.stopOffsets[0]<_;){let s=0;for(;s+10&&g<_&&(C.push(new y(g,_-1,this.classNames.join(" "),D._metadata(this.metadata))),g=_),g}insert(_,g,C){if(this.count===0||this.stopOffsets[this.count-1]<=_)this.stopOffsets.push(_),this.classNames.push(g),this.metadata.push(C);else for(let s=0;s=_){this.stopOffsets.splice(s,0,_),this.classNames.splice(s,0,g),this.metadata.splice(s,0,C);break}this.count++}}class S{static normalize(_,g){if(g.length===0)return[];const C=[],s=new D;let i=0;for(let n=0,t=g.length;n1){const l=_.charCodeAt(u-2);L.isHighSurrogate(l)&&u--}if(h>1){const l=_.charCodeAt(h-2);L.isHighSurrogate(l)&&h--}const o=u-1,d=h-2;i=s.consumeLowerThan(o,i,C),s.count===0&&(i=o),s.insert(d,r,c)}return s.consumeLowerThan(1073741824,i,C),C}}e.LineDecorationsNormalizer=S}),define(ne[529],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinePart=void 0;class L{constructor(y,D,S,f){this.endIndex=y,this.type=D,this.metadata=S,this.containsRTL=f,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}e.LinePart=L}),define(ne[530],se([1,0,11]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinesLayout=e.EditorWhitespace=void 0;class k{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(f){this._hasPending=!0,this._inserts.push(f)}change(f){this._hasPending=!0,this._changes.push(f)}remove(f){this._hasPending=!0,this._removes.push(f)}mustCommit(){return this._hasPending}commit(f){if(!this._hasPending)return;const _=this._inserts,g=this._changes,C=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],f._commitPendingChanges(_,g,C)}}class y{constructor(f,_,g,C,s){this.id=f,this.afterLineNumber=_,this.ordinal=g,this.height=C,this.minWidth=s,this.prefixSum=0}}e.EditorWhitespace=y;class D{constructor(f,_,g,C){this._instanceId=L.singleLetterHash(++D.INSTANCE_COUNT),this._pendingChanges=new k,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=f,this._lineHeight=_,this._paddingTop=g,this._paddingBottom=C}static findInsertionIndex(f,_,g){let C=0,s=f.length;for(;C>>1;_===f[i].afterLineNumber?g{_=!0,C=C|0,s=s|0,i=i|0,n=n|0;const t=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new y(t,C,s,i,n)),t},changeOneWhitespace:(C,s,i)=>{_=!0,s=s|0,i=i|0,this._pendingChanges.change({id:C,newAfterLineNumber:s,newHeight:i})},removeWhitespace:C=>{_=!0,this._pendingChanges.remove({id:C})}})}finally{this._pendingChanges.commit(this)}return _}_commitPendingChanges(f,_,g){if((f.length>0||g.length>0)&&(this._minWidth=-1),f.length+_.length+g.length<=1){for(const t of f)this._insertWhitespace(t);for(const t of _)this._changeOneWhitespace(t.id,t.newAfterLineNumber,t.newHeight);for(const t of g){const a=this._findWhitespaceIndex(t.id);a!==-1&&this._removeWhitespace(a)}return}const C=new Set;for(const t of g)C.add(t.id);const s=new Map;for(const t of _)s.set(t.id,t);const i=t=>{const a=[];for(const u of t)if(!C.has(u.id)){if(s.has(u.id)){const h=s.get(u.id);u.afterLineNumber=h.newAfterLineNumber,u.height=h.newHeight}a.push(u)}return a},n=i(this._arr).concat(i(f));n.sort((t,a)=>t.afterLineNumber===a.afterLineNumber?t.ordinal-a.ordinal:t.afterLineNumber-a.afterLineNumber),this._arr=n,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(f){const _=D.findInsertionIndex(this._arr,f.afterLineNumber,f.ordinal);this._arr.splice(_,0,f),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,_-1)}_findWhitespaceIndex(f){const _=this._arr;for(let g=0,C=_.length;g_&&(this._arr[g].afterLineNumber-=_-f+1)}}onLinesInserted(f,_){this._checkPendingChanges(),f=f|0,_=_|0,this._lineCount+=_-f+1;for(let g=0,C=this._arr.length;g=_.length||_[n+1].afterLineNumber>=f)return n;g=n+1|0}else C=n-1|0}return-1}_findFirstWhitespaceAfterLineNumber(f){f=f|0;const g=this._findLastWhitespaceBeforeLineNumber(f)+1;return g1?g=this._lineHeight*(f-1):g=0;const C=this.getWhitespaceAccumulatedHeightBeforeLineNumber(f-(_?1:0));return g+C+this._paddingTop}getVerticalOffsetAfterLineNumber(f,_=!1){this._checkPendingChanges(),f=f|0;const g=this._lineHeight*f,C=this.getWhitespaceAccumulatedHeightBeforeLineNumber(f+(_?1:0));return g+C+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let f=0;for(let _=0,g=this._arr.length;__}isInTopPadding(f){return this._paddingTop===0?!1:(this._checkPendingChanges(),f=_-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(f){if(this._checkPendingChanges(),f=f|0,f<0)return 1;const _=this._lineCount|0,g=this._lineHeight;let C=1,s=_;for(;C=n+g)C=i+1;else{if(f>=n)return i;s=i}}return C>_?_:C}getLinesViewportData(f,_){this._checkPendingChanges(),f=f|0,_=_|0;const g=this._lineHeight,C=this.getLineNumberAtOrAfterVerticalOffset(f)|0,s=this.getVerticalOffsetForLineNumber(C)|0;let i=this._lineCount|0,n=this.getFirstWhitespaceIndexAfterLineNumber(C)|0;const t=this.getWhitespacesCount()|0;let a,u;n===-1?(n=t,u=i+1,a=0):(u=this.getAfterLineNumberForWhitespaceIndex(n)|0,a=this.getHeightForWhitespaceIndex(n)|0);let h=s,r=h;const c=5e5;let o=0;s>=c&&(o=Math.floor(s/c)*c,o=Math.floor(o/g)*g,r-=o);const d=[],l=f+(_-f)/2;let p=-1;for(let w=C;w<=i;w++){if(p===-1){const E=h,I=h+g;(E<=l&&ll)&&(p=w)}for(h+=g,d[w-C]=r,r+=g;u===w;)r+=a,h+=a,n++,n>=t?u=i+1:(u=this.getAfterLineNumberForWhitespaceIndex(n)|0,a=this.getHeightForWhitespaceIndex(n)|0);if(h>=_){i=w;break}}p===-1&&(p=i);const m=this.getVerticalOffsetForLineNumber(i)|0;let v=C,b=i;return v_&&b--,{bigNumbersDelta:o,startLineNumber:C,endLineNumber:i,relativeVerticalOffset:d,centeredLineNumber:p,completelyVisibleStartLineNumber:v,completelyVisibleEndLineNumber:b}}getVerticalOffsetForWhitespaceIndex(f){this._checkPendingChanges(),f=f|0;const _=this.getAfterLineNumberForWhitespaceIndex(f);let g;_>=1?g=this._lineHeight*_:g=0;let C;return f>0?C=this.getWhitespacesAccumulatedHeight(f-1):C=0,g+C+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(f){this._checkPendingChanges(),f=f|0;let _=0,g=this.getWhitespacesCount()-1;if(g<0)return-1;const C=this.getVerticalOffsetForWhitespaceIndex(g),s=this.getHeightForWhitespaceIndex(g);if(f>=C+s)return-1;for(;_=n+t)_=i+1;else{if(f>=n)return i;g=i}}return _}getWhitespaceAtVerticalOffset(f){this._checkPendingChanges(),f=f|0;const _=this.getWhitespaceIndexAtOrAfterVerticallOffset(f);if(_<0||_>=this.getWhitespacesCount())return null;const g=this.getVerticalOffsetForWhitespaceIndex(_);if(g>f)return null;const C=this.getHeightForWhitespaceIndex(_),s=this.getIdForWhitespaceIndex(_),i=this.getAfterLineNumberForWhitespaceIndex(_);return{id:s,afterLineNumber:i,verticalOffset:g,height:C}}getWhitespaceViewportData(f,_){this._checkPendingChanges(),f=f|0,_=_|0;const g=this.getWhitespaceIndexAtOrAfterVerticallOffset(f),C=this.getWhitespacesCount()-1;if(g<0)return[];const s=[];for(let i=g;i<=C;i++){const n=this.getVerticalOffsetForWhitespaceIndex(i),t=this.getHeightForWhitespaceIndex(i);if(n>=_)break;s.push({id:this.getIdForWhitespaceIndex(i),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(i),verticalOffset:n,height:t})}return s}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].id}getAfterLineNumberForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].afterLineNumber}getHeightForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].height}}e.LinesLayout=D,D.INSTANCE_COUNT=0}),define(ne[531],se([1,0,5]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewportData=void 0;class k{constructor(D,S,f,_){this.selections=D,this.startLineNumber=S.startLineNumber|0,this.endLineNumber=S.endLineNumber|0,this.relativeVerticalOffset=S.relativeVerticalOffset,this.bigNumbersDelta=S.bigNumbersDelta|0,this.whitespaceViewportData=f,this._model=_,this.visibleRange=new L.Range(S.startLineNumber,this._model.getLineMinColumn(S.startLineNumber),S.endLineNumber,this._model.getLineMaxColumn(S.endLineNumber))}getViewLineRenderingData(D){return this._model.getViewportViewLineRenderingData(this.visibleRange,D)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}e.ViewportData=k}),define(ne[67],se([1,0,11,5]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRulerDecorationsGroup=e.ViewModelDecoration=e.SingleLineInlineDecoration=e.InlineDecoration=e.ViewLineRenderingData=e.ViewLineData=e.MinimapLinesRenderingData=e.Viewport=void 0;class y{constructor(n,t,a,u){this._viewportBrand=void 0,this.top=n|0,this.left=t|0,this.width=a|0,this.height=u|0}}e.Viewport=y;class D{constructor(n,t){this.tabSize=n,this.data=t}}e.MinimapLinesRenderingData=D;class S{constructor(n,t,a,u,h,r,c){this._viewLineDataBrand=void 0,this.content=n,this.continuesWithWrappedLine=t,this.minColumn=a,this.maxColumn=u,this.startVisibleColumn=h,this.tokens=r,this.inlineDecorations=c}}e.ViewLineData=S;class f{constructor(n,t,a,u,h,r,c,o,d,l){this.minColumn=n,this.maxColumn=t,this.content=a,this.continuesWithWrappedLine=u,this.isBasicASCII=f.isBasicASCII(a,r),this.containsRTL=f.containsRTL(a,this.isBasicASCII,h),this.tokens=c,this.inlineDecorations=o,this.tabSize=d,this.startVisibleColumn=l}static isBasicASCII(n,t){return t?L.isBasicASCII(n):!0}static containsRTL(n,t,a){return!t&&a?L.containsRTL(n):!1}}e.ViewLineRenderingData=f;class _{constructor(n,t,a){this.range=n,this.inlineClassName=t,this.type=a}}e.InlineDecoration=_;class g{constructor(n,t,a,u){this.startOffset=n,this.endOffset=t,this.inlineClassName=a,this.inlineClassNameAffectsLetterSpacing=u}toInlineDecoration(n){return new _(new k.Range(n,this.startOffset+1,n,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}e.SingleLineInlineDecoration=g;class C{constructor(n,t){this._viewModelDecorationBrand=void 0,this.range=n,this.options=t}}e.ViewModelDecoration=C;class s{constructor(n,t,a){this.color=n,this.zIndex=t,this.data=a}static cmp(n,t){return n.zIndex===t.zIndex?n.colort.color?1:0:n.zIndex-t.zIndex}}e.OverviewRulerDecorationsGroup=s}),define(ne[532],se([1,0,86,12,111,67]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createModelLineProjection=void 0;function S(n,t){return n===null?t?_.INSTANCE:g.INSTANCE:new f(n,t)}e.createModelLineProjection=S;class f{constructor(t,a){this._projectionData=t,this._isVisible=a}isVisible(){return this._isVisible}setVisible(t){return this._isVisible=t,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(t,a,u){this._assertVisible();const h=u>0?this._projectionData.breakOffsets[u-1]:0,r=this._projectionData.breakOffsets[u];let c;if(this._projectionData.injectionOffsets!==null){const o=this._projectionData.injectionOffsets.map((l,p)=>new y.LineInjectedText(0,0,l+1,this._projectionData.injectionOptions[p],0));c=y.LineInjectedText.applyInjectedText(t.getLineContent(a),o).substring(h,r)}else c=t.getValueInRange({startLineNumber:a,startColumn:h+1,endLineNumber:a,endColumn:r+1});return u>0&&(c=s(this._projectionData.wrappedTextIndentLength)+c),c}getViewLineLength(t,a,u){return this._assertVisible(),this._projectionData.getLineLength(u)}getViewLineMinColumn(t,a,u){return this._assertVisible(),this._projectionData.getMinOutputOffset(u)+1}getViewLineMaxColumn(t,a,u){return this._assertVisible(),this._projectionData.getMaxOutputOffset(u)+1}getViewLineData(t,a,u){const h=new Array;return this.getViewLinesData(t,a,u,1,0,[!0],h),h[0]}getViewLinesData(t,a,u,h,r,c,o){this._assertVisible();const d=this._projectionData,l=d.injectionOffsets,p=d.injectionOptions;let m=null;if(l){m=[];let b=0,w=0;for(let E=0;E0?d.breakOffsets[E-1]:0,P=d.breakOffsets[E];for(;wP)break;if(M0?d.wrappedTextIndentLength:0,O=F+Math.max(T-M,0),W=F+Math.min(A-M,P-M);O!==W&&I.push(new D.SingleLineInlineDecoration(O,W,N.inlineClassName,N.inlineClassNameAffectsLetterSpacing))}}if(A<=P)b+=x,w++;else break}}}let v;l?v=t.tokenization.getLineTokens(a).withInserted(l.map((b,w)=>({offset:b,text:p[w].content,tokenMetadata:L.LineTokens.defaultTokenMetadata}))):v=t.tokenization.getLineTokens(a);for(let b=u;b0?h.wrappedTextIndentLength:0,c=u>0?h.breakOffsets[u-1]:0,o=h.breakOffsets[u],d=t.sliceAndInflate(c,o,r);let l=d.getLineContent();u>0&&(l=s(h.wrappedTextIndentLength)+l);const p=this._projectionData.getMinOutputOffset(u)+1,m=l.length+1,v=u+1=C.length)for(let t=1;t<=n;t++)C[t]=i(t);return C[n]}function i(n){return new Array(n+1).join(" ")}}),define(ne[533],se([1,0,11,121,111,284]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonospaceLineBreaksComputerFactory=void 0;class S{static create(h){return new S(h.get(131),h.get(130))}constructor(h,r){this.classifier=new f(h,r)}createLineBreaksComputer(h,r,c,o,d){const l=[],p=[],m=[];return{addRequest:(v,b,w)=>{l.push(v),p.push(b),m.push(w)},finalize:()=>{const v=h.typicalFullwidthCharacterWidth/h.typicalHalfwidthCharacterWidth,b=[];for(let w=0,E=l.length;w=0&&h<256?this._asciiMap[h]:h>=12352&&h<=12543||h>=13312&&h<=19903||h>=19968&&h<=40959?3:this._map.get(h)||this._defaultValue}}let _=[],g=[];function C(u,h,r,c,o,d,l,p){if(o===-1)return null;const m=r.length;if(m<=1)return null;const v=p==="keepAll",b=h.breakOffsets,w=h.breakOffsetsVisibleColumn,E=a(r,c,o,d,l),I=o-E,M=_,P=g;let x=0,T=0,A=0,N=o;const F=b.length;let O=0;if(O>=0){let W=Math.abs(w[O]-N);for(;O+1=W)break;W=U,O++}}for(;OW&&(W=T,U=A);let j=0,R=0,K=0,G=0;if(U<=N){let J=U,X=W===0?0:r.charCodeAt(W-1),H=W===0?0:u.get(X),B=!0;for(let V=W;VT&&t(X,H,ie,ae,v)&&(j=Y,R=J),J+=ce,J>N){Y>T?(K=Y,G=J-ce):(K=V+1,G=J),J-R>I&&(j=0),B=!1;break}X=ie,H=ae}if(B){x>0&&(M[x]=b[b.length-1],P[x]=w[b.length-1],x++);break}}if(j===0){let J=U,X=r.charCodeAt(W),H=u.get(X),B=!1;for(let V=W-1;V>=T;V--){const Y=V+1,ie=r.charCodeAt(V);if(ie===9){B=!0;break}let ae,ce;if(L.isLowSurrogate(ie)?(V--,ae=0,ce=2):(ae=u.get(ie),ce=L.isFullWidthCharacter(ie)?d:1),J<=N){if(K===0&&(K=Y,G=J),J<=N-I)break;if(t(ie,ae,X,H,v)){j=Y,R=J;break}}J-=ce,X=ie,H=ae}if(j!==0){const V=I-(G-R);if(V<=c){const Y=r.charCodeAt(K);let ie;L.isHighSurrogate(Y)?ie=2:ie=i(Y,G,c,d),V-ie<0&&(j=0)}}if(B){O--;continue}}if(j===0&&(j=K,R=G),j<=T){const J=r.charCodeAt(T);L.isHighSurrogate(J)?(j=T+2,R=A+2):(j=T+1,R=A+i(J,A,c,d))}for(T=j,M[x]=j,A=R,P[x]=R,x++,N=R+I;O<0||O=Z)break;Z=J,O++}}return x===0?null:(M.length=x,P.length=x,_=h.breakOffsets,g=h.breakOffsetsVisibleColumn,h.breakOffsets=M,h.breakOffsetsVisibleColumn=P,h.wrappedTextIndentLength=E,h)}function s(u,h,r,c,o,d,l,p){const m=y.LineInjectedText.applyInjectedText(h,r);let v,b;if(r&&r.length>0?(v=r.map(R=>R.options),b=r.map(R=>R.column-1)):(v=null,b=null),o===-1)return v?new D.ModelLineProjectionData(b,v,[m.length],[],0):null;const w=m.length;if(w<=1)return v?new D.ModelLineProjectionData(b,v,[m.length],[],0):null;const E=p==="keepAll",I=a(m,c,o,d,l),M=o-I,P=[],x=[];let T=0,A=0,N=0,F=o,O=m.charCodeAt(0),W=u.get(O),U=i(O,0,c,d),j=1;L.isHighSurrogate(O)&&(U+=1,O=m.charCodeAt(1),W=u.get(O),j++);for(let R=j;RF&&((A===0||U-N>M)&&(A=K,N=U-J),P[T]=A,x[T]=N,T++,F=N+M,A=0),O=G,W=Z}return T===0&&(!r||r.length===0)?null:(P[T]=w,x[T]=U,new D.ModelLineProjectionData(b,v,P,x,I))}function i(u,h,r,c){return u===9?r-h%r:L.isFullWidthCharacter(u)||u<32?c:1}function n(u,h){return h-u%h}function t(u,h,r,c,o){return r!==32&&(h===2&&c!==2||h!==1&&c===1||!o&&h===3&&c!==2||!o&&c===3&&h!==1)}function a(u,h,r,c,o){let d=0;if(o!==0){const l=L.firstNonWhitespaceIndex(u);if(l!==-1){for(let m=0;mr&&(d=0)}}return d}}),define(ne[212],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewZoneManager=e.OverviewRulerZone=e.ColorZone=void 0;class L{constructor(S,f,_){this._colorZoneBrand=void 0,this.from=S|0,this.to=f|0,this.colorId=_|0}static compare(S,f){return S.colorId===f.colorId?S.from===f.from?S.to-f.to:S.from-f.from:S.colorId-f.colorId}}e.ColorZone=L;class k{constructor(S,f,_,g){this._overviewRulerZoneBrand=void 0,this.startLineNumber=S,this.endLineNumber=f,this.heightInLines=_,this.color=g,this._colorZone=null}static compare(S,f){return S.color===f.color?S.startLineNumber===f.startLineNumber?S.heightInLines===f.heightInLines?S.endLineNumber-f.endLineNumber:S.heightInLines-f.heightInLines:S.startLineNumber-f.startLineNumber:S.color_&&(o=_-d);const l=a.color;let p=this._color2Id[l];p||(p=++this._lastAssignedId,this._color2Id[l]=p,this._id2Color[p]=l);const m=new L(o-d,o+d,p);a.setColorZone(m),i.push(m)}return this._colorZonesInvalid=!1,i.sort(L.compare),i}}e.OverviewZoneManager=y}),define(ne[534],se([1,0,35,212,150]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRuler=void 0;class D extends y.ViewEventHandler{constructor(f,_){super(),this._context=f;const g=this._context.configuration.options;this._domNode=(0,L.createFastDomNode)(document.createElement("canvas")),this._domNode.setClassName(_),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new k.OverviewZoneManager(C=>this._context.viewLayout.getVerticalOffsetForLineNumber(C)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(g.get(65)),this._zoneManager.setPixelRatio(g.get(140)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(f){const _=this._context.configuration.options;return f.hasChanged(65)&&(this._zoneManager.setLineHeight(_.get(65)),this._render()),f.hasChanged(140)&&(this._zoneManager.setPixelRatio(_.get(140)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(f){return this._render(),!0}onScrollChanged(f){return f.scrollHeightChanged&&(this._zoneManager.setOuterHeight(f.scrollHeight),this._render()),!0}onZonesChanged(f){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(f){this._domNode.setTop(f.top),this._domNode.setRight(f.right);let _=!1;_=this._zoneManager.setDOMWidth(f.width)||_,_=this._zoneManager.setDOMHeight(f.height)||_,_&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(f){this._zoneManager.setZones(f),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const f=this._zoneManager.getCanvasWidth(),_=this._zoneManager.getCanvasHeight(),g=this._zoneManager.resolveColorZones(),C=this._zoneManager.getId2Color(),s=this._domNode.domNode.getContext("2d");return s.clearRect(0,0,f,_),g.length>0&&this._renderOneLane(s,g,C,f),!0}_renderOneLane(f,_,g,C){let s=0,i=0,n=0;for(const t of _){const a=t.colorId,u=t.from,h=t.to;a!==s?(f.fillRect(0,i,C,n-i),s=a,f.fillStyle=g[s],i=u,n=h):n>=u?n=Math.max(n,h):(f.fillRect(0,i,C,n-i),i=u,n=h)}f.fillRect(0,i,C,n-i)}}e.OverviewRuler=D}),define(ne[535],se([1,0,493]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewContext=void 0;class k{constructor(D,S,f){this.configuration=D,this.theme=new L.EditorTheme(S),this.viewModel=f,this.viewLayout=f.viewLayout}addEventHandler(D){this.viewModel.addViewEventHandler(D)}removeEventHandler(D){this.viewModel.removeViewEventHandler(D)}}e.ViewContext=k}),define(ne[213],se([1,0,6,2]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ModelTokensChangedEvent=e.ModelOptionsChangedEvent=e.ModelContentChangedEvent=e.ModelLanguageConfigurationChangedEvent=e.ModelLanguageChangedEvent=e.ModelDecorationsChangedEvent=e.ReadOnlyEditAttemptEvent=e.CursorStateChangedEvent=e.HiddenAreasChangedEvent=e.ViewZonesChangedEvent=e.ScrollChangedEvent=e.FocusChangedEvent=e.ContentSizeChangedEvent=e.ViewModelEventsCollector=e.ViewModelEventDispatcher=void 0;class y extends k.Disposable{constructor(){super(),this._onEvent=this._register(new L.Emitter),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(o){this._addOutgoingEvent(o),this._emitOutgoingEvents()}_addOutgoingEvent(o){for(let d=0,l=this._outgoingEvents.length;d0;){if(this._collector||this._isConsumingViewEventQueue)return;const o=this._outgoingEvents.shift();o.isNoOp()||this._onEvent.fire(o)}}addViewEventHandler(o){for(let d=0,l=this._eventHandlers.length;d0&&this._emitMany(d)}this._emitOutgoingEvents()}emitSingleViewEvent(o){try{this.beginEmitViewEvents().emitViewEvent(o)}finally{this.endEmitViewEvents()}}_emitMany(o){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(o):this._viewEventQueue=o,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const o=this._viewEventQueue;this._viewEventQueue=null;const d=this._eventHandlers.slice(0);for(const l of d)l.handleEvents(o)}}}e.ViewModelEventDispatcher=y;class D{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(o){this.viewEvents.push(o)}emitOutgoingEvent(o){this.outgoingEvents.push(o)}}e.ViewModelEventsCollector=D;class S{constructor(o,d,l,p){this.kind=0,this._oldContentWidth=o,this._oldContentHeight=d,this.contentWidth=l,this.contentHeight=p,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(o){return o.kind!==this.kind?null:new S(this._oldContentWidth,this._oldContentHeight,o.contentWidth,o.contentHeight)}}e.ContentSizeChangedEvent=S;class f{constructor(o,d){this.kind=1,this.oldHasFocus=o,this.hasFocus=d}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(o){return o.kind!==this.kind?null:new f(this.oldHasFocus,o.hasFocus)}}e.FocusChangedEvent=f;class _{constructor(o,d,l,p,m,v,b,w){this.kind=2,this._oldScrollWidth=o,this._oldScrollLeft=d,this._oldScrollHeight=l,this._oldScrollTop=p,this.scrollWidth=m,this.scrollLeft=v,this.scrollHeight=b,this.scrollTop=w,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(o){return o.kind!==this.kind?null:new _(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,o.scrollWidth,o.scrollLeft,o.scrollHeight,o.scrollTop)}}e.ScrollChangedEvent=_;class g{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(o){return o.kind!==this.kind?null:this}}e.ViewZonesChangedEvent=g;class C{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(o){return o.kind!==this.kind?null:this}}e.HiddenAreasChangedEvent=C;class s{constructor(o,d,l,p,m,v,b){this.kind=6,this.oldSelections=o,this.selections=d,this.oldModelVersionId=l,this.modelVersionId=p,this.source=m,this.reason=v,this.reachedMaxCursorCount=b}static _selectionsAreEqual(o,d){if(!o&&!d)return!0;if(!o||!d)return!1;const l=o.length,p=d.length;if(l!==p)return!1;for(let m=0;m=t?0:u.horizontalScrollbarSize}_getContentHeight(n,t,a){const u=this._configuration.options;let h=this._linesLayout.getLinesTotalHeight();return u.get(103)?h+=Math.max(0,t-u.get(65)-u.get(82).bottom):h+=this._getHorizontalScrollbarHeight(n,a),h}_updateHeight(){const n=this._scrollable.getScrollDimensions(),t=n.width,a=n.height,u=n.contentWidth;this._scrollable.setScrollDimensions(new g(t,n.contentWidth,a,this._getContentHeight(t,a,u)))}getCurrentViewport(){const n=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,n.width,n.height)}getFutureViewport(){const n=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,n.width,n.height)}_computeContentWidth(){const n=this._configuration.options,t=this._maxLineWidth,a=n.get(143),u=n.get(49),h=n.get(142);if(a.isViewportWrapping){const r=n.get(71);return t>h.contentWidth+u.typicalHalfwidthCharacterWidth&&r.enabled&&r.side==="right"?t+h.verticalScrollbarWidth:t}else{const r=n.get(102)*u.typicalHalfwidthCharacterWidth,c=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+r+h.verticalScrollbarWidth,c,this._overlayWidgetsMinWidth)}}setMaxLineWidth(n){this._maxLineWidth=n,this._updateContentWidth()}setOverlayWidgetsMinWidth(n){this._overlayWidgetsMinWidth=n,this._updateContentWidth()}_updateContentWidth(){const n=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new g(n.width,this._computeContentWidth(),n.height,n.contentHeight)),this._updateHeight()}saveState(){const n=this._scrollable.getFutureScrollPosition(),t=n.scrollTop,a=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),u=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(a);return{scrollTop:t,scrollTopWithoutViewZones:t-u,scrollLeft:n.scrollLeft}}changeWhitespace(n){const t=this._linesLayout.changeWhitespace(n);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(n,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(n,t)}getVerticalOffsetAfterLineNumber(n,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(n,t)}isAfterLines(n){return this._linesLayout.isAfterLines(n)}isInTopPadding(n){return this._linesLayout.isInTopPadding(n)}isInBottomPadding(n){return this._linesLayout.isInBottomPadding(n)}getLineNumberAtVerticalOffset(n){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(n)}getWhitespaceAtVerticalOffset(n){return this._linesLayout.getWhitespaceAtVerticalOffset(n)}getLinesViewportData(){const n=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(n.top,n.top+n.height)}getLinesViewportDataAtScrollTop(n){const t=this._scrollable.getScrollDimensions();return n+t.height>t.scrollHeight&&(n=t.scrollHeight-t.height),n<0&&(n=0),this._linesLayout.getLinesViewportData(n,n+t.height)}getWhitespaceViewportData(){const n=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(n.top,n.top+n.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(n){return this._scrollable.validateScrollPosition(n)}setScrollPosition(n,t){t===1?this._scrollable.setScrollPositionNow(n):this._scrollable.setScrollPositionSmooth(n)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(n,t){const a=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:a.scrollLeft+n,scrollTop:a.scrollTop+t})}}e.ViewLayout=s}),define(ne[537],se([1,0,5,24]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MoveCaretCommand=void 0;class y{constructor(S,f){this._selection=S,this._isMovingLeft=f}getEditOperations(S,f){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const _=this._selection.startLineNumber,g=this._selection.startColumn,C=this._selection.endColumn;if(!(this._isMovingLeft&&g===1)&&!(!this._isMovingLeft&&C===S.getLineMaxColumn(_)))if(this._isMovingLeft){const s=new L.Range(_,g-1,_,g),i=S.getValueInRange(s);f.addEditOperation(s,null),f.addEditOperation(new L.Range(_,C,_,C),i)}else{const s=new L.Range(_,C,_,C+1),i=S.getValueInRange(s);f.addEditOperation(s,null),f.addEditOperation(new L.Range(_,g,_,g),i)}}computeCursorState(S,f){return this._isMovingLeft?new k.Selection(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new k.Selection(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}e.MoveCaretCommand=y}),define(ne[113],se([1,0,9]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionItem=e.CodeActionCommandArgs=e.filtersAction=e.mayIncludeActionsOfKind=e.CodeActionTriggerSource=e.CodeActionKind=void 0;class k{constructor(s){this.value=s}equals(s){return this.value===s.value}contains(s){return this.equals(s)||this.value===""||s.value.startsWith(this.value+k.sep)}intersects(s){return this.contains(s)||s.contains(this)}append(s){return new k(this.value+k.sep+s)}}e.CodeActionKind=k,k.sep=".",k.None=new k("@@none@@"),k.Empty=new k(""),k.QuickFix=new k("quickfix"),k.Refactor=new k("refactor"),k.RefactorExtract=k.Refactor.append("extract"),k.RefactorInline=k.Refactor.append("inline"),k.RefactorMove=k.Refactor.append("move"),k.RefactorRewrite=k.Refactor.append("rewrite"),k.Source=new k("source"),k.SourceOrganizeImports=k.Source.append("organizeImports"),k.SourceFixAll=k.Source.append("fixAll"),k.SurroundWith=k.Refactor.append("surround");var y;(function(C){C.Refactor="refactor",C.RefactorPreview="refactor preview",C.Lightbulb="lightbulb",C.Default="other (default)",C.SourceAction="source action",C.QuickFix="quick fix action",C.FixAll="fix all",C.OrganizeImports="organize imports",C.AutoFix="auto fix",C.QuickFixHover="quick fix hover window",C.OnSave="save participants",C.ProblemsView="problems view"})(y||(e.CodeActionTriggerSource=y={}));function D(C,s){return!(C.include&&!C.include.intersects(s)||C.excludes&&C.excludes.some(i=>f(s,i,C.include))||!C.includeSourceActions&&k.Source.contains(s))}e.mayIncludeActionsOfKind=D;function S(C,s){const i=s.kind?new k(s.kind):void 0;return!(C.include&&(!i||!C.include.contains(i))||C.excludes&&i&&C.excludes.some(n=>f(i,n,C.include))||!C.includeSourceActions&&i&&k.Source.contains(i)||C.onlyIncludePreferredActions&&!s.isPreferred)}e.filtersAction=S;function f(C,s,i){return!(!s.contains(C)||i&&s.contains(i))}class _{static fromUser(s,i){return!s||typeof s!="object"?new _(i.kind,i.apply,!1):new _(_.getKindFromUser(s,i.kind),_.getApplyFromUser(s,i.apply),_.getPreferredUser(s))}static getApplyFromUser(s,i){switch(typeof s.apply=="string"?s.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return i}}static getKindFromUser(s,i){return typeof s.kind=="string"?new k(s.kind):i}static getPreferredUser(s){return typeof s.preferred=="boolean"?s.preferred:!1}constructor(s,i,n){this.kind=s,this.apply=i,this.preferred=n}}e.CodeActionCommandArgs=_;class g{constructor(s,i){this.action=s,this.provider=i}resolve(s){var i;return we(this,void 0,void 0,function*(){if(!((i=this.provider)===null||i===void 0)&&i.resolveCodeAction&&!this.action.edit){let n;try{n=yield this.provider.resolveCodeAction(this.action,s)}catch(t){(0,L.onUnexpectedExternalError)(t)}n&&(this.action.edit=n.edit)}return this})}}e.CodeActionItem=g}),define(ne[538],se([1,0,6]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPickerModel=void 0;class k{get color(){return this._color}set color(D){this._color.equals(D)||(this._color=D,this._onDidChangeColor.fire(D))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(D){this._colorPresentations=D,this.presentationIndex>D.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(D,S,f){this.presentationIndex=f,this._onColorFlushed=new L.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new L.Emitter,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new L.Emitter,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=D,this._color=D,this._colorPresentations=S}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(D,S){let f=-1;for(let _=0;_i)return!1;for(let n=0;n=65&&t<=90&&t+32===a)&&!(a>=65&&a<=90&&a+32===t))return!1}return!0}_createOperationsForBlockComment(_,g,C,s,i,n){const t=_.startLineNumber,a=_.startColumn,u=_.endLineNumber,h=_.endColumn,r=i.getLineContent(t),c=i.getLineContent(u);let o=r.lastIndexOf(g,a-1+g.length),d=c.indexOf(C,h-1-C.length);if(o!==-1&&d!==-1)if(t===u)r.substring(o+g.length,d).indexOf(C)>=0&&(o=-1,d=-1);else{const p=r.substring(o+g.length),m=c.substring(0,d);(p.indexOf(C)>=0||m.indexOf(C)>=0)&&(o=-1,d=-1)}let l;o!==-1&&d!==-1?(s&&o+g.length0&&c.charCodeAt(d-1)===32&&(C=" "+C,d-=1),l=S._createRemoveBlockCommentOperations(new y.Range(t,o+g.length+1,u,d+1),g,C)):(l=S._createAddBlockCommentOperations(_,g,C,this._insertSpace),this._usedEndToken=l.length===1?C:null);for(const p of l)n.addTrackedEditOperation(p.range,p.text)}static _createRemoveBlockCommentOperations(_,g,C){const s=[];return y.Range.isEmpty(_)?s.push(L.EditOperation.delete(new y.Range(_.startLineNumber,_.startColumn-g.length,_.endLineNumber,_.endColumn+C.length))):(s.push(L.EditOperation.delete(new y.Range(_.startLineNumber,_.startColumn-g.length,_.startLineNumber,_.startColumn))),s.push(L.EditOperation.delete(new y.Range(_.endLineNumber,_.endColumn,_.endLineNumber,_.endColumn+C.length)))),s}static _createAddBlockCommentOperations(_,g,C,s){const i=[];return y.Range.isEmpty(_)?i.push(L.EditOperation.replace(new y.Range(_.startLineNumber,_.startColumn,_.endLineNumber,_.endColumn),g+" "+C)):(i.push(L.EditOperation.insert(new k.Position(_.startLineNumber,_.startColumn),g+(s?" ":""))),i.push(L.EditOperation.insert(new k.Position(_.endLineNumber,_.endColumn),(s?" ":"")+C))),i}getEditOperations(_,g){const C=this._selection.startLineNumber,s=this._selection.startColumn;_.tokenization.tokenizeIfCheap(C);const i=_.getLanguageIdAtPosition(C,s),n=this.languageConfigurationService.getLanguageConfiguration(i).comments;!n||!n.blockCommentStartToken||!n.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,n.blockCommentStartToken,n.blockCommentEndToken,this._insertSpace,_,g)}computeCursorState(_,g){const C=g.getInverseEditOperations();if(C.length===2){const s=C[0],i=C[1];return new D.Selection(s.range.endLineNumber,s.range.endColumn,i.range.startLineNumber,i.range.startColumn)}else{const s=C[0].range,i=this._usedEndToken?-this._usedEndToken.length-1:0;return new D.Selection(s.endLineNumber,s.endColumn+i,s.endLineNumber,s.endColumn+i)}}}e.BlockCommentCommand=S}),define(ne[539],se([1,0,11,73,12,5,24,290]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineCommentCommand=void 0;class _{constructor(C,s,i,n,t,a,u){this.languageConfigurationService=C,this._selection=s,this._tabSize=i,this._type=n,this._insertSpace=t,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=a,this._ignoreFirstLine=u||!1}static _gatherPreflightCommentStrings(C,s,i,n){C.tokenization.tokenizeIfCheap(s);const t=C.getLanguageIdAtPosition(s,1),a=n.getLanguageConfiguration(t).comments,u=a?a.lineCommentToken:null;if(!u)return null;const h=[];for(let r=0,c=i-s+1;rt?s[h].commentStrOffset=a-1:s[h].commentStrOffset=a}}}e.LineCommentCommand=_}),define(ne[540],se([1,0,5,24]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DragAndDropCommand=void 0;class y{constructor(S,f,_){this.selection=S,this.targetPosition=f,this.copy=_,this.targetSelection=null}getEditOperations(S,f){const _=S.getValueInRange(this.selection);if(this.copy||f.addEditOperation(this.selection,null),f.addEditOperation(new L.Range(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),_),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new k.Selection(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new k.Selection(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber0){const f=[];for(let C=0;CL.Range.compareRangesUsingStarts(C.range,s.range));const _=[];let g=f[0];for(let C=1;C0){const h=[],r=a.caseOps.length;let c=0;for(let o=0,d=u.length;o=r){h.push(u.slice(o));break}switch(a.caseOps[c]){case"U":h.push(u[o].toUpperCase());break;case"u":h.push(u[o].toUpperCase()),c++;break;case"L":h.push(u[o].toLowerCase());break;case"l":h.push(u[o].toLowerCase()),c++;break;default:h.push(u[o])}}u=h.join("")}i+=u}return i}static _substitute(C,s){if(s===null)return"";if(C===0)return s[0];let i="";for(;C>0;){if(C=n)break;const a=g.charCodeAt(i);switch(a){case 92:s.emitUnchanged(i-1),s.emitStatic("\\",i+1);break;case 110:s.emitUnchanged(i-1),s.emitStatic(` -`,i+1);break;case 116:s.emitUnchanged(i-1),s.emitStatic(" ",i+1);break;case 117:case 85:case 108:case 76:s.emitUnchanged(i-1),s.emitStatic("",i+1),C.push(String.fromCharCode(a));break}continue}if(t===36){if(i++,i>=n)break;const a=g.charCodeAt(i);if(a===36){s.emitUnchanged(i-1),s.emitStatic("$",i+1);continue}if(a===48||a===38){s.emitUnchanged(i-1),s.emitMatchIndex(0,i+1,C),C.length=0;continue}if(49<=a&&a<=57){let u=a-48;if(i+1e.MAX_FOLDING_REGIONS)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=f,this._endIndexes=_,this._collapseStates=new k(f.length),this._userDefinedStates=new k(f.length),this._recoveredStates=new k(f.length),this._types=g,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const f=[],_=(g,C)=>{const s=f[f.length-1];return this.getStartLineNumber(s)<=g&&this.getEndLineNumber(s)>=C};for(let g=0,C=this._startIndexes.length;ge.MAX_LINE_NUMBER||i>e.MAX_LINE_NUMBER)throw new Error("startLineNumber or endLineNumber must not exceed "+e.MAX_LINE_NUMBER);for(;f.length>0&&!_(s,i);)f.pop();const n=f.length>0?f[f.length-1]:-1;f.push(g),this._startIndexes[g]=s+((n&255)<<24),this._endIndexes[g]=i+((n&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(f){return this._startIndexes[f]&e.MAX_LINE_NUMBER}getEndLineNumber(f){return this._endIndexes[f]&e.MAX_LINE_NUMBER}getType(f){return this._types?this._types[f]:void 0}hasTypes(){return!!this._types}isCollapsed(f){return this._collapseStates.get(f)}setCollapsed(f,_){this._collapseStates.set(f,_)}isUserDefined(f){return this._userDefinedStates.get(f)}setUserDefined(f,_){return this._userDefinedStates.set(f,_)}isRecovered(f){return this._recoveredStates.get(f)}setRecovered(f,_){return this._recoveredStates.set(f,_)}getSource(f){return this.isUserDefined(f)?1:this.isRecovered(f)?2:0}setSource(f,_){_===1?(this.setUserDefined(f,!0),this.setRecovered(f,!1)):_===2?(this.setUserDefined(f,!1),this.setRecovered(f,!0)):(this.setUserDefined(f,!1),this.setRecovered(f,!1))}setCollapsedAllOfType(f,_){let g=!1;if(this._types)for(let C=0;C>>24)+((this._endIndexes[f]&L)>>>16);return _===e.MAX_FOLDING_REGIONS?-1:_}contains(f,_){return this.getStartLineNumber(f)<=_&&this.getEndLineNumber(f)>=_}findIndex(f){let _=0,g=this._startIndexes.length;if(g===0)return-1;for(;_=0){if(this.getEndLineNumber(_)>=f)return _;for(_=this.getParentIndex(_);_!==-1;){if(this.contains(_,f))return _;_=this.getParentIndex(_)}}return-1}toString(){const f=[];for(let _=0;_Array.isArray(d)?p=>pp=u.startLineNumber))a&&a.startLineNumber===u.startLineNumber?(u.source===1?d=u:(d=a,d.isCollapsed=u.isCollapsed&&a.endLineNumber===u.endLineNumber,d.source=0),a=s(++n)):(d=u,u.isCollapsed&&u.source===0&&(d.source=2)),u=i(++t);else{let l=t,p=u;for(;;){if(!p||p.startLineNumber>a.endLineNumber){d=a;break}if(p.source===1&&p.endLineNumber>a.endLineNumber)break;p=i(++l)}a=s(++n)}if(d){for(;r&&r.endLineNumberd.startLineNumber&&d.startLineNumber>c&&d.endLineNumber<=g&&(!r||r.endLineNumber>=d.endLineNumber)&&(o.push(d),c=d.startLineNumber,r&&h.push(r),r=d)}}return o}}e.FoldingRegions=y;class D{constructor(f,_){this.ranges=f,this.index=_}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(f){return f.startLineNumber<=this.startLineNumber&&f.endLineNumber>=this.endLineNumber}containsLine(f){return this.startLineNumber<=f&&f<=this.endLineNumber}}e.FoldingRegion=D}),define(ne[291],se([1,0,6,182,143]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNextFoldLine=e.getPreviousFoldLine=e.getParentFoldLine=e.setCollapseStateForType=e.setCollapseStateForMatchingLines=e.setCollapseStateForRest=e.setCollapseStateAtLevel=e.setCollapseStateUp=e.setCollapseStateLevelsUp=e.setCollapseStateLevelsDown=e.toggleCollapseState=e.FoldingModel=void 0;class D{get regions(){return this._regions}get textModel(){return this._textModel}constructor(r,c){this._updateEventEmitter=new L.Emitter,this.onDidChange=this._updateEventEmitter.event,this._textModel=r,this._decorationProvider=c,this._regions=new k.FoldingRegions(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(r){if(!r.length)return;r=r.sort((o,d)=>o.regionIndex-d.regionIndex);const c={};this._decorationProvider.changeDecorations(o=>{let d=0,l=-1,p=-1;const m=v=>{for(;dp&&(p=b),d++}};for(const v of r){const b=v.regionIndex,w=this._editorDecorationIds[b];if(w&&!c[w]){c[w]=!0,m(b);const E=!this._regions.isCollapsed(b);this._regions.setCollapsed(b,E),l=Math.max(l,this._regions.getEndLineNumber(b))}}m(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:r})}removeManualRanges(r){const c=new Array,o=d=>{for(const l of r)if(!(l.startLineNumber>d.endLineNumber||d.startLineNumber>l.endLineNumber))return!0;return!1};for(let d=0;do&&(o=m)}this._decorationProvider.changeDecorations(d=>this._editorDecorationIds=d.deltaDecorations(this._editorDecorationIds,c)),this._regions=r,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(r=[]){const c=(d,l)=>{for(const p of r)if(d=p.endLineNumber||p.startLineNumber<1||p.endLineNumber>o)continue;const m=this._getLinesChecksum(p.startLineNumber+1,p.endLineNumber);c.push({startLineNumber:p.startLineNumber,endLineNumber:p.endLineNumber,isCollapsed:p.isCollapsed,source:p.source,checksum:m})}return c.length>0?c:void 0}applyMemento(r){var c,o;if(!Array.isArray(r))return;const d=[],l=this._textModel.getLineCount();for(const m of r){if(m.startLineNumber>=m.endLineNumber||m.startLineNumber<1||m.endLineNumber>l)continue;const v=this._getLinesChecksum(m.startLineNumber+1,m.endLineNumber);(!m.checksum||v===m.checksum)&&d.push({startLineNumber:m.startLineNumber,endLineNumber:m.endLineNumber,type:void 0,isCollapsed:(c=m.isCollapsed)!==null&&c!==void 0?c:!0,source:(o=m.source)!==null&&o!==void 0?o:0})}const p=k.FoldingRegions.sanitizeAndMerge(this._regions,d,l);this.updatePost(k.FoldingRegions.fromFoldRanges(p))}_getLinesChecksum(r,c){return(0,y.hash)(this._textModel.getLineContent(r)+this._textModel.getLineContent(c))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(r,c){const o=[];if(this._regions){let d=this._regions.findRange(r),l=1;for(;d>=0;){const p=this._regions.toRegion(d);(!c||c(p,l))&&o.push(p),l++,d=p.parentIndex}}return o}getRegionAtLine(r){if(this._regions){const c=this._regions.findRange(r);if(c>=0)return this._regions.toRegion(c)}return null}getRegionsInside(r,c){const o=[],d=r?r.regionIndex+1:0,l=r?r.endLineNumber:Number.MAX_VALUE;if(c&&c.length===2){const p=[];for(let m=d,v=this._regions.length;m0&&!b.containedBy(p[p.length-1]);)p.pop();p.push(b),c(b,p.length)&&o.push(b)}else break}}else for(let p=d,m=this._regions.length;p1){const m=h.getRegionsInside(l,(v,b)=>v.isCollapsed!==p&&b0)for(const l of o){const p=h.getRegionAtLine(l);if(p&&(p.isCollapsed!==r&&d.push(p),c>1)){const m=h.getRegionsInside(p,(v,b)=>v.isCollapsed!==r&&bp.isCollapsed!==r&&mm.isCollapsed!==r&&v<=c);d.push(...p)}h.toggleCollapseState(d)}e.setCollapseStateLevelsUp=_;function g(h,r,c){const o=[];for(const d of c){const l=h.getAllRegionsAtLine(d,p=>p.isCollapsed!==r);l.length>0&&o.push(l[0])}h.toggleCollapseState(o)}e.setCollapseStateUp=g;function C(h,r,c,o){const d=(p,m)=>m===r&&p.isCollapsed!==c&&!o.some(v=>p.containsLine(v)),l=h.getRegionsInside(null,d);h.toggleCollapseState(l)}e.setCollapseStateAtLevel=C;function s(h,r,c){const o=[];for(const p of c){const m=h.getAllRegionsAtLine(p,void 0);m.length>0&&o.push(m[0])}const d=p=>o.every(m=>!m.containedBy(p)&&!p.containedBy(m))&&p.isCollapsed!==r,l=h.getRegionsInside(null,d);h.toggleCollapseState(l)}e.setCollapseStateForRest=s;function i(h,r,c){const o=h.textModel,d=h.regions,l=[];for(let p=d.length-1;p>=0;p--)if(c!==d.isCollapsed(p)){const m=d.getStartLineNumber(p);r.test(o.getLineContent(m))&&l.push(d.toRegion(p))}h.toggleCollapseState(l)}e.setCollapseStateForMatchingLines=i;function n(h,r,c){const o=h.regions,d=[];for(let l=o.length-1;l>=0;l--)c!==o.isCollapsed(l)&&r===o.getType(l)&&d.push(o.toRegion(l));h.toggleCollapseState(d)}e.setCollapseStateForType=n;function t(h,r){let c=null;const o=r.getRegionAtLine(h);if(o!==null&&(c=o.startLineNumber,h===c)){const d=o.parentIndex;d!==-1?c=r.regions.getStartLineNumber(d):c=null}return c}e.getParentFoldLine=t;function a(h,r){let c=r.getRegionAtLine(h);if(c!==null&&c.startLineNumber===h){if(h!==c.startLineNumber)return c.startLineNumber;{const o=c.parentIndex;let d=0;for(o!==-1&&(d=r.regions.getStartLineNumber(c.parentIndex));c!==null;)if(c.regionIndex>0){if(c=r.regions.toRegion(c.regionIndex-1),c.startLineNumber<=d)return null;if(c.parentIndex===o)return c.startLineNumber}else return null}}else if(r.regions.length>0)for(c=r.regions.toRegion(r.regions.length-1);c!==null;){if(c.startLineNumber0?c=r.regions.toRegion(c.regionIndex-1):c=null}return null}e.getPreviousFoldLine=a;function u(h,r){let c=r.getRegionAtLine(h);if(c!==null&&c.startLineNumber===h){const o=c.parentIndex;let d=0;if(o!==-1)d=r.regions.getEndLineNumber(c.parentIndex);else{if(r.regions.length===0)return null;d=r.regions.getEndLineNumber(r.regions.length-1)}for(;c!==null;)if(c.regionIndex=d)return null;if(c.parentIndex===o)return c.startLineNumber}else return null}else if(r.regions.length>0)for(c=r.regions.toRegion(0);c!==null;){if(c.startLineNumber>h)return c.startLineNumber;c.regionIndexthis.updateHiddenRanges()),this._hiddenRanges=[],C.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(C){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=C.changes.some(s=>s.range.endLineNumber!==s.range.startLineNumber||(0,D.countEOL)(s.text)[0]!==0))}updateHiddenRanges(){let C=!1;const s=[];let i=0,n=0,t=Number.MAX_VALUE,a=-1;const u=this._foldingModel.regions;for(;i0}isHidden(C){return _(this._hiddenRanges,C)!==null}adjustSelections(C){let s=!1;const i=this._foldingModel.textModel;let n=null;const t=a=>((!n||!f(a,n))&&(n=_(this._hiddenRanges,a)),n?n.startLineNumber-1:null);for(let a=0,u=C.length;a0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}e.HiddenRangeModel=S;function f(g,C){return g>=C.startLineNumber&&g<=C.endLineNumber}function _(g,C){const s=(0,L.findFirstInSorted)(g,i=>C=0&&g[s].endLineNumber>=C?g[s]:null}}),define(ne[292],se([1,0,207,182]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.computeRanges=e.RangesCollector=e.IndentRangeProvider=void 0;const y=5e3,D="indent";class S{constructor(s,i,n){this.editorModel=s,this.languageConfigurationService=i,this.foldingRangesLimit=n,this.id=D}dispose(){}compute(s){const i=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,n=i&&!!i.offSide,t=i&&i.markers;return Promise.resolve(g(this.editorModel,n,t,this.foldingRangesLimit))}}e.IndentRangeProvider=S;class f{constructor(s){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=s}insertFirst(s,i,n){if(s>k.MAX_LINE_NUMBER||i>k.MAX_LINE_NUMBER)return;const t=this._length;this._startIndexes[t]=s,this._endIndexes[t]=i,this._length++,n<1e3&&(this._indentOccurrences[n]=(this._indentOccurrences[n]||0)+1)}toIndentRanges(s){const i=this._foldingRangesLimit.limit;if(this._length<=i){this._foldingRangesLimit.update(this._length,!1);const n=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let a=this._length-1,u=0;a>=0;a--,u++)n[u]=this._startIndexes[a],t[u]=this._endIndexes[a];return new k.FoldingRegions(n,t)}else{this._foldingRangesLimit.update(this._length,i);let n=0,t=this._indentOccurrences.length;for(let r=0;ri){t=r;break}n+=c}}const a=s.getOptions().tabSize,u=new Uint32Array(i),h=new Uint32Array(i);for(let r=this._length-1,c=0;r>=0;r--){const o=this._startIndexes[r],d=s.getLineContent(o),l=(0,L.computeIndentLevel)(d,a);(l{}};function g(C,s,i,n=_){const t=C.getOptions().tabSize,a=new f(n);let u;i&&(u=new RegExp(`(${i.start.source})|(?:${i.end.source})`));const h=[],r=C.getLineCount()+1;h.push({indent:-1,endAbove:r,line:r});for(let c=C.getLineCount();c>0;c--){const o=C.getLineContent(c),d=(0,L.computeIndentLevel)(o,t);let l=h[h.length-1];if(d===-1){s&&(l.endAbove=c);continue}let p;if(u&&(p=o.match(u)))if(p[1]){let m=h.length-1;for(;m>0&&h[m].indent!==-2;)m--;if(m>0){h.length=m+1,l=h[m],a.insertFirst(c,l.line,d),l.line=c,l.indent=d,l.endAbove=c;continue}}else{h.push({indent:-2,endAbove:c,line:c});continue}if(l.indent>d){do h.pop(),l=h[h.length-1];while(l.indent>d);const m=l.endAbove-1;m-c>=1&&a.insertFirst(c,m,d)}l.indent===d?l.endAbove=c:h.push({indent:d,endAbove:c,line:c})}return a.toIndentRanges(C)}e.computeRanges=g}),define(ne[293],se([1,0,9,2,182]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sanitizeRanges=e.SyntaxRangeProvider=void 0;const D={},S="syntax";class f{constructor(i,n,t,a,u){this.editorModel=i,this.providers=n,this.handleFoldingRangesChange=t,this.foldingRangesLimit=a,this.fallbackRangeProvider=u,this.id=S,this.disposables=new k.DisposableStore,u&&this.disposables.add(u);for(const h of n)typeof h.onDidChange=="function"&&this.disposables.add(h.onDidChange(t))}compute(i){return _(this.providers,this.editorModel,i).then(n=>{var t,a;return n?C(n,this.foldingRangesLimit):(a=(t=this.fallbackRangeProvider)===null||t===void 0?void 0:t.compute(i))!==null&&a!==void 0?a:null})}dispose(){this.disposables.dispose()}}e.SyntaxRangeProvider=f;function _(s,i,n){let t=null;const a=s.map((u,h)=>Promise.resolve(u.provideFoldingRanges(i,D,n)).then(r=>{if(!n.isCancellationRequested&&Array.isArray(r)){Array.isArray(t)||(t=[]);const c=i.getLineCount();for(const o of r)o.start>0&&o.end>o.start&&o.end<=c&&t.push({start:o.start,end:o.end,rank:h,kind:o.kind})}},L.onUnexpectedExternalError));return Promise.all(a).then(u=>t)}class g{constructor(i){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=i}add(i,n,t,a){if(i>y.MAX_LINE_NUMBER||n>y.MAX_LINE_NUMBER)return;const u=this._length;this._startIndexes[u]=i,this._endIndexes[u]=n,this._nestingLevels[u]=a,this._types[u]=t,this._length++,a<30&&(this._nestingLevelCounts[a]=(this._nestingLevelCounts[a]||0)+1)}toIndentRanges(){const i=this._foldingRangesLimit.limit;if(this._length<=i){this._foldingRangesLimit.update(this._length,!1);const n=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let a=0;ai){t=r;break}n+=c}}const a=new Uint32Array(i),u=new Uint32Array(i),h=[];for(let r=0,c=0;r{let c=h.start-r.start;return c===0&&(c=h.rank-r.rank),c}),t=new g(i);let a;const u=[];for(const h of n)if(!a)a=h,t.add(h.start,h.end,h.kind&&h.kind.value,u.length);else if(h.start>a.start)if(h.end<=a.end)u.push(a),a=h,t.add(h.start,h.end,h.kind&&h.kind.value,u.length);else{if(h.start>a.end){do a=u.pop();while(a&&h.start>a.end);a&&u.push(a),a=h}t.add(h.start,h.end,h.kind&&h.kind.value,u.length)}return t.toIndentRanges()}e.sanitizeRanges=C}),define(ne[294],se([1,0,73,5,108]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FormattingEdit=void 0;class D{static _handleEolEdits(f,_){let g;const C=[];for(const s of _)typeof s.eol=="number"&&(g=s.eol),s.range&&typeof s.text=="string"&&C.push(s);return typeof g=="number"&&f.hasModel()&&f.getModel().pushEOL(g),C}static _isFullModelReplaceEdit(f,_){if(!f.hasModel())return!1;const g=f.getModel(),C=g.validateRange(_.range);return g.getFullModelRange().equalsRange(C)}static execute(f,_,g){g&&f.pushUndoStop();const C=y.StableEditorScrollState.capture(f),s=D._handleEolEdits(f,_);s.length===1&&D._isFullModelReplaceEdit(f,s[0])?f.executeEdits("formatEditsCommand",s.map(i=>L.EditOperation.replace(k.Range.lift(i.range),i.text))):f.executeEdits("formatEditsCommand",s.map(i=>L.EditOperation.replaceMove(k.Range.lift(i.range),i.text))),g&&f.pushUndoStop(),C.restoreRelativeVerticalPositionOfCursor(f)}}e.FormattingEdit=D}),define(ne[103],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverParticipantRegistry=e.HoverForeignElementAnchor=e.HoverRangeAnchor=void 0;class L{constructor(D,S,f,_){this.priority=D,this.range=S,this.initialMousePosX=f,this.initialMousePosY=_,this.type=1}equals(D){return D.type===1&&this.range.equalsRange(D.range)}canAdoptVisibleHover(D,S){return D.type===1&&S.lineNumber===this.range.startLineNumber}}e.HoverRangeAnchor=L;class k{constructor(D,S,f,_,g,C){this.priority=D,this.owner=S,this.range=f,this.initialMousePosX=_,this.initialMousePosY=g,this.supportsMarkerHover=C,this.type=2}equals(D){return D.type===2&&this.owner===D.owner}canAdoptVisibleHover(D,S){return D.type===2&&this.owner===D.owner}}e.HoverForeignElementAnchor=k,e.HoverParticipantRegistry=new class{constructor(){this._participants=[]}register(D){this._participants.push(D)}getAll(){return this._participants}}}),define(ne[544],se([1,0,24]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InPlaceReplaceCommand=void 0;class k{constructor(D,S,f){this._editRange=D,this._originalSelection=S,this._text=f}getEditOperations(D,S){S.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(D,S){const _=S.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new L.Selection(_.endLineNumber,Math.min(this._originalSelection.positionColumn,_.endColumn),_.endLineNumber,Math.min(this._originalSelection.positionColumn,_.endColumn)):new L.Selection(_.endLineNumber,_.endColumn-this._text.length,_.endLineNumber,_.endColumn)}}e.InPlaceReplaceCommand=k}),define(ne[295],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.generateIndent=e.getSpaceCnt=void 0;function L(y,D){let S=0;for(let f=0;f{const o=S.Range.lift(c.range);return{startOffset:h.getOffset(o.getStartPosition()),endOffset:h.getOffset(o.getEndPosition()),text:c.text}});r.sort((c,o)=>o.startOffset-c.startOffset);for(const c of r)a=a.substring(0,c.startOffset)+c.text+a.substring(c.endOffset);return a}e.applyEdits=f;class _{constructor(u){this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let h=0;hh)throw new L.BugIndicatingError(`startColumn ${u} cannot be after endColumnExclusive ${h}`)}toRange(u){return new S.Range(u,this.startColumn,u,this.endColumnExclusive)}equals(u){return this.startColumn===u.startColumn&&this.endColumnExclusive===u.endColumnExclusive}}e.ColumnRange=s;function i(a,u){const h=new k.DisposableStore,r=a.createDecorationsCollection();return h.add((0,y.autorunOpts)({debugName:()=>`Apply decorations from ${u.debugName}`},c=>{const o=u.read(c);r.set(o)})),h.add({dispose:()=>{r.clear()}}),h}e.applyObservableDecorations=i;function n(a,u){return new D.Position(a.lineNumber+u.lineNumber-1,u.lineNumber===1?a.column+u.column-1:u.column)}e.addPositions=n;function t(a){let u=1,h=1;for(const r of a)r===` -`?(u++,h=1):h++;return new D.Position(u,h)}e.lengthOfText=t}),define(ne[215],se([1,0,151]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ghostTextOrReplacementEquals=e.GhostTextReplacement=e.GhostTextPart=e.GhostText=void 0;class k{constructor(_,g){this.lineNumber=_,this.parts=g}equals(_){return this.lineNumber===_.lineNumber&&this.parts.length===_.parts.length&&this.parts.every((g,C)=>g.equals(_.parts[C]))}renderForScreenReader(_){if(this.parts.length===0)return"";const g=this.parts[this.parts.length-1],C=_.substr(0,g.column-1);return(0,L.applyEdits)(C,this.parts.map(i=>({range:{startLineNumber:1,endLineNumber:1,startColumn:i.column,endColumn:i.column},text:i.lines.join(` -`)}))).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(_=>_.lines.length===0)}get lineCount(){return 1+this.parts.reduce((_,g)=>_+g.lines.length-1,0)}}e.GhostText=k;class y{constructor(_,g,C){this.column=_,this.lines=g,this.preview=C}equals(_){return this.column===_.column&&this.lines.length===_.lines.length&&this.lines.every((g,C)=>g===_.lines[C])}}e.GhostTextPart=y;class D{constructor(_,g,C,s=0){this.lineNumber=_,this.columnRange=g,this.newLines=C,this.additionalReservedLineCount=s,this.parts=[new y(this.columnRange.endColumnExclusive,this.newLines,!1)]}renderForScreenReader(_){return this.newLines.join(` -`)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(_=>_.lines.length===0)}equals(_){return this.lineNumber===_.lineNumber&&this.columnRange.equals(_.columnRange)&&this.newLines.length===_.newLines.length&&this.newLines.every((g,C)=>g===_.newLines[C])&&this.additionalReservedLineCount===_.additionalReservedLineCount}}e.GhostTextReplacement=D;function S(f,_){return f===_?!0:!f||!_?!1:f instanceof k&&_ instanceof k||f instanceof D&&_ instanceof D?f.equals(_):!1}e.ghostTextOrReplacementEquals=S}),define(ne[296],se([1,0,168,11,5,215,151]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SingleTextEdit=void 0;class f{constructor(t,a){this.range=t,this.text=a}removeCommonPrefix(t,a){const u=a?this.range.intersectRanges(a):this.range;if(!u)return this;const h=t.getValueInRange(u,1),r=(0,k.commonPrefixLength)(h,this.text),c=(0,S.addPositions)(this.range.getStartPosition(),(0,S.lengthOfText)(h.substring(0,r))),o=this.text.substring(r),d=y.Range.fromPositions(c,this.range.getEndPosition());return new f(d,o)}augments(t){return this.text.startsWith(t.text)&&_(this.range,t.range)}computeGhostText(t,a,u,h=0){let r=this.removeCommonPrefix(t);if(r.range.endLineNumber!==r.range.startLineNumber)return;const c=t.getLineContent(r.range.startLineNumber),o=(0,k.getLeadingWhitespace)(c).length;if(r.range.startColumn-1<=o){const w=(0,k.getLeadingWhitespace)(r.text).length,E=c.substring(r.range.startColumn-1,o),[I,M]=[r.range.getStartPosition(),r.range.getEndPosition()],P=I.column+E.length<=M.column?I.delta(0,E.length):M,x=y.Range.fromPositions(P,M),T=r.text.startsWith(E)?r.text.substring(E.length):r.text.substring(w);r=new f(x,T)}const l=t.getValueInRange(r.range),p=C(l,r.text);if(!p)return;const m=r.range.startLineNumber,v=new Array;if(a==="prefix"){const w=p.filter(E=>E.originalLength===0);if(w.length>1||w.length===1&&w[0].originalStart!==l.length)return}const b=r.text.length-h;for(const w of p){const E=r.range.startColumn+w.originalStart+w.originalLength;if(a==="subwordSmart"&&u&&u.lineNumber===r.range.startLineNumber&&E0)return;if(w.modifiedLength===0)continue;const I=w.modifiedStart+w.modifiedLength,M=Math.max(w.modifiedStart,Math.min(I,b)),P=r.text.substring(w.modifiedStart,M),x=r.text.substring(M,Math.max(w.modifiedStart,I));if(P.length>0){const T=(0,k.splitLines)(P);v.push(new D.GhostTextPart(E,T,!1))}if(x.length>0){const T=(0,k.splitLines)(x);v.push(new D.GhostTextPart(E,T,!0))}}return new D.GhostText(m,v)}}e.SingleTextEdit=f;function _(n,t){return t.getStartPosition().equals(n.getStartPosition())&&t.getEndPosition().isBeforeOrEqual(n.getEndPosition())}let g;function C(n,t){if(g?.originalValue===n&&g?.newValue===t)return g?.changes;{let a=i(n,t,!0);if(a){const u=s(a);if(u>0){const h=i(n,t,!1);h&&s(h)5e3||t.length>5e3)return;function u(l){let p=0;for(let m=0,v=l.length;mp&&(p=b)}return p}const h=Math.max(u(n),u(t));function r(l){if(l<0)throw new Error("unexpected");return h+l+1}function c(l){let p=0,m=0;const v=new Int32Array(l.length);for(let b=0,w=l.length;bo},{getElements:()=>d}).ComputeDiff(!1).changes}}),define(ne[545],se([1,0,5,24]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CopyLinesCommand=void 0;class y{constructor(S,f,_){this._selection=S,this._isCopyingDown=f,this._noop=_||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(S,f){let _=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,_.startLineNumber<_.endLineNumber&&_.endColumn===1&&(this._endLineNumberDelta=1,_=_.setEndPosition(_.endLineNumber-1,S.getLineMaxColumn(_.endLineNumber-1)));const g=[];for(let s=_.startLineNumber;s<=_.endLineNumber;s++)g.push(S.getLineContent(s));const C=g.join(` -`);C===""&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?f.addEditOperation(new L.Range(_.endLineNumber,S.getLineMaxColumn(_.endLineNumber),_.endLineNumber+1,1),_.endLineNumber===S.getLineCount()?"":` -`):this._isCopyingDown?f.addEditOperation(new L.Range(_.startLineNumber,1,_.startLineNumber,1),C+` -`):f.addEditOperation(new L.Range(_.endLineNumber,S.getLineMaxColumn(_.endLineNumber),_.endLineNumber,S.getLineMaxColumn(_.endLineNumber)),` -`+C),this._selectionId=f.trackSelection(_),this._selectionDirection=this._selection.getDirection()}computeCursorState(S,f){let _=f.getTrackedSelection(this._selectionId);if(this._startLineNumberDelta!==0||this._endLineNumberDelta!==0){let g=_.startLineNumber,C=_.startColumn,s=_.endLineNumber,i=_.endColumn;this._startLineNumberDelta!==0&&(g=g+this._startLineNumberDelta,C=1),this._endLineNumberDelta!==0&&(s=s+this._endLineNumberDelta,i=1),_=k.Selection.createWithDirection(g,C,s,i,this._selectionDirection)}return _}}e.CopyLinesCommand=y}),define(ne[546],se([1,0,73,5]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SortLinesCommand=void 0;class y{static getCollator(){return y._COLLATOR||(y._COLLATOR=new Intl.Collator),y._COLLATOR}constructor(_,g){this.selection=_,this.descending=g,this.selectionId=null}getEditOperations(_,g){const C=S(_,this.selection,this.descending);C&&g.addEditOperation(C.range,C.text),this.selectionId=g.trackSelection(this.selection)}computeCursorState(_,g){return g.getTrackedSelection(this.selectionId)}static canRun(_,g,C){if(_===null)return!1;const s=D(_,g,C);if(!s)return!1;for(let i=0,n=s.before.length;i=s)return null;const i=[];for(let t=C;t<=s;t++)i.push(f.getLineContent(t));let n=i.slice(0);return n.sort(y.getCollator().compare),g===!0&&(n=n.reverse()),{startLineNumber:C,endLineNumber:s,before:i,after:n}}function S(f,_,g){const C=D(f,_,g);return C?L.EditOperation.replace(new k.Range(C.startLineNumber,1,C.endLineNumber,f.getLineMaxColumn(C.endLineNumber)),C.after.join(` -`)):null}}),define(ne[297],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isSemanticColoringEnabled=e.SEMANTIC_HIGHLIGHTING_SETTING_ID=void 0,e.SEMANTIC_HIGHLIGHTING_SETTING_ID="editor.semanticHighlighting";function L(k,y,D){var S;const f=(S=D.getValue(e.SEMANTIC_HIGHLIGHTING_SETTING_ID,{overrideIdentifier:k.getLanguageId(),resource:k.uri}))===null||S===void 0?void 0:S.enabled;return typeof f=="boolean"?f:y.getColorTheme().semanticHighlighting}e.isSemanticColoringEnabled=L}),define(ne[298],se([1,0,64,12,5]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketSelectionRangeProvider=void 0;class D{provideSelectionRanges(f,_){return we(this,void 0,void 0,function*(){const g=[];for(const C of _){const s=[];g.push(s);const i=new Map;yield new Promise(n=>D._bracketsRightYield(n,0,f,C,i)),yield new Promise(n=>D._bracketsLeftYield(n,0,f,C,i,s))}return g})}static _bracketsRightYield(f,_,g,C,s){const i=new Map,n=Date.now();for(;;){if(_>=D._maxRounds){f();break}if(!C){f();break}const t=g.bracketPairs.findNextBracket(C);if(!t){f();break}if(Date.now()-n>D._maxDuration){setTimeout(()=>D._bracketsRightYield(f,_+1,g,C,s));break}if(t.bracketInfo.isOpeningBracket){const u=t.bracketInfo.bracketText,h=i.has(u)?i.get(u):0;i.set(u,h+1)}else{const u=t.bracketInfo.getOpeningBrackets()[0].bracketText;let h=i.has(u)?i.get(u):0;if(h-=1,i.set(u,Math.max(0,h)),h<0){let r=s.get(u);r||(r=new L.LinkedList,s.set(u,r)),r.push(t.range)}}C=t.range.getEndPosition()}}static _bracketsLeftYield(f,_,g,C,s,i){const n=new Map,t=Date.now();for(;;){if(_>=D._maxRounds&&s.size===0){f();break}if(!C){f();break}const a=g.bracketPairs.findPrevBracket(C);if(!a){f();break}if(Date.now()-t>D._maxDuration){setTimeout(()=>D._bracketsLeftYield(f,_+1,g,C,s,i));break}if(a.bracketInfo.isOpeningBracket){const h=a.bracketInfo.bracketText;let r=n.has(h)?n.get(h):0;if(r-=1,n.set(h,Math.max(0,r)),r<0){const c=s.get(h);if(c){const o=c.shift();c.size===0&&s.delete(h);const d=y.Range.fromPositions(a.range.getEndPosition(),o.getStartPosition()),l=y.Range.fromPositions(a.range.getStartPosition(),o.getEndPosition());i.push({range:d}),i.push({range:l}),D._addBracketLeading(g,l,i)}}}else{const h=a.bracketInfo.getOpeningBrackets()[0].bracketText,r=n.has(h)?n.get(h):0;n.set(h,r+1)}C=a.range.getStartPosition()}}static _addBracketLeading(f,_,g){if(_.startLineNumber===_.endLineNumber)return;const C=_.startLineNumber,s=f.getLineFirstNonWhitespaceColumn(C);s!==0&&s!==_.startColumn&&(g.push({range:y.Range.fromPositions(new k.Position(C,s),_.getEndPosition())}),g.push({range:y.Range.fromPositions(new k.Position(C,1),_.getEndPosition())}));const i=C-1;if(i>0){const n=f.getLineFirstNonWhitespaceColumn(i);n===_.startColumn&&n!==f.getLineLastNonWhitespaceColumn(i)&&(g.push({range:y.Range.fromPositions(new k.Position(i,n),_.getEndPosition())}),g.push({range:y.Range.fromPositions(new k.Position(i,1),_.getEndPosition())}))}}}e.BracketSelectionRangeProvider=D,D._maxDuration=30,D._maxRounds=2}),define(ne[547],se([1,0,11,5]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WordSelectionRangeProvider=void 0;class y{constructor(S=!0){this.selectSubwords=S}provideSelectionRanges(S,f){const _=[];for(const g of f){const C=[];_.push(C),this.selectSubwords&&this._addInWordRanges(C,S,g),this._addWordRanges(C,S,g),this._addWhitespaceLine(C,S,g),C.push({range:S.getFullModelRange()})}return _}_addInWordRanges(S,f,_){const g=f.getWordAtPosition(_);if(!g)return;const{word:C,startColumn:s}=g,i=_.column-s;let n=i,t=i,a=0;for(;n>=0;n--){const u=C.charCodeAt(n);if(n!==i&&(u===95||u===45))break;if((0,L.isLowerAsciiLetter)(u)&&(0,L.isUpperAsciiLetter)(a))break;a=u}for(n+=1;t0&&f.getLineFirstNonWhitespaceColumn(_.lineNumber)===0&&f.getLineLastNonWhitespaceColumn(_.lineNumber)===0&&S.push({range:new k.Range(_.lineNumber,1,_.lineNumber,f.getLineMaxColumn(_.lineNumber))})}}e.WordSelectionRangeProvider=y}),define(ne[128],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetParser=e.TextmateSnippet=e.Variable=e.FormatString=e.Transform=e.Choice=e.Placeholder=e.TransformableMarker=e.Text=e.Marker=e.Scanner=void 0;class L{constructor(){this.value="",this.pos=0}static isDigitCharacter(a){return a>=48&&a<=57}static isVariableCharacter(a){return a===95||a>=97&&a<=122||a>=65&&a<=90}text(a){this.value=a,this.pos=0}tokenText(a){return this.value.substr(a.pos,a.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const a=this.pos;let u=0,h=this.value.charCodeAt(a),r;if(r=L._table[h],typeof r=="number")return this.pos+=1,{type:r,pos:a,len:1};if(L.isDigitCharacter(h)){r=8;do u+=1,h=this.value.charCodeAt(a+u);while(L.isDigitCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}if(L.isVariableCharacter(h)){r=9;do h=this.value.charCodeAt(a+ ++u);while(L.isVariableCharacter(h)||L.isDigitCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}r=10;do u+=1,h=this.value.charCodeAt(a+u);while(!isNaN(h)&&typeof L._table[h]>"u"&&!L.isDigitCharacter(h)&&!L.isVariableCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}}e.Scanner=L,L._table={[36]:0,[58]:1,[44]:2,[123]:3,[125]:4,[92]:5,[47]:6,[124]:7,[43]:11,[45]:12,[63]:13};class k{constructor(){this._children=[]}appendChild(a){return a instanceof y&&this._children[this._children.length-1]instanceof y?this._children[this._children.length-1].value+=a.value:(a.parent=this,this._children.push(a)),this}replace(a,u){const{parent:h}=a,r=h.children.indexOf(a),c=h.children.slice(0);c.splice(r,1,...u),h._children=c,function o(d,l){for(const p of d)p.parent=l,o(p.children,p)}(u,h)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let a=this;for(;;){if(!a)return;if(a instanceof i)return a;a=a.parent}}toString(){return this.children.reduce((a,u)=>a+u.toString(),"")}len(){return 0}}e.Marker=k;class y extends k{constructor(a){super(),this.value=a}toString(){return this.value}len(){return this.value.length}clone(){return new y(this.value)}}e.Text=y;class D extends k{}e.TransformableMarker=D;class S extends D{static compareByIndex(a,u){return a.index===u.index?0:a.isFinalTabstop?1:u.isFinalTabstop||a.indexu.index?1:0}constructor(a){super(),this.index=a}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof f?this._children[0]:void 0}clone(){const a=new S(this.index);return this.transform&&(a.transform=this.transform.clone()),a._children=this.children.map(u=>u.clone()),a}}e.Placeholder=S;class f extends k{constructor(){super(...arguments),this.options=[]}appendChild(a){return a instanceof y&&(a.parent=this,this.options.push(a)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const a=new f;return this.options.forEach(a.appendChild,a),a}}e.Choice=f;class _ extends k{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(a){const u=this;let h=!1,r=a.replace(this.regexp,function(){return h=!0,u._replace(Array.prototype.slice.call(arguments,0,-2))});return!h&&this._children.some(c=>c instanceof g&&!!c.elseValue)&&(r=this._replace([])),r}_replace(a){let u="";for(const h of this._children)if(h instanceof g){let r=a[h.index]||"";r=h.resolve(r),u+=r}else u+=h.toString();return u}toString(){return""}clone(){const a=new _;return a.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),a._children=this.children.map(u=>u.clone()),a}}e.Transform=_;class g extends k{constructor(a,u,h,r){super(),this.index=a,this.shorthandName=u,this.ifValue=h,this.elseValue=r}resolve(a){return this.shorthandName==="upcase"?a?a.toLocaleUpperCase():"":this.shorthandName==="downcase"?a?a.toLocaleLowerCase():"":this.shorthandName==="capitalize"?a?a[0].toLocaleUpperCase()+a.substr(1):"":this.shorthandName==="pascalcase"?a?this._toPascalCase(a):"":this.shorthandName==="camelcase"?a?this._toCamelCase(a):"":a&&typeof this.ifValue=="string"?this.ifValue:!a&&typeof this.elseValue=="string"?this.elseValue:a||""}_toPascalCase(a){const u=a.match(/[a-z0-9]+/gi);return u?u.map(h=>h.charAt(0).toUpperCase()+h.substr(1)).join(""):a}_toCamelCase(a){const u=a.match(/[a-z0-9]+/gi);return u?u.map((h,r)=>r===0?h.charAt(0).toLowerCase()+h.substr(1):h.charAt(0).toUpperCase()+h.substr(1)).join(""):a}clone(){return new g(this.index,this.shorthandName,this.ifValue,this.elseValue)}}e.FormatString=g;class C extends D{constructor(a){super(),this.name=a}resolve(a){let u=a.resolve(this);return this.transform&&(u=this.transform.resolve(u||"")),u!==void 0?(this._children=[new y(u)],!0):!1}clone(){const a=new C(this.name);return this.transform&&(a.transform=this.transform.clone()),a._children=this.children.map(u=>u.clone()),a}}e.Variable=C;function s(t,a){const u=[...t];for(;u.length>0;){const h=u.shift();if(!a(h))break;u.unshift(...h.children)}}class i extends k{get placeholderInfo(){if(!this._placeholders){const a=[];let u;this.walk(function(h){return h instanceof S&&(a.push(h),u=!u||u.indexr===a?(h=!0,!1):(u+=r.len(),!0)),h?u:-1}fullLen(a){let u=0;return s([a],h=>(u+=h.len(),!0)),u}enclosingPlaceholders(a){const u=[];let{parent:h}=a;for(;h;)h instanceof S&&u.push(h),h=h.parent;return u}resolveVariables(a){return this.walk(u=>(u instanceof C&&u.resolve(a)&&(this._placeholders=void 0),!0)),this}appendChild(a){return this._placeholders=void 0,super.appendChild(a)}replace(a,u){return this._placeholders=void 0,super.replace(a,u)}clone(){const a=new i;return this._children=this.children.map(u=>u.clone()),a}walk(a){s(this.children,a)}}e.TextmateSnippet=i;class n{constructor(){this._scanner=new L,this._token={type:14,pos:0,len:0}}static escape(a){return a.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(a){return/\${?CLIPBOARD/.test(a)}parse(a,u,h){const r=new i;return this.parseFragment(a,r),this.ensureFinalTabstop(r,h??!1,u??!1),r}parseFragment(a,u){const h=u.children.length;for(this._scanner.text(a),this._token=this._scanner.next();this._parse(u););const r=new Map,c=[];u.walk(l=>(l instanceof S&&(l.isFinalTabstop?r.set(0,void 0):!r.has(l.index)&&l.children.length>0?r.set(l.index,l.children):c.push(l)),!0));const o=(l,p)=>{const m=r.get(l.index);if(!m)return;const v=new S(l.index);v.transform=l.transform;for(const b of m){const w=b.clone();v.appendChild(w),w instanceof S&&r.has(w.index)&&!p.has(w.index)&&(p.add(w.index),o(w,p),p.delete(w.index))}u.replace(l,[v])},d=new Set;for(const l of c)o(l,d);return u.children.slice(h)}ensureFinalTabstop(a,u,h){(u||h&&a.placeholders.length>0)&&(a.placeholders.find(c=>c.index===0)||a.appendChild(new S(0)))}_accept(a,u){if(a===void 0||this._token.type===a){const h=u?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),h}return!1}_backTo(a){return this._scanner.pos=a.pos+a.len,this._token=a,!1}_until(a){const u=this._token;for(;this._token.type!==a;){if(this._token.type===14)return!1;if(this._token.type===5){const r=this._scanner.next();if(r.type!==0&&r.type!==4&&r.type!==5)return!1}this._token=this._scanner.next()}const h=this._scanner.value.substring(u.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),h}_parse(a){return this._parseEscaped(a)||this._parseTabstopOrVariableName(a)||this._parseComplexPlaceholder(a)||this._parseComplexVariable(a)||this._parseAnything(a)}_parseEscaped(a){let u;return(u=this._accept(5,!0))?(u=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||u,a.appendChild(new y(u)),!0):!1}_parseTabstopOrVariableName(a){let u;const h=this._token;return this._accept(0)&&(u=this._accept(9,!0)||this._accept(8,!0))?(a.appendChild(/^\d+$/.test(u)?new S(Number(u)):new C(u)),!0):this._backTo(h)}_parseComplexPlaceholder(a){let u;const h=this._token;if(!(this._accept(0)&&this._accept(3)&&(u=this._accept(8,!0))))return this._backTo(h);const c=new S(Number(u));if(this._accept(1))for(;;){if(this._accept(4))return a.appendChild(c),!0;if(!this._parse(c))return a.appendChild(new y("${"+u+":")),c.children.forEach(a.appendChild,a),!0}else if(c.index>0&&this._accept(7)){const o=new f;for(;;){if(this._parseChoiceElement(o)){if(this._accept(2))continue;if(this._accept(7)&&(c.appendChild(o),this._accept(4)))return a.appendChild(c),!0}return this._backTo(h),!1}}else return this._accept(6)?this._parseTransform(c)?(a.appendChild(c),!0):(this._backTo(h),!1):this._accept(4)?(a.appendChild(c),!0):this._backTo(h)}_parseChoiceElement(a){const u=this._token,h=[];for(;!(this._token.type===2||this._token.type===7);){let r;if((r=this._accept(5,!0))?r=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||r:r=this._accept(void 0,!0),!r)return this._backTo(u),!1;h.push(r)}return h.length===0?(this._backTo(u),!1):(a.appendChild(new y(h.join(""))),!0)}_parseComplexVariable(a){let u;const h=this._token;if(!(this._accept(0)&&this._accept(3)&&(u=this._accept(9,!0))))return this._backTo(h);const c=new C(u);if(this._accept(1))for(;;){if(this._accept(4))return a.appendChild(c),!0;if(!this._parse(c))return a.appendChild(new y("${"+u+":")),c.children.forEach(a.appendChild,a),!0}else return this._accept(6)?this._parseTransform(c)?(a.appendChild(c),!0):(this._backTo(h),!1):this._accept(4)?(a.appendChild(c),!0):this._backTo(h)}_parseTransform(a){const u=new _;let h="",r="";for(;!this._accept(6);){let c;if(c=this._accept(5,!0)){c=this._accept(6,!0)||c,h+=c;continue}if(this._token.type!==14){h+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let c;if(c=this._accept(5,!0)){c=this._accept(5,!0)||this._accept(6,!0)||c,u.appendChild(new y(c));continue}if(!(this._parseFormatString(u)||this._parseAnything(u)))return!1}for(;!this._accept(4);){if(this._token.type!==14){r+=this._accept(void 0,!0);continue}return!1}try{u.regexp=new RegExp(h,r)}catch{return!1}return a.transform=u,!0}_parseFormatString(a){const u=this._token;if(!this._accept(0))return!1;let h=!1;this._accept(3)&&(h=!0);const r=this._accept(8,!0);if(r)if(h){if(this._accept(4))return a.appendChild(new g(Number(r))),!0;if(!this._accept(1))return this._backTo(u),!1}else return a.appendChild(new g(Number(r))),!0;else return this._backTo(u),!1;if(this._accept(6)){const c=this._accept(9,!0);return!c||!this._accept(4)?(this._backTo(u),!1):(a.appendChild(new g(Number(r),c)),!0)}else if(this._accept(11)){const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,c,void 0)),!0}else if(this._accept(12)){const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,void 0,c)),!0}else if(this._accept(13)){const c=this._until(1);if(c){const o=this._until(4);if(o)return a.appendChild(new g(Number(r),void 0,c,o)),!0}}else{const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,void 0,c)),!0}return this._backTo(u),!1}_parseAnything(a){return this._token.type!==14?(a.appendChild(new y(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}e.SnippetParser=n}),define(ne[299],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyModel=e.StickyElement=e.StickyRange=void 0;class L{constructor(S,f){this.startLineNumber=S,this.endLineNumber=f}}e.StickyRange=L;class k{constructor(S,f,_){this.range=S,this.children=f,this.parent=_}}e.StickyElement=k;class y{constructor(S,f,_,g){this.uri=S,this.version=f,this.element=_,this.outlineProviderId=g}}e.StickyModel=y}),define(ne[300],se([1,0,14,72,11]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompletionModel=e.LineContext=void 0;class D{constructor(_,g){this.leadingLineContent=_,this.characterCountDelta=g}}e.LineContext=D;class S{constructor(_,g,C,s,i,n,t=k.FuzzyScoreOptions.default,a=void 0){this.clipboardText=a,this._snippetCompareFn=S._compareCompletionItems,this._items=_,this._column=g,this._wordDistance=s,this._options=i,this._refilterKind=1,this._lineContext=C,this._fuzzyScoreOptions=t,n==="top"?this._snippetCompareFn=S._compareCompletionItemsSnippetsUp:n==="bottom"&&(this._snippetCompareFn=S._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(_){(this._lineContext.leadingLineContent!==_.leadingLineContent||this._lineContext.characterCountDelta!==_.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta<_.characterCountDelta&&this._filteredItems?2:1,this._lineContext=_)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const _=new Set;for(const[g,C]of this.getItemsByProvider())C.length>0&&C[0].container.incomplete&&_.add(g);return _}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const _=[],{leadingLineContent:g,characterCountDelta:C}=this._lineContext;let s="",i="";const n=this._refilterKind===1?this._items:this._filteredItems,t=[],a=!this._options.filterGraceful||n.length>2e3?k.fuzzyScore:k.fuzzyScoreGracefulAggressive;for(let u=0;u=o)h.score=k.FuzzyScore.Default;else if(typeof h.completion.filterText=="string"){const l=a(s,i,d,h.completion.filterText,h.filterTextLow,0,this._fuzzyScoreOptions);if(!l)continue;(0,y.compareIgnoreCase)(h.completion.filterText,h.textLabel)===0?h.score=l:(h.score=(0,k.anyScore)(s,i,d,h.textLabel,h.labelLow,0),h.score[0]=l[0])}else{const l=a(s,i,d,h.textLabel,h.labelLow,0,this._fuzzyScoreOptions);if(!l)continue;h.score=l}}h.idx=u,h.distance=this._wordDistance.distance(h.position,h.completion),t.push(h),_.push(h.textLabel.length)}this._filteredItems=t.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:_.length?(0,L.quickSelect)(_.length-.85,_,(u,h)=>u-h):0}}static _compareCompletionItems(_,g){return _.score[0]>g.score[0]?-1:_.score[0]g.distance?1:_.idxg.idx?1:0}static _compareCompletionItemsSnippetsDown(_,g){if(_.completion.kind!==g.completion.kind){if(_.completion.kind===27)return 1;if(g.completion.kind===27)return-1}return S._compareCompletionItems(_,g)}static _compareCompletionItemsSnippetsUp(_,g){if(_.completion.kind!==g.completion.kind){if(_.completion.kind===27)return-1;if(g.completion.kind===27)return 1}return S._compareCompletionItems(_,g)}}e.CompletionModel=S}),define(ne[548],se([1,0,14,2,121]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CommitCharacterController=void 0;class D{constructor(f,_,g,C){this._disposables=new k.DisposableStore,this._disposables.add(g.onDidSuggest(s=>{s.completionModel.items.length===0&&this.reset()})),this._disposables.add(g.onDidCancel(s=>{this.reset()})),this._disposables.add(_.onDidShow(()=>this._onItem(_.getFocusedItem()))),this._disposables.add(_.onDidFocus(this._onItem,this)),this._disposables.add(_.onDidHide(this.reset,this)),this._disposables.add(f.onWillType(s=>{if(this._active&&!_.isFrozen()&&g.state!==0){const i=s.charCodeAt(s.length-1);this._active.acceptCharacters.has(i)&&f.getOption(0)&&C(this._active.item)}}))}_onItem(f){if(!f||!(0,L.isNonEmptyArray)(f.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===f.item)return;const _=new y.CharacterSet;for(const g of f.item.completion.commitCharacters)g.length>0&&_.add(g.charCodeAt(0));this._active={acceptCharacters:_,item:f}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}e.CommitCharacterController=D}),define(ne[549],se([1,0,2]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OvertypingCapturer=void 0;class k{constructor(D,S){this._disposables=new L.DisposableStore,this._lastOvertyped=[],this._locked=!1,this._disposables.add(D.onWillType(()=>{if(this._locked||!D.hasModel())return;const f=D.getSelections(),_=f.length;let g=!1;for(let s=0;s<_;s++)if(!f[s].isEmpty()){g=!0;break}if(!g){this._lastOvertyped.length!==0&&(this._lastOvertyped.length=0);return}this._lastOvertyped=[];const C=D.getModel();for(let s=0;s<_;s++){const i=f[s];if(C.getValueLengthInRange(i)>k._maxSelectionLength)return;this._lastOvertyped[s]={value:C.getValueInRange(i),multiline:i.startLineNumber!==i.endLineNumber}}})),this._disposables.add(S.onDidTrigger(f=>{this._locked=!0})),this._disposables.add(S.onDidCancel(f=>{this._locked=!1}))}getLastOvertypedInfo(D){if(D>=0&&D=0?h[r]:h[Math.max(0,~r-1)];let o=s.length;for(const d of s){if(!k.Range.containsRange(d.range,c))break;o-=1}return o}}})}}e.WordDistance=D,D.None=new class extends D{distance(){return 0}}}),define(ne[302],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stateExists=e.findRules=e.substituteMatches=e.createError=e.log=e.sanitize=e.fixCase=e.empty=e.isIAction=e.isString=e.isFuzzyAction=e.isFuzzyActionArr=void 0;function L(t){return Array.isArray(t)}e.isFuzzyActionArr=L;function k(t){return!L(t)}e.isFuzzyAction=k;function y(t){return typeof t=="string"}e.isString=y;function D(t){return!y(t)}e.isIAction=D;function S(t){return!t}e.empty=S;function f(t,a){return t.ignoreCase&&a?a.toLowerCase():a}e.fixCase=f;function _(t){return t.replace(/[&<>'"_]/g,"-")}e.sanitize=_;function g(t,a){console.log(`${t.languageId}: ${a}`)}e.log=g;function C(t,a){return new Error(`${t.languageId}: ${a}`)}e.createError=C;function s(t,a,u,h,r){const c=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g;let o=null;return a.replace(c,function(d,l,p,m,v,b,w,E,I){return S(p)?S(m)?!S(v)&&v0;){const h=t.tokenizer[u];if(h)return h;const r=u.lastIndexOf(".");r<0?u=null:u=u.substr(0,r)}return null}e.findRules=i;function n(t,a){let u=a;for(;u&&u.length>0;){if(t.stateNames[u])return!0;const r=u.lastIndexOf(".");r<0?u=null:u=u.substr(0,r)}return!1}e.stateExists=n}),define(ne[550],se([1,0,302]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compile=void 0;function k(t,a){if(!a||!Array.isArray(a))return!1;for(const u of a)if(!t(u))return!1;return!0}function y(t,a){return typeof t=="boolean"?t:a}function D(t,a){return typeof t=="string"?t:a}function S(t){const a={};for(const u of t)a[u]=!0;return a}function f(t,a=!1){a&&(t=t.map(function(h){return h.toLowerCase()}));const u=S(t);return a?function(h){return u[h.toLowerCase()]!==void 0&&u.hasOwnProperty(h.toLowerCase())}:function(h){return u[h]!==void 0&&u.hasOwnProperty(h)}}function _(t,a){a=a.replace(/@@/g,"");let u=0,h;do h=!1,a=a.replace(/@(\w+)/g,function(c,o){h=!0;let d="";if(typeof t[o]=="string")d=t[o];else if(t[o]&&t[o]instanceof RegExp)d=t[o].source;else throw t[o]===void 0?L.createError(t,"language definition does not contain attribute '"+o+"', used at: "+a):L.createError(t,"attribute reference '"+o+"' must be a string, used at: "+a);return L.empty(d)?"":"(?:"+d+")"}),u++;while(h&&u<5);a=a.replace(/\x01/g,"@");const r=(t.ignoreCase?"i":"")+(t.unicode?"u":"");return new RegExp(a,r)}function g(t,a,u,h){if(h<0)return t;if(h=100){h=h-100;const r=u.split(".");if(r.unshift(u),h=0&&(h.tokenSubst=!0),typeof u.bracket=="string")if(u.bracket==="@open")h.bracket=1;else if(u.bracket==="@close")h.bracket=-1;else throw L.createError(t,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+a);if(u.next){if(typeof u.next!="string")throw L.createError(t,"the next state must be a string value in rule: "+a);{let r=u.next;if(!/^(@pop|@push|@popall)$/.test(r)&&(r[0]==="@"&&(r=r.substr(1)),r.indexOf("$")<0&&!L.stateExists(t,L.substituteMatches(t,r,"",[],""))))throw L.createError(t,"the next state '"+u.next+"' is not defined in rule: "+a);h.next=r}}return typeof u.goBack=="number"&&(h.goBack=u.goBack),typeof u.switchTo=="string"&&(h.switchTo=u.switchTo),typeof u.log=="string"&&(h.log=u.log),typeof u.nextEmbedded=="string"&&(h.nextEmbedded=u.nextEmbedded,t.usesEmbedded=!0),h}}else if(Array.isArray(u)){const h=[];for(let r=0,c=u.length;r0&&h[0]==="^",this.name=this.name+": "+h,this.regex=_(a,"^(?:"+(this.matchOnlyAtLineStart?h.substr(1):h)+")")}setAction(a,u){this.action=s(a,this.name,u)}}function n(t,a){if(!a||typeof a!="object")throw new Error("Monarch: expecting a language definition object");const u={};u.languageId=t,u.includeLF=y(a.includeLF,!1),u.noThrow=!1,u.maxStack=100,u.start=typeof a.start=="string"?a.start:null,u.ignoreCase=y(a.ignoreCase,!1),u.unicode=y(a.unicode,!1),u.tokenPostfix=D(a.tokenPostfix,"."+u.languageId),u.defaultToken=D(a.defaultToken,"source"),u.usesEmbedded=!1;const h=a;h.languageId=t,h.includeLF=u.includeLF,h.ignoreCase=u.ignoreCase,h.unicode=u.unicode,h.noThrow=u.noThrow,h.usesEmbedded=u.usesEmbedded,h.stateNames=a.tokenizer,h.defaultToken=u.defaultToken;function r(o,d,l){for(const p of l){let m=p.include;if(m){if(typeof m!="string")throw L.createError(u,"an 'include' attribute must be a string at: "+o);if(m[0]==="@"&&(m=m.substr(1)),!a.tokenizer[m])throw L.createError(u,"include target '"+m+"' is not defined at: "+o);r(o+"."+m,d,a.tokenizer[m])}else{const v=new i(o);if(Array.isArray(p)&&p.length>=1&&p.length<=3)if(v.setRegex(h,p[0]),p.length>=3)if(typeof p[1]=="string")v.setAction(h,{token:p[1],next:p[2]});else if(typeof p[1]=="object"){const b=p[1];b.next=p[2],v.setAction(h,b)}else throw L.createError(u,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+o);else v.setAction(h,p[1]);else{if(!p.regex)throw L.createError(u,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+o);p.name&&typeof p.name=="string"&&(v.name=p.name),p.matchOnlyAtStart&&(v.matchOnlyAtLineStart=y(p.matchOnlyAtLineStart,!1)),v.setRegex(h,p.regex),v.setAction(h,p.action)}d.push(v)}}}if(!a.tokenizer||typeof a.tokenizer!="object")throw L.createError(u,"a language definition must define the 'tokenizer' attribute as an object");u.tokenizer=[];for(const o in a.tokenizer)if(a.tokenizer.hasOwnProperty(o)){u.start||(u.start=o);const d=a.tokenizer[o];u.tokenizer[o]=new Array,r("tokenizer."+o,u.tokenizer[o],d)}if(u.usesEmbedded=h.usesEmbedded,a.brackets){if(!Array.isArray(a.brackets))throw L.createError(u,"the 'brackets' attribute must be defined as an array")}else a.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const c=[];for(const o of a.brackets){let d=o;if(d&&Array.isArray(d)&&d.length===3&&(d={token:d[2],open:d[0],close:d[1]}),d.open===d.close)throw L.createError(u,"open and close brackets in a 'brackets' attribute must be different: "+d.open+` - hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof d.open=="string"&&typeof d.token=="string"&&typeof d.close=="string")c.push({token:d.token+u.tokenPostfix,open:L.fixCase(u,d.open),close:L.fixCase(u,d.close)});else throw L.createError(u,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return u.brackets=c,u.noThrow=!0,u}e.compile=n}),define(ne[551],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/actionbar/actionViewItems",e)}),define(ne[552],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/findinput/findInput",e)}),define(ne[553],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/findinput/findInputToggles",e)}),define(ne[554],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/findinput/replaceInput",e)}),define(ne[555],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/hover/hoverWidget",e)}),define(ne[556],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/iconLabel/iconLabelHover",e)}),define(ne[557],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/inputbox/inputBox",e)}),define(ne[558],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/keybindingLabel/keybindingLabel",e)}),define(ne[559],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/selectBox/selectBoxCustom",e)}),define(ne[560],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/toolbar/toolbar",e)}),define(ne[561],se([3,4]),function(Q,e){return Q.create("vs/base/browser/ui/tree/abstractTree",e)}),define(ne[562],se([3,4]),function(Q,e){return Q.create("vs/base/common/actions",e)}),define(ne[39],se([1,0,6,2,562]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toAction=e.EmptySubmenuAction=e.SubmenuAction=e.Separator=e.ActionRunner=e.Action=void 0;class D extends k.Disposable{constructor(i,n="",t="",a=!0,u){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=i,this._label=n,this._cssClass=t,this._enabled=a,this._actionCallback=u}get id(){return this._id}get label(){return this._label}set label(i){this._setLabel(i)}_setLabel(i){this._label!==i&&(this._label=i,this._onDidChange.fire({label:i}))}get tooltip(){return this._tooltip||""}set tooltip(i){this._setTooltip(i)}_setTooltip(i){this._tooltip!==i&&(this._tooltip=i,this._onDidChange.fire({tooltip:i}))}get class(){return this._cssClass}set class(i){this._setClass(i)}_setClass(i){this._cssClass!==i&&(this._cssClass=i,this._onDidChange.fire({class:i}))}get enabled(){return this._enabled}set enabled(i){this._setEnabled(i)}_setEnabled(i){this._enabled!==i&&(this._enabled=i,this._onDidChange.fire({enabled:i}))}get checked(){return this._checked}set checked(i){this._setChecked(i)}_setChecked(i){this._checked!==i&&(this._checked=i,this._onDidChange.fire({checked:i}))}run(i,n){return we(this,void 0,void 0,function*(){this._actionCallback&&(yield this._actionCallback(i))})}}e.Action=D;class S extends k.Disposable{constructor(){super(...arguments),this._onWillRun=this._register(new L.Emitter),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new L.Emitter),this.onDidRun=this._onDidRun.event}run(i,n){return we(this,void 0,void 0,function*(){if(!i.enabled)return;this._onWillRun.fire({action:i});let t;try{yield this.runAction(i,n)}catch(a){t=a}this._onDidRun.fire({action:i,error:t})})}runAction(i,n){return we(this,void 0,void 0,function*(){yield i.run(n)})}}e.ActionRunner=S;class f{constructor(){this.id=f.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(...i){let n=[];for(const t of i)t.length&&(n.length?n=[...n,new f,...t]:n=t);return n}run(){return we(this,void 0,void 0,function*(){})}}e.Separator=f,f.ID="vs.actions.separator";class _{get actions(){return this._actions}constructor(i,n,t,a){this.tooltip="",this.enabled=!0,this.checked=void 0,this.id=i,this.label=n,this.class=a,this._actions=t}run(){return we(this,void 0,void 0,function*(){})}}e.SubmenuAction=_;class g extends D{constructor(){super(g.ID,y.localize(0,null),void 0,!1)}}e.EmptySubmenuAction=g,g.ID="vs.actions.empty";function C(s){var i,n;return{id:s.id,label:s.label,class:void 0,enabled:(i=s.enabled)!==null&&i!==void 0?i:!0,checked:(n=s.checked)!==null&&n!==void 0?n:!1,run:()=>we(this,void 0,void 0,function*(){return s.run()}),tooltip:s.label}}e.toAction=C}),define(ne[563],se([3,4]),function(Q,e){return Q.create("vs/base/common/errorMessage",e)}),define(ne[564],se([1,0,14,20,563]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toErrorMessage=void 0;function D(g,C){return C&&(g.stack||g.stacktrace)?y.localize(0,null,f(g),S(g.stack)||S(g.stacktrace)):f(g)}function S(g){return Array.isArray(g)?g.join(` -`):g}function f(g){return g.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${g.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof g.code=="string"&&typeof g.errno=="number"&&typeof g.syscall=="string"?y.localize(1,null,g.message):g.message||y.localize(2,null)}function _(g=null,C=!1){if(!g)return y.localize(3,null);if(Array.isArray(g)){const s=L.coalesce(g),i=_(s[0],C);return s.length>1?y.localize(4,null,i,s.length):i}if(k.isString(g))return g;if(g.detail){const s=g.detail;if(s.error)return D(s.error,C);if(s.exception)return D(s.exception,C)}return g.stack?D(g,C):g.message?g.message:y.localize(5,null)}e.toErrorMessage=_}),define(ne[565],se([3,4]),function(Q,e){return Q.create("vs/base/common/keybindingLabels",e)}),define(ne[216],se([1,0,565]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UserSettingsLabelProvider=e.ElectronAcceleratorLabelProvider=e.AriaLabelProvider=e.UILabelProvider=e.ModifierLabelProvider=void 0;class k{constructor(S,f,_=f){this.modifierLabels=[null],this.modifierLabels[2]=S,this.modifierLabels[1]=f,this.modifierLabels[3]=_}toLabel(S,f,_){if(f.length===0)return null;const g=[];for(let C=0,s=f.length;C=0,D=r.indexOf("Macintosh")>=0,s=(r.indexOf("Macintosh")>=0||r.indexOf("iPad")>=0||r.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,S=r.indexOf("Linux")>=0,n=r?.indexOf("Mobi")>=0,g=!0,t=L.getConfiguredDefaultLocale(L.localize(0,null))||e.LANGUAGE_DEFAULT,a=t,u=navigator.language;else if(typeof c=="object"){y=c.platform==="win32",D=c.platform==="darwin",S=c.platform==="linux",f=S&&!!c.env.SNAP&&!!c.env.SNAP_REVISION,C=o,i=!!c.env.CI||!!c.env.BUILD_ARTIFACTSTAGINGDIRECTORY,t=e.LANGUAGE_DEFAULT,a=e.LANGUAGE_DEFAULT;const b=c.env.VSCODE_NLS_CONFIG;if(b)try{const w=JSON.parse(b),E=w.availableLanguages["*"];t=w.locale,u=w.osLocale,a=E||e.LANGUAGE_DEFAULT,h=w._translationsConfigFile}catch{}_=!0}else console.error("Unable to resolve platform.");let l=0;D?l=1:y?l=3:S&&(l=2),e.isWindows=y,e.isMacintosh=D,e.isLinux=S,e.isNative=_,e.isWeb=g,e.isWebWorker=g&&typeof e.globals.importScripts=="function",e.isIOS=s,e.isMobile=n,e.userAgent=r,e.language=a,e.setTimeout0IsFaster=typeof e.globals.postMessage=="function"&&!e.globals.importScripts,e.setTimeout0=(()=>{if(e.setTimeout0IsFaster){const b=[];e.globals.addEventListener("message",E=>{if(E.data&&E.data.vscodeScheduleAsyncWork)for(let I=0,M=b.length;I{const I=++w;b.push({id:I,callback:E}),e.globals.postMessage({vscodeScheduleAsyncWork:I},"*")}}return b=>setTimeout(b)})(),e.OS=D||s?2:y?1:3;let p=!0,m=!1;function v(){if(!m){m=!0;const b=new Uint8Array(2);b[0]=1,b[1]=2,p=new Uint16Array(b.buffer)[0]===(2<<8)+1}return p}e.isLittleEndian=v,e.isChrome=!!(e.userAgent&&e.userAgent.indexOf("Chrome")>=0),e.isFirefox=!!(e.userAgent&&e.userAgent.indexOf("Firefox")>=0),e.isSafari=!!(!e.isChrome&&e.userAgent&&e.userAgent.indexOf("Safari")>=0),e.isEdge=!!(e.userAgent&&e.userAgent.indexOf("Edg/")>=0),e.isAndroid=!!(e.userAgent&&e.userAgent.indexOf("Android")>=0)}),define(ne[217],se([1,0,52,17]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserFeatures=void 0,e.BrowserFeatures={clipboard:{writeText:k.isNative||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:k.isNative||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>k.isNative||L.isStandalone()?0:navigator.keyboard||L.isSafari?1:2)(),touch:"ontouchstart"in window||navigator.maxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)}}),define(ne[44],se([1,0,52,63,119,17]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandardKeyboardEvent=void 0;function S(i){if(i.charCode){const t=String.fromCharCode(i.charCode).toUpperCase();return k.KeyCodeUtils.fromString(t)}const n=i.keyCode;if(n===3)return 7;if(L.isFirefox)switch(n){case 59:return 85;case 60:if(D.isLinux)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(D.isMacintosh)return 57;break}else if(L.isWebKit){if(D.isMacintosh&&n===93)return 57;if(!D.isMacintosh&&n===92)return 57}return k.EVENT_KEY_CODE_MAP[n]||0}const f=D.isMacintosh?256:2048,_=512,g=1024,C=D.isMacintosh?2048:256;class s{constructor(n){this._standardKeyboardEventBrand=!0;const t=n;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=t.getModifierState("AltGraph"),this.keyCode=S(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(n){return this._asKeybinding===n}_computeKeybinding(){let n=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(n=this.keyCode);let t=0;return this.ctrlKey&&(t|=f),this.altKey&&(t|=_),this.shiftKey&&(t|=g),this.metaKey&&(t|=C),t|=n,t}_computeKeyCodeChord(){let n=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(n=this.keyCode),new y.KeyCodeChord(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,n)}}e.StandardKeyboardEvent=s}),define(ne[60],se([1,0,52,380,17]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandardWheelEvent=e.StandardMouseEvent=void 0;class D{constructor(_){this.timestamp=Date.now(),this.browserEvent=_,this.leftButton=_.button===0,this.middleButton=_.button===1,this.rightButton=_.button===2,this.buttons=_.buttons,this.target=_.target,this.detail=_.detail||1,_.type==="dblclick"&&(this.detail=2),this.ctrlKey=_.ctrlKey,this.shiftKey=_.shiftKey,this.altKey=_.altKey,this.metaKey=_.metaKey,typeof _.pageX=="number"?(this.posx=_.pageX,this.posy=_.pageY):(this.posx=_.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=_.clientY+document.body.scrollTop+document.documentElement.scrollTop);const g=k.IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(window,_.view);this.posx-=g.left,this.posy-=g.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}e.StandardMouseEvent=D;class S{constructor(_,g=0,C=0){if(this.browserEvent=_||null,this.target=_?_.target||_.targetNode||_.srcElement:null,this.deltaY=C,this.deltaX=g,_){const s=_,i=_;if(typeof s.wheelDeltaY<"u")this.deltaY=s.wheelDeltaY/120;else if(typeof i.VERTICAL_AXIS<"u"&&i.axis===i.VERTICAL_AXIS)this.deltaY=-i.detail/3;else if(_.type==="wheel"){const n=_;n.deltaMode===n.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaY=-_.deltaY/3:this.deltaY=-_.deltaY:this.deltaY=-_.deltaY/40}if(typeof s.wheelDeltaX<"u")L.isSafari&&y.isWindows?this.deltaX=-(s.wheelDeltaX/120):this.deltaX=s.wheelDeltaX/120;else if(typeof i.HORIZONTAL_AXIS<"u"&&i.axis===i.HORIZONTAL_AXIS)this.deltaX=-_.detail/3;else if(_.type==="wheel"){const n=_;n.deltaMode===n.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaX=-_.deltaX/3:this.deltaX=-_.deltaX:this.deltaX=-_.deltaX/40}this.deltaY===0&&this.deltaX===0&&_.wheelDelta&&(this.deltaY=_.wheelDelta/120)}}preventDefault(){var _;(_=this.browserEvent)===null||_===void 0||_.preventDefault()}stopPropagation(){var _;(_=this.browserEvent)===null||_===void 0||_.stopPropagation()}}e.StandardWheelEvent=S});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values=="function"?__values(Q):Q[Symbol.iterator](),L={},k("next"),k("throw"),k("return"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[13],se([1,0,19,9,6,2,17,264]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createCancelableAsyncIterable=e.CancelableAsyncIterableObject=e.AsyncIterableObject=e.Promises=e.DeferredPromise=e.IdleValue=e.runWhenIdle=e.RunOnceScheduler=e.IntervalTimer=e.TimeoutTimer=e.first=e.disposableTimeout=e.timeout=e.ThrottledDelayer=e.Delayer=e.Throttler=e.raceCancellation=e.createCancelablePromise=e.isThenable=void 0;function _(E){return!!E&&typeof E.then=="function"}e.isThenable=_;function g(E){const I=new L.CancellationTokenSource,M=E(I.token),P=new Promise((x,T)=>{const A=I.token.onCancellationRequested(()=>{A.dispose(),I.dispose(),T(new k.CancellationError)});Promise.resolve(M).then(N=>{A.dispose(),I.dispose(),x(N)},N=>{A.dispose(),I.dispose(),T(N)})});return new class{cancel(){I.cancel()}then(x,T){return P.then(x,T)}catch(x){return this.then(void 0,x)}finally(x){return P.finally(x)}}}e.createCancelablePromise=g;function C(E,I,M){return new Promise((P,x)=>{const T=I.onCancellationRequested(()=>{T.dispose(),P(M)});E.then(P,x).finally(()=>T.dispose())})}e.raceCancellation=C;class s{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(I){if(this.isDisposed)throw new Error("Throttler is disposed");if(this.activePromise){if(this.queuedPromiseFactory=I,!this.queuedPromise){const M=()=>{if(this.queuedPromise=null,this.isDisposed)return;const P=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,P};this.queuedPromise=new Promise(P=>{this.activePromise.then(M,M).then(P)})}return new Promise((M,P)=>{this.queuedPromise.then(M,P)})}return this.activePromise=I(),new Promise((M,P)=>{this.activePromise.then(x=>{this.activePromise=null,M(x)},x=>{this.activePromise=null,P(x)})})}dispose(){this.isDisposed=!0}}e.Throttler=s;const i=(E,I)=>{let M=!0;const P=setTimeout(()=>{M=!1,I()},E);return{isTriggered:()=>M,dispose:()=>{clearTimeout(P),M=!1}}},n=E=>{let I=!0;return queueMicrotask(()=>{I&&(I=!1,E())}),{isTriggered:()=>I,dispose:()=>{I=!1}}};class t{constructor(I){this.defaultDelay=I,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(I,M=this.defaultDelay){this.task=I,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((x,T)=>{this.doResolve=x,this.doReject=T}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const x=this.task;return this.task=null,x()}}));const P=()=>{var x;this.deferred=null,(x=this.doResolve)===null||x===void 0||x.call(this,null)};return this.deferred=M===f.MicrotaskDelay?n(P):i(M,P),this.completionPromise}isTriggered(){var I;return!!(!((I=this.deferred)===null||I===void 0)&&I.isTriggered())}cancel(){var I;this.cancelTimeout(),this.completionPromise&&((I=this.doReject)===null||I===void 0||I.call(this,new k.CancellationError),this.completionPromise=null)}cancelTimeout(){var I;(I=this.deferred)===null||I===void 0||I.dispose(),this.deferred=null}dispose(){this.cancel()}}e.Delayer=t;class a{constructor(I){this.delayer=new t(I),this.throttler=new s}trigger(I,M){return this.delayer.trigger(()=>this.throttler.queue(I),M)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}e.ThrottledDelayer=a;function u(E,I){return I?new Promise((M,P)=>{const x=setTimeout(()=>{T.dispose(),M()},E),T=I.onCancellationRequested(()=>{clearTimeout(x),T.dispose(),P(new k.CancellationError)})}):g(M=>u(E,M))}e.timeout=u;function h(E,I=0){const M=setTimeout(E,I);return(0,D.toDisposable)(()=>clearTimeout(M))}e.disposableTimeout=h;function r(E,I=P=>!!P,M=null){let P=0;const x=E.length,T=()=>{if(P>=x)return Promise.resolve(M);const A=E[P++];return Promise.resolve(A()).then(F=>I(F)?Promise.resolve(F):T())};return T()}e.first=r;class c{constructor(I,M){this._token=-1,typeof I=="function"&&typeof M=="number"&&this.setIfNotSet(I,M)}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(I,M){this.cancel(),this._token=setTimeout(()=>{this._token=-1,I()},M)}setIfNotSet(I,M){this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,I()},M))}}e.TimeoutTimer=c;class o{constructor(){this._token=-1}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearInterval(this._token),this._token=-1)}cancelAndSet(I,M){this.cancel(),this._token=setInterval(()=>{I()},M)}}e.IntervalTimer=o;class d{constructor(I,M){this.timeoutToken=-1,this.runner=I,this.timeout=M,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(I=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,I)}get delay(){return this.timeout}set delay(I){this.timeout=I}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var I;(I=this.runner)===null||I===void 0||I.call(this)}}e.RunOnceScheduler=d,function(){typeof requestIdleCallback!="function"||typeof cancelIdleCallback!="function"?e.runWhenIdle=E=>{(0,S.setTimeout0)(()=>{if(I)return;const M=Date.now()+15;E(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,M-Date.now())}}))});let I=!1;return{dispose(){I||(I=!0)}}}:e.runWhenIdle=(E,I)=>{const M=requestIdleCallback(E,typeof I=="number"?{timeout:I}:void 0);let P=!1;return{dispose(){P||(P=!0,cancelIdleCallback(M))}}}}();class l{constructor(I){this._didRun=!1,this._executor=()=>{try{this._value=I()}catch(M){this._error=M}finally{this._didRun=!0}},this._handle=(0,e.runWhenIdle)(()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}e.IdleValue=l;class p{get isRejected(){var I;return((I=this.outcome)===null||I===void 0?void 0:I.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((I,M)=>{this.completeCallback=I,this.errorCallback=M})}complete(I){return new Promise(M=>{this.completeCallback(I),this.outcome={outcome:0,value:I},M()})}error(I){return new Promise(M=>{this.errorCallback(I),this.outcome={outcome:1,value:I},M()})}cancel(){return this.error(new k.CancellationError)}}e.DeferredPromise=p;var m;(function(E){function I(P){return we(this,void 0,void 0,function*(){let x;const T=yield Promise.all(P.map(A=>A.then(N=>N,N=>{x||(x=N)})));if(typeof x<"u")throw x;return T})}E.settled=I;function M(P){return new Promise((x,T)=>we(this,void 0,void 0,function*(){try{yield P(x,T)}catch(A){T(A)}}))}E.withAsyncBody=M})(m||(e.Promises=m={}));class v{static fromArray(I){return new v(M=>{M.emitMany(I)})}static fromPromise(I){return new v(M=>we(this,void 0,void 0,function*(){M.emitMany(yield I)}))}static fromPromises(I){return new v(M=>we(this,void 0,void 0,function*(){yield Promise.all(I.map(P=>we(this,void 0,void 0,function*(){return M.emitOne(yield P)})))}))}static merge(I){return new v(M=>we(this,void 0,void 0,function*(){yield Promise.all(I.map(P=>{var x,T,A;return we(this,void 0,void 0,function*(){var N,F,O,W;try{for(x=!0,T=Lt(P);A=yield T.next(),N=A.done,!N;x=!0){W=A.value,x=!1;const U=W;M.emitOne(U)}}catch(U){F={error:U}}finally{try{!x&&!N&&(O=T.return)&&(yield O.call(T))}finally{if(F)throw F.error}}})}))}))}constructor(I){this._state=0,this._results=[],this._error=null,this._onStateChanged=new y.Emitter,queueMicrotask(()=>we(this,void 0,void 0,function*(){const M={emitOne:P=>this.emitOne(P),emitMany:P=>this.emitMany(P),reject:P=>this.reject(P)};try{yield Promise.resolve(I(M)),this.resolve()}catch(P){this.reject(P)}finally{M.emitOne=void 0,M.emitMany=void 0,M.reject=void 0}}))}[Symbol.asyncIterator](){let I=0;return{next:()=>we(this,void 0,void 0,function*(){do{if(this._state===2)throw this._error;if(Iwe(this,void 0,void 0,function*(){var x,T,A,N;try{for(var F=!0,O=Lt(I),W;W=yield O.next(),x=W.done,!x;F=!0){N=W.value,F=!1;const U=N;P.emitOne(M(U))}}catch(U){T={error:U}}finally{try{!F&&!x&&(A=O.return)&&(yield A.call(O))}finally{if(T)throw T.error}}}))}map(I){return v.map(this,I)}static filter(I,M){return new v(P=>we(this,void 0,void 0,function*(){var x,T,A,N;try{for(var F=!0,O=Lt(I),W;W=yield O.next(),x=W.done,!x;F=!0){N=W.value,F=!1;const U=N;M(U)&&P.emitOne(U)}}catch(U){T={error:U}}finally{try{!F&&!x&&(A=O.return)&&(yield A.call(O))}finally{if(T)throw T.error}}}))}filter(I){return v.filter(this,I)}static coalesce(I){return v.filter(I,M=>!!M)}coalesce(){return v.coalesce(this)}static toPromise(I){var M,P,x,T,A,N,F;return we(this,void 0,void 0,function*(){const O=[];try{for(M=!0,P=Lt(I);x=yield P.next(),T=x.done,!T;M=!0){F=x.value,M=!1;const W=F;O.push(W)}}catch(W){A={error:W}}finally{try{!M&&!T&&(N=P.return)&&(yield N.call(P))}finally{if(A)throw A.error}}return O})}toPromise(){return v.toPromise(this)}emitOne(I){this._state===0&&(this._results.push(I),this._onStateChanged.fire())}emitMany(I){this._state===0&&(this._results=this._results.concat(I),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(I){this._state===0&&(this._state=2,this._error=I,this._onStateChanged.fire())}}e.AsyncIterableObject=v,v.EMPTY=v.fromArray([]);class b extends v{constructor(I,M){super(M),this._source=I}cancel(){this._source.cancel()}}e.CancelableAsyncIterableObject=b;function w(E){const I=new L.CancellationTokenSource,M=E(I.token);return new b(I,P=>we(this,void 0,void 0,function*(){var x,T,A,N;const F=I.token.onCancellationRequested(()=>{F.dispose(),I.dispose(),P.reject(new k.CancellationError)});try{try{for(var O=!0,W=Lt(M),U;U=yield W.next(),x=U.done,!x;O=!0){N=U.value,O=!1;const j=N;if(I.token.isCancellationRequested)return;P.emitOne(j)}}catch(j){T={error:j}}finally{try{!O&&!x&&(A=W.return)&&(yield A.call(W))}finally{if(T)throw T.error}}F.dispose(),I.dispose()}catch(j){F.dispose(),I.dispose(),P.reject(j)}}))}e.createCancelableAsyncIterable=w}),define(ne[567],se([1,0,13,2]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarVisibilityController=void 0;class y extends k.Disposable{constructor(S,f,_){super(),this._visibility=S,this._visibleClassName=f,this._invisibleClassName=_,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new L.TimeoutTimer)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this._updateShouldBeVisible())}setShouldBeVisible(S){this._rawShouldBeVisible=S,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const S=this._applyVisibilitySetting();this._shouldBeVisible!==S&&(this._shouldBeVisible=S,this.ensureVisibility())}setIsNeeded(S){this._isNeeded!==S&&(this._isNeeded=S,this.ensureVisibility())}setDomNode(S){this._domNode=S,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var S;(S=this._domNode)===null||S===void 0||S.setClassName(this._visibleClassName)},0))}_hide(S){var f;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(f=this._domNode)===null||f===void 0||f.setClassName(this._invisibleClassName+(S?" fade":"")))}}e.ScrollbarVisibilityController=y}),define(ne[218],se([1,0,139,14,13,264,168,6,46]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndexTreeModel=e.getVisibleState=e.isFilterResult=void 0;function g(n){return typeof n=="object"&&"visibility"in n&&"data"in n}e.isFilterResult=g;function C(n){switch(n){case!0:return 1;case!1:return 0;default:return n}}e.getVisibleState=C;function s(n){return typeof n.collapsible=="boolean"}class i{constructor(t,a,u,h={}){this.user=t,this.list=a,this.rootRef=[],this.eventBufferer=new f.EventBufferer,this._onDidChangeCollapseState=new f.Emitter,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new f.Emitter,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new f.Emitter,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new y.Delayer(D.MicrotaskDelay),this.collapseByDefault=typeof h.collapseByDefault>"u"?!1:h.collapseByDefault,this.filter=h.filter,this.autoExpandSingleChildren=typeof h.autoExpandSingleChildren>"u"?!1:h.autoExpandSingleChildren,this.root={parent:void 0,element:u,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(t,a,u=_.Iterable.empty(),h={}){if(t.length===0)throw new L.TreeError(this.user,"Invalid tree location");h.diffIdentityProvider?this.spliceSmart(h.diffIdentityProvider,t,a,u,h):this.spliceSimple(t,a,u,h)}spliceSmart(t,a,u,h,r,c){var o;h===void 0&&(h=_.Iterable.empty()),c===void 0&&(c=(o=r.diffDepth)!==null&&o!==void 0?o:0);const{parentNode:d}=this.getParentNodeWithListIndex(a);if(!d.lastDiffIds)return this.spliceSimple(a,u,h,r);const l=[...h],p=a[a.length-1],m=new S.LcsDiff({getElements:()=>d.lastDiffIds},{getElements:()=>[...d.children.slice(0,p),...l,...d.children.slice(p+u)].map(I=>t.getId(I.element).toString())}).ComputeDiff(!1);if(m.quitEarly)return d.lastDiffIds=void 0,this.spliceSimple(a,u,l,r);const v=a.slice(0,-1),b=(I,M,P)=>{if(c>0)for(let x=0;xP.originalStart-M.originalStart))b(w,E,w-(I.originalStart+I.originalLength)),w=I.originalStart,E=I.modifiedStart-p,this.spliceSimple([...v,w],I.originalLength,_.Iterable.slice(l,E,E+I.modifiedLength),r);b(w,E,w)}spliceSimple(t,a,u=_.Iterable.empty(),{onDidCreateNode:h,onDidDeleteNode:r,diffIdentityProvider:c}){const{parentNode:o,listIndex:d,revealed:l,visible:p}=this.getParentNodeWithListIndex(t),m=[],v=_.Iterable.map(u,F=>this.createTreeNode(F,o,o.visible?1:0,l,m,h)),b=t[t.length-1],w=o.children.length>0;let E=0;for(let F=b;F>=0&&Fc.getId(F.element).toString())):o.lastDiffIds=o.children.map(F=>c.getId(F.element).toString()):o.lastDiffIds=void 0;let T=0;for(const F of x)F.visible&&T++;if(T!==0)for(let F=b+I.length;FO+(W.visible?W.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(o,P-F),this.list.splice(d,F,m)}if(x.length>0&&r){const F=O=>{r(O),O.children.forEach(F)};x.forEach(F)}this._onDidSplice.fire({insertedNodes:I,deletedNodes:x});const A=o.children.length>0;w!==A&&this.setCollapsible(t.slice(0,-1),A);let N=o;for(;N;){if(N.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}N=N.parent}}rerender(t){if(t.length===0)throw new L.TreeError(this.user,"Invalid tree location");const{node:a,listIndex:u,revealed:h}=this.getTreeNodeWithListIndex(t);a.visible&&h&&this.list.splice(u,1,[a])}has(t){return this.hasTreeNode(t)}getListIndex(t){const{listIndex:a,visible:u,revealed:h}=this.getTreeNodeWithListIndex(t);return u&&h?a:-1}getListRenderCount(t){return this.getTreeNode(t).renderNodeCount}isCollapsible(t){return this.getTreeNode(t).collapsible}setCollapsible(t,a){const u=this.getTreeNode(t);typeof a>"u"&&(a=!u.collapsible);const h={collapsible:a};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,h))}isCollapsed(t){return this.getTreeNode(t).collapsed}setCollapsed(t,a,u){const h=this.getTreeNode(t);typeof a>"u"&&(a=!h.collapsed);const r={collapsed:a,recursive:u||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,r))}_setCollapseState(t,a){const{node:u,listIndex:h,revealed:r}=this.getTreeNodeWithListIndex(t),c=this._setListNodeCollapseState(u,h,r,a);if(u!==this.root&&this.autoExpandSingleChildren&&c&&!s(a)&&u.collapsible&&!u.collapsed&&!a.recursive){let o=-1;for(let d=0;d-1){o=-1;break}else o=d;o>-1&&this._setCollapseState([...t,o],a)}return c}_setListNodeCollapseState(t,a,u,h){const r=this._setNodeCollapseState(t,h,!1);if(!u||!t.visible||!r)return r;const c=t.renderNodeCount,o=this.updateNodeAfterCollapseChange(t),d=c-(a===-1?0:1);return this.list.splice(a+1,d,o.slice(1)),r}_setNodeCollapseState(t,a,u){let h;if(t===this.root?h=!1:(s(a)?(h=t.collapsible!==a.collapsible,t.collapsible=a.collapsible):t.collapsible?(h=t.collapsed!==a.collapsed,t.collapsed=a.collapsed):h=!1,h&&this._onDidChangeCollapseState.fire({node:t,deep:u})),!s(a)&&a.recursive)for(const r of t.children)h=this._setNodeCollapseState(r,a,!0)||h;return h}expandTo(t){this.eventBufferer.bufferEvents(()=>{let a=this.getTreeNode(t);for(;a.parent;)a=a.parent,t=t.slice(0,t.length-1),a.collapsed&&this._setCollapseState(t,{collapsed:!1,recursive:!1})})}refilter(){const t=this.root.renderNodeCount,a=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,t,a),this.refilterDelayer.cancel()}createTreeNode(t,a,u,h,r,c){const o={parent:a,element:t.element,children:[],depth:a.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof t.collapsible=="boolean"?t.collapsible:typeof t.collapsed<"u",collapsed:typeof t.collapsed>"u"?this.collapseByDefault:t.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},d=this._filterNode(o,u);o.visibility=d,h&&r.push(o);const l=t.children||_.Iterable.empty(),p=h&&d!==0&&!o.collapsed;let m=0,v=1;for(const b of l){const w=this.createTreeNode(b,o,d,p,r,c);o.children.push(w),v+=w.renderNodeCount,w.visible&&(w.visibleChildIndex=m++)}return o.collapsible=o.collapsible||o.children.length>0,o.visibleChildrenCount=m,o.visible=d===2?m>0:d===1,o.visible?o.collapsed||(o.renderNodeCount=v):(o.renderNodeCount=0,h&&r.pop()),c?.(o),o}updateNodeAfterCollapseChange(t){const a=t.renderNodeCount,u=[];return this._updateNodeAfterCollapseChange(t,u),this._updateAncestorsRenderNodeCount(t.parent,u.length-a),u}_updateNodeAfterCollapseChange(t,a){if(t.visible===!1)return 0;if(a.push(t),t.renderNodeCount=1,!t.collapsed)for(const u of t.children)t.renderNodeCount+=this._updateNodeAfterCollapseChange(u,a);return this._onDidChangeRenderNodeCount.fire(t),t.renderNodeCount}updateNodeAfterFilterChange(t){const a=t.renderNodeCount,u=[];return this._updateNodeAfterFilterChange(t,t.visible?1:0,u),this._updateAncestorsRenderNodeCount(t.parent,u.length-a),u}_updateNodeAfterFilterChange(t,a,u,h=!0){let r;if(t!==this.root){if(r=this._filterNode(t,a),r===0)return t.visible=!1,t.renderNodeCount=0,!1;h&&u.push(t)}const c=u.length;t.renderNodeCount=t===this.root?0:1;let o=!1;if(!t.collapsed||r!==0){let d=0;for(const l of t.children)o=this._updateNodeAfterFilterChange(l,r,u,h&&!t.collapsed)||o,l.visible&&(l.visibleChildIndex=d++);t.visibleChildrenCount=d}else t.visibleChildrenCount=0;return t!==this.root&&(t.visible=r===2?o:r===1,t.visibility=r),t.visible?t.collapsed||(t.renderNodeCount+=u.length-c):(t.renderNodeCount=0,h&&u.pop()),this._onDidChangeRenderNodeCount.fire(t),t.visible}_updateAncestorsRenderNodeCount(t,a){if(a!==0)for(;t;)t.renderNodeCount+=a,this._onDidChangeRenderNodeCount.fire(t),t=t.parent}_filterNode(t,a){const u=this.filter?this.filter.filter(t.element,a):1;return typeof u=="boolean"?(t.filterData=void 0,u?1:0):g(u)?(t.filterData=u.data,C(u.visibility)):(t.filterData=void 0,C(u))}hasTreeNode(t,a=this.root){if(!t||t.length===0)return!0;const[u,...h]=t;return u<0||u>a.children.length?!1:this.hasTreeNode(h,a.children[u])}getTreeNode(t,a=this.root){if(!t||t.length===0)return a;const[u,...h]=t;if(u<0||u>a.children.length)throw new L.TreeError(this.user,"Invalid tree location");return this.getTreeNode(h,a.children[u])}getTreeNodeWithListIndex(t){if(t.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:a,listIndex:u,revealed:h,visible:r}=this.getParentNodeWithListIndex(t),c=t[t.length-1];if(c<0||c>a.children.length)throw new L.TreeError(this.user,"Invalid tree location");const o=a.children[c];return{node:o,listIndex:u,revealed:h,visible:r&&o.visible}}getParentNodeWithListIndex(t,a=this.root,u=0,h=!0,r=!0){const[c,...o]=t;if(c<0||c>a.children.length)throw new L.TreeError(this.user,"Invalid tree location");for(let d=0;d{var a;if(t.element===null)return;const u=t;if(C.add(u.element),this.nodes.set(u.element,u),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();s.add(h),this.nodesByIdentity.set(h,u)}(a=g.onDidCreateNode)===null||a===void 0||a.call(g,u)},n=t=>{var a;if(t.element===null)return;const u=t;if(C.has(u.element)||this.nodes.delete(u.element),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();s.has(h)||this.nodesByIdentity.delete(h)}(a=g.onDidDeleteNode)===null||a===void 0||a.call(g,u)};this.model.splice([...f,0],Number.MAX_VALUE,_,Object.assign(Object.assign({},g),{onDidCreateNode:i,onDidDeleteNode:n}))}preserveCollapseState(f=y.Iterable.empty()){return this.sorter&&(f=[...f].sort(this.sorter.compare.bind(this.sorter))),y.Iterable.map(f,_=>{let g=this.nodes.get(_.element);if(!g&&this.identityProvider){const i=this.identityProvider.getId(_.element).toString();g=this.nodesByIdentity.get(i)}if(!g){let i;return typeof _.collapsed>"u"?i=void 0:_.collapsed===k.ObjectTreeElementCollapseState.Collapsed||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed?i=!0:_.collapsed===k.ObjectTreeElementCollapseState.Expanded||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?i=!1:i=!!_.collapsed,Object.assign(Object.assign({},_),{children:this.preserveCollapseState(_.children),collapsed:i})}const C=typeof _.collapsible=="boolean"?_.collapsible:g.collapsible;let s;return typeof _.collapsed>"u"||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?s=g.collapsed:_.collapsed===k.ObjectTreeElementCollapseState.Collapsed?s=!0:_.collapsed===k.ObjectTreeElementCollapseState.Expanded?s=!1:s=!!_.collapsed,Object.assign(Object.assign({},_),{collapsible:C,collapsed:s,children:this.preserveCollapseState(_.children)})})}rerender(f){const _=this.getElementLocation(f);this.model.rerender(_)}getFirstElementChild(f=null){const _=this.getElementLocation(f);return this.model.getFirstElementChild(_)}has(f){return this.nodes.has(f)}getListIndex(f){const _=this.getElementLocation(f);return this.model.getListIndex(_)}getListRenderCount(f){const _=this.getElementLocation(f);return this.model.getListRenderCount(_)}isCollapsible(f){const _=this.getElementLocation(f);return this.model.isCollapsible(_)}setCollapsible(f,_){const g=this.getElementLocation(f);return this.model.setCollapsible(g,_)}isCollapsed(f){const _=this.getElementLocation(f);return this.model.isCollapsed(_)}setCollapsed(f,_,g){const C=this.getElementLocation(f);return this.model.setCollapsed(C,_,g)}expandTo(f){const _=this.getElementLocation(f);this.model.expandTo(_)}refilter(){this.model.refilter()}getNode(f=null){if(f===null)return this.model.getNode(this.model.rootRef);const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);return _}getNodeLocation(f){return f.element}getParentNodeLocation(f){if(f===null)throw new k.TreeError(this.user,"Invalid getParentNodeLocation call");const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);const g=this.model.getNodeLocation(_),C=this.model.getParentNodeLocation(g);return this.model.getNode(C).element}getElementLocation(f){if(f===null)return[];const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);return this.model.getNodeLocation(_)}}e.ObjectTreeModel=D}),define(ne[568],se([1,0,219,139,14,6,46]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleObjectTreeModel=e.DefaultElementMapper=e.CompressedObjectTreeModel=e.decompress=e.compress=void 0;function f(c){const o=[c.element],d=c.incompressible||!1;return{element:{elements:o,incompressible:d},children:S.Iterable.map(S.Iterable.from(c.children),f),collapsible:c.collapsible,collapsed:c.collapsed}}function _(c){const o=[c.element],d=c.incompressible||!1;let l,p;for(;[p,l]=S.Iterable.consume(S.Iterable.from(c.children),2),!(p.length!==1||p[0].incompressible);)c=p[0],o.push(c.element);return{element:{elements:o,incompressible:d},children:S.Iterable.map(S.Iterable.concat(p,l),_),collapsible:c.collapsible,collapsed:c.collapsed}}e.compress=_;function g(c,o=0){let d;return og(l,0)),o===0&&c.element.incompressible?{element:c.element.elements[o],children:d,incompressible:!0,collapsible:c.collapsible,collapsed:c.collapsed}:{element:c.element.elements[o],children:d,collapsible:c.collapsible,collapsed:c.collapsed}}function C(c){return g(c,0)}e.decompress=C;function s(c,o,d){return c.element===o?Object.assign(Object.assign({},c),{children:d}):Object.assign(Object.assign({},c),{children:S.Iterable.map(S.Iterable.from(c.children),l=>s(l,o,d))})}const i=c=>({getId(o){return o.elements.map(d=>c.getId(d).toString()).join("\0")}});class n{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(o,d,l={}){this.user=o,this.rootRef=null,this.nodes=new Map,this.model=new L.ObjectTreeModel(o,d,l),this.enabled=typeof l.compressionEnabled>"u"?!0:l.compressionEnabled,this.identityProvider=l.identityProvider}setChildren(o,d=S.Iterable.empty(),l){const p=l.diffIdentityProvider&&i(l.diffIdentityProvider);if(o===null){const T=S.Iterable.map(d,this.enabled?_:f);this._setChildren(null,T,{diffIdentityProvider:p,diffDepth:1/0});return}const m=this.nodes.get(o);if(!m)throw new k.TreeError(this.user,"Unknown compressed tree node");const v=this.model.getNode(m),b=this.model.getParentNodeLocation(m),w=this.model.getNode(b),E=C(v),I=s(E,o,d),M=(this.enabled?_:f)(I),P=l.diffIdentityProvider?(T,A)=>l.diffIdentityProvider.getId(T)===l.diffIdentityProvider.getId(A):void 0;if((0,y.equals)(M.element.elements,v.element.elements,P)){this._setChildren(m,M.children||S.Iterable.empty(),{diffIdentityProvider:p,diffDepth:1});return}const x=w.children.map(T=>T===v?M:T);this._setChildren(w.element,x,{diffIdentityProvider:p,diffDepth:v.depth-w.depth})}setCompressionEnabled(o){if(o===this.enabled)return;this.enabled=o;const l=this.model.getNode().children,p=S.Iterable.map(l,C),m=S.Iterable.map(p,o?_:f);this._setChildren(null,m,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(o,d,l){const p=new Set,m=b=>{for(const w of b.element.elements)p.add(w),this.nodes.set(w,b.element)},v=b=>{for(const w of b.element.elements)p.has(w)||this.nodes.delete(w)};this.model.setChildren(o,d,Object.assign(Object.assign({},l),{onDidCreateNode:m,onDidDeleteNode:v}))}has(o){return this.nodes.has(o)}getListIndex(o){const d=this.getCompressedNode(o);return this.model.getListIndex(d)}getListRenderCount(o){const d=this.getCompressedNode(o);return this.model.getListRenderCount(d)}getNode(o){if(typeof o>"u")return this.model.getNode();const d=this.getCompressedNode(o);return this.model.getNode(d)}getNodeLocation(o){const d=this.model.getNodeLocation(o);return d===null?null:d.elements[d.elements.length-1]}getParentNodeLocation(o){const d=this.getCompressedNode(o),l=this.model.getParentNodeLocation(d);return l===null?null:l.elements[l.elements.length-1]}getFirstElementChild(o){const d=this.getCompressedNode(o);return this.model.getFirstElementChild(d)}isCollapsible(o){const d=this.getCompressedNode(o);return this.model.isCollapsible(d)}setCollapsible(o,d){const l=this.getCompressedNode(o);return this.model.setCollapsible(l,d)}isCollapsed(o){const d=this.getCompressedNode(o);return this.model.isCollapsed(d)}setCollapsed(o,d,l){const p=this.getCompressedNode(o);return this.model.setCollapsed(p,d,l)}expandTo(o){const d=this.getCompressedNode(o);this.model.expandTo(d)}rerender(o){const d=this.getCompressedNode(o);this.model.rerender(d)}refilter(){this.model.refilter()}getCompressedNode(o){if(o===null)return null;const d=this.nodes.get(o);if(!d)throw new k.TreeError(this.user,`Tree element not found: ${o}`);return d}}e.CompressedObjectTreeModel=n;const t=c=>c[c.length-1];e.DefaultElementMapper=t;class a{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(o=>new a(this.unwrapper,o))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(o,d){this.unwrapper=o,this.node=d}}function u(c,o){return{splice(d,l,p){o.splice(d,l,p.map(m=>c.map(m)))},updateElementHeight(d,l){o.updateElementHeight(d,l)}}}function h(c,o){return Object.assign(Object.assign({},o),{identityProvider:o.identityProvider&&{getId(d){return o.identityProvider.getId(c(d))}},sorter:o.sorter&&{compare(d,l){return o.sorter.compare(d.elements[0],l.elements[0])}},filter:o.filter&&{filter(d,l){return o.filter.filter(c(d),l)}}})}class r{get onDidSplice(){return D.Event.map(this.model.onDidSplice,({insertedNodes:o,deletedNodes:d})=>({insertedNodes:o.map(l=>this.nodeMapper.map(l)),deletedNodes:d.map(l=>this.nodeMapper.map(l))}))}get onDidChangeCollapseState(){return D.Event.map(this.model.onDidChangeCollapseState,({node:o,deep:d})=>({node:this.nodeMapper.map(o),deep:d}))}get onDidChangeRenderNodeCount(){return D.Event.map(this.model.onDidChangeRenderNodeCount,o=>this.nodeMapper.map(o))}constructor(o,d,l={}){this.rootRef=null,this.elementMapper=l.elementMapper||e.DefaultElementMapper;const p=m=>this.elementMapper(m.elements);this.nodeMapper=new k.WeakMapper(m=>new a(p,m)),this.model=new n(o,u(this.nodeMapper,d),h(p,l))}setChildren(o,d=S.Iterable.empty(),l={}){this.model.setChildren(o,d,l)}setCompressionEnabled(o){this.model.setCompressionEnabled(o)}has(o){return this.model.has(o)}getListIndex(o){return this.model.getListIndex(o)}getListRenderCount(o){return this.model.getListRenderCount(o)}getNode(o){return this.nodeMapper.map(this.model.getNode(o))}getNodeLocation(o){return o.element}getParentNodeLocation(o){return this.model.getParentNodeLocation(o)}getFirstElementChild(o){const d=this.model.getFirstElementChild(o);return d===null||typeof d>"u"?d:this.elementMapper(d.elements)}isCollapsible(o){return this.model.isCollapsible(o)}setCollapsible(o,d){return this.model.setCollapsible(o,d)}isCollapsed(o){return this.model.isCollapsed(o)}setCollapsed(o,d,l){return this.model.setCollapsed(o,d,l)}expandTo(o){return this.model.expandTo(o)}rerender(o){return this.model.rerender(o)}refilter(){return this.model.refilter()}getCompressedTreeNode(o=null){return this.model.getNode(o)}}e.CompressibleObjectTreeModel=r}),define(ne[569],se([1,0,17]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.platform=e.env=e.cwd=void 0;let k;if(typeof L.globals.vscode<"u"&&typeof L.globals.vscode.process<"u"){const y=L.globals.vscode.process;k={get platform(){return y.platform},get arch(){return y.arch},get env(){return y.env},cwd(){return y.cwd()}}}else typeof process<"u"?k={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:k={get platform(){return L.isWindows?"win32":L.isMacintosh?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};e.cwd=k.cwd,e.env=k.env,e.platform=k.platform}),define(ne[92],se([1,0,569]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sep=e.extname=e.basename=e.dirname=e.relative=e.resolve=e.normalize=e.posix=e.win32=void 0;const k=65,y=97,D=90,S=122,f=46,_=47,g=92,C=58,s=63;class i extends Error{constructor(p,m,v){let b;typeof m=="string"&&m.indexOf("not ")===0?(b="must not be",m=m.replace(/^not /,"")):b="must be";const w=p.indexOf(".")!==-1?"property":"argument";let E=`The "${p}" ${w} ${b} of type ${m}`;E+=`. Received type ${typeof v}`,super(E),this.code="ERR_INVALID_ARG_TYPE"}}function n(l,p){if(l===null||typeof l!="object")throw new i(p,"Object",l)}function t(l,p){if(typeof l!="string")throw new i(p,"string",l)}const a=L.platform==="win32";function u(l){return l===_||l===g}function h(l){return l===_}function r(l){return l>=k&&l<=D||l>=y&&l<=S}function c(l,p,m,v){let b="",w=0,E=-1,I=0,M=0;for(let P=0;P<=l.length;++P){if(P2){const x=b.lastIndexOf(m);x===-1?(b="",w=0):(b=b.slice(0,x),w=b.length-1-b.lastIndexOf(m)),E=P,I=0;continue}else if(b.length!==0){b="",w=0,E=P,I=0;continue}}p&&(b+=b.length>0?`${m}..`:"..",w=2)}else b.length>0?b+=`${m}${l.slice(E+1,P)}`:b=l.slice(E+1,P),w=P-E-1;E=P,I=0}else M===f&&I!==-1?++I:I=-1}return b}function o(l,p){n(p,"pathObject");const m=p.dir||p.root,v=p.base||`${p.name||""}${p.ext||""}`;return m?m===p.root?`${m}${v}`:`${m}${l}${v}`:v}e.win32={resolve(...l){let p="",m="",v=!1;for(let b=l.length-1;b>=-1;b--){let w;if(b>=0){if(w=l[b],t(w,"path"),w.length===0)continue}else p.length===0?w=L.cwd():(w=L.env[`=${p}`]||L.cwd(),(w===void 0||w.slice(0,2).toLowerCase()!==p.toLowerCase()&&w.charCodeAt(2)===g)&&(w=`${p}\\`));const E=w.length;let I=0,M="",P=!1;const x=w.charCodeAt(0);if(E===1)u(x)&&(I=1,P=!0);else if(u(x))if(P=!0,u(w.charCodeAt(1))){let T=2,A=T;for(;T2&&u(w.charCodeAt(2))&&(P=!0,I=3));if(M.length>0)if(p.length>0){if(M.toLowerCase()!==p.toLowerCase())continue}else p=M;if(v){if(p.length>0)break}else if(m=`${w.slice(I)}\\${m}`,v=P,P&&p.length>0)break}return m=c(m,!v,"\\",u),v?`${p}\\${m}`:`${p}${m}`||"."},normalize(l){t(l,"path");const p=l.length;if(p===0)return".";let m=0,v,b=!1;const w=l.charCodeAt(0);if(p===1)return h(w)?"\\":l;if(u(w))if(b=!0,u(l.charCodeAt(1))){let I=2,M=I;for(;I2&&u(l.charCodeAt(2))&&(b=!0,m=3));let E=m0&&u(l.charCodeAt(p-1))&&(E+="\\"),v===void 0?b?`\\${E}`:E:b?`${v}\\${E}`:`${v}${E}`},isAbsolute(l){t(l,"path");const p=l.length;if(p===0)return!1;const m=l.charCodeAt(0);return u(m)||p>2&&r(m)&&l.charCodeAt(1)===C&&u(l.charCodeAt(2))},join(...l){if(l.length===0)return".";let p,m;for(let w=0;w0&&(p===void 0?p=m=E:p+=`\\${E}`)}if(p===void 0)return".";let v=!0,b=0;if(typeof m=="string"&&u(m.charCodeAt(0))){++b;const w=m.length;w>1&&u(m.charCodeAt(1))&&(++b,w>2&&(u(m.charCodeAt(2))?++b:v=!1))}if(v){for(;b=2&&(p=`\\${p.slice(b)}`)}return e.win32.normalize(p)},relative(l,p){if(t(l,"from"),t(p,"to"),l===p)return"";const m=e.win32.resolve(l),v=e.win32.resolve(p);if(m===v||(l=m.toLowerCase(),p=v.toLowerCase(),l===p))return"";let b=0;for(;bb&&l.charCodeAt(w-1)===g;)w--;const E=w-b;let I=0;for(;II&&p.charCodeAt(M-1)===g;)M--;const P=M-I,x=Ex){if(p.charCodeAt(I+A)===g)return v.slice(I+A+1);if(A===2)return v.slice(I+A)}E>x&&(l.charCodeAt(b+A)===g?T=A:A===2&&(T=3)),T===-1&&(T=0)}let N="";for(A=b+T+1;A<=w;++A)(A===w||l.charCodeAt(A)===g)&&(N+=N.length===0?"..":"\\..");return I+=T,N.length>0?`${N}${v.slice(I,M)}`:(v.charCodeAt(I)===g&&++I,v.slice(I,M))},toNamespacedPath(l){if(typeof l!="string"||l.length===0)return l;const p=e.win32.resolve(l);if(p.length<=2)return l;if(p.charCodeAt(0)===g){if(p.charCodeAt(1)===g){const m=p.charCodeAt(2);if(m!==s&&m!==f)return`\\\\?\\UNC\\${p.slice(2)}`}}else if(r(p.charCodeAt(0))&&p.charCodeAt(1)===C&&p.charCodeAt(2)===g)return`\\\\?\\${p}`;return l},dirname(l){t(l,"path");const p=l.length;if(p===0)return".";let m=-1,v=0;const b=l.charCodeAt(0);if(p===1)return u(b)?l:".";if(u(b)){if(m=v=1,u(l.charCodeAt(1))){let I=2,M=I;for(;I2&&u(l.charCodeAt(2))?3:2,v=m);let w=-1,E=!0;for(let I=p-1;I>=v;--I)if(u(l.charCodeAt(I))){if(!E){w=I;break}}else E=!1;if(w===-1){if(m===-1)return".";w=m}return l.slice(0,w)},basename(l,p){p!==void 0&&t(p,"ext"),t(l,"path");let m=0,v=-1,b=!0,w;if(l.length>=2&&r(l.charCodeAt(0))&&l.charCodeAt(1)===C&&(m=2),p!==void 0&&p.length>0&&p.length<=l.length){if(p===l)return"";let E=p.length-1,I=-1;for(w=l.length-1;w>=m;--w){const M=l.charCodeAt(w);if(u(M)){if(!b){m=w+1;break}}else I===-1&&(b=!1,I=w+1),E>=0&&(M===p.charCodeAt(E)?--E===-1&&(v=w):(E=-1,v=I))}return m===v?v=I:v===-1&&(v=l.length),l.slice(m,v)}for(w=l.length-1;w>=m;--w)if(u(l.charCodeAt(w))){if(!b){m=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?"":l.slice(m,v)},extname(l){t(l,"path");let p=0,m=-1,v=0,b=-1,w=!0,E=0;l.length>=2&&l.charCodeAt(1)===C&&r(l.charCodeAt(0))&&(p=v=2);for(let I=l.length-1;I>=p;--I){const M=l.charCodeAt(I);if(u(M)){if(!w){v=I+1;break}continue}b===-1&&(w=!1,b=I+1),M===f?m===-1?m=I:E!==1&&(E=1):m!==-1&&(E=-1)}return m===-1||b===-1||E===0||E===1&&m===b-1&&m===v+1?"":l.slice(m,b)},format:o.bind(null,"\\"),parse(l){t(l,"path");const p={root:"",dir:"",base:"",ext:"",name:""};if(l.length===0)return p;const m=l.length;let v=0,b=l.charCodeAt(0);if(m===1)return u(b)?(p.root=p.dir=l,p):(p.base=p.name=l,p);if(u(b)){if(v=1,u(l.charCodeAt(1))){let T=2,A=T;for(;T0&&(p.root=l.slice(0,v));let w=-1,E=v,I=-1,M=!0,P=l.length-1,x=0;for(;P>=v;--P){if(b=l.charCodeAt(P),u(b)){if(!M){E=P+1;break}continue}I===-1&&(M=!1,I=P+1),b===f?w===-1?w=P:x!==1&&(x=1):w!==-1&&(x=-1)}return I!==-1&&(w===-1||x===0||x===1&&w===I-1&&w===E+1?p.base=p.name=l.slice(E,I):(p.name=l.slice(E,w),p.base=l.slice(E,I),p.ext=l.slice(w,I))),E>0&&E!==v?p.dir=l.slice(0,E-1):p.dir=p.root,p},sep:"\\",delimiter:";",win32:null,posix:null};const d=(()=>{if(a){const l=/\\/g;return()=>{const p=L.cwd().replace(l,"/");return p.slice(p.indexOf("/"))}}return()=>L.cwd()})();e.posix={resolve(...l){let p="",m=!1;for(let v=l.length-1;v>=-1&&!m;v--){const b=v>=0?l[v]:d();t(b,"path"),b.length!==0&&(p=`${b}/${p}`,m=b.charCodeAt(0)===_)}return p=c(p,!m,"/",h),m?`/${p}`:p.length>0?p:"."},normalize(l){if(t(l,"path"),l.length===0)return".";const p=l.charCodeAt(0)===_,m=l.charCodeAt(l.length-1)===_;return l=c(l,!p,"/",h),l.length===0?p?"/":m?"./":".":(m&&(l+="/"),p?`/${l}`:l)},isAbsolute(l){return t(l,"path"),l.length>0&&l.charCodeAt(0)===_},join(...l){if(l.length===0)return".";let p;for(let m=0;m0&&(p===void 0?p=v:p+=`/${v}`)}return p===void 0?".":e.posix.normalize(p)},relative(l,p){if(t(l,"from"),t(p,"to"),l===p||(l=e.posix.resolve(l),p=e.posix.resolve(p),l===p))return"";const m=1,v=l.length,b=v-m,w=1,E=p.length-w,I=bI){if(p.charCodeAt(w+P)===_)return p.slice(w+P+1);if(P===0)return p.slice(w+P)}else b>I&&(l.charCodeAt(m+P)===_?M=P:P===0&&(M=0));let x="";for(P=m+M+1;P<=v;++P)(P===v||l.charCodeAt(P)===_)&&(x+=x.length===0?"..":"/..");return`${x}${p.slice(w+M)}`},toNamespacedPath(l){return l},dirname(l){if(t(l,"path"),l.length===0)return".";const p=l.charCodeAt(0)===_;let m=-1,v=!0;for(let b=l.length-1;b>=1;--b)if(l.charCodeAt(b)===_){if(!v){m=b;break}}else v=!1;return m===-1?p?"/":".":p&&m===1?"//":l.slice(0,m)},basename(l,p){p!==void 0&&t(p,"ext"),t(l,"path");let m=0,v=-1,b=!0,w;if(p!==void 0&&p.length>0&&p.length<=l.length){if(p===l)return"";let E=p.length-1,I=-1;for(w=l.length-1;w>=0;--w){const M=l.charCodeAt(w);if(M===_){if(!b){m=w+1;break}}else I===-1&&(b=!1,I=w+1),E>=0&&(M===p.charCodeAt(E)?--E===-1&&(v=w):(E=-1,v=I))}return m===v?v=I:v===-1&&(v=l.length),l.slice(m,v)}for(w=l.length-1;w>=0;--w)if(l.charCodeAt(w)===_){if(!b){m=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?"":l.slice(m,v)},extname(l){t(l,"path");let p=-1,m=0,v=-1,b=!0,w=0;for(let E=l.length-1;E>=0;--E){const I=l.charCodeAt(E);if(I===_){if(!b){m=E+1;break}continue}v===-1&&(b=!1,v=E+1),I===f?p===-1?p=E:w!==1&&(w=1):p!==-1&&(w=-1)}return p===-1||v===-1||w===0||w===1&&p===v-1&&p===m+1?"":l.slice(p,v)},format:o.bind(null,"/"),parse(l){t(l,"path");const p={root:"",dir:"",base:"",ext:"",name:""};if(l.length===0)return p;const m=l.charCodeAt(0)===_;let v;m?(p.root="/",v=1):v=0;let b=-1,w=0,E=-1,I=!0,M=l.length-1,P=0;for(;M>=v;--M){const x=l.charCodeAt(M);if(x===_){if(!I){w=M+1;break}continue}E===-1&&(I=!1,E=M+1),x===f?b===-1?b=M:P!==1&&(P=1):b!==-1&&(P=-1)}if(E!==-1){const x=w===0&&m?1:w;b===-1||P===0||P===1&&b===E-1&&b===w+1?p.base=p.name=l.slice(x,E):(p.name=l.slice(x,b),p.base=l.slice(x,E),p.ext=l.slice(b,E))}return w>0?p.dir=l.slice(0,w-1):m&&(p.dir="/"),p},sep:"/",delimiter:":",win32:null,posix:null},e.posix.win32=e.win32.win32=e.win32,e.posix.posix=e.win32.posix=e.posix,e.normalize=a?e.win32.normalize:e.posix.normalize,e.resolve=a?e.win32.resolve:e.posix.resolve,e.relative=a?e.win32.relative:e.posix.relative,e.dirname=a?e.win32.dirname:e.posix.dirname,e.basename=a?e.win32.basename:e.posix.basename,e.extname=a?e.win32.extname:e.posix.extname,e.sep=a?e.win32.sep:e.posix.sep}),define(ne[220],se([1,0,92,17,11]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hasDriveLetter=e.isWindowsDriveLetter=e.isEqualOrParent=e.getRoot=e.toPosixPath=e.toSlashes=e.isPathSeparator=void 0;function D(i){return i===47||i===92}e.isPathSeparator=D;function S(i){return i.replace(/[\\/]/g,L.posix.sep)}e.toSlashes=S;function f(i){return i.indexOf("/")===-1&&(i=S(i)),/^[a-zA-Z]:(\/|$)/.test(i)&&(i="/"+i),i}e.toPosixPath=f;function _(i,n=L.posix.sep){if(!i)return"";const t=i.length,a=i.charCodeAt(0);if(D(a)){if(D(i.charCodeAt(1))&&!D(i.charCodeAt(2))){let h=3;const r=h;for(;hi.length)return!1;if(t){if(!(0,y.startsWithIgnoreCase)(i,n))return!1;if(n.length===i.length)return!0;let h=n.length;return n.charAt(n.length-1)===a&&h--,i.charAt(h)===a}return n.charAt(n.length-1)!==a&&(n+=a),i.indexOf(n)===0}e.isEqualOrParent=g;function C(i){return i>=65&&i<=90||i>=97&&i<=122}e.isWindowsDriveLetter=C;function s(i,n=k.isWindows){return n?C(i.charCodeAt(0))&&i.charCodeAt(1)===58:!1}e.hasDriveLetter=s}),define(ne[570],se([1,0,72,92,17,11]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.pieceToQuery=e.prepareQuery=e.scoreFuzzy2=void 0;const S=[void 0,[]];function f(r,c,o=0,d=0){const l=c;return l.values&&l.values.length>1?_(r,l.values,o,d):g(r,c,o,d)}e.scoreFuzzy2=f;function _(r,c,o,d){let l=0;const p=[];for(const m of c){const[v,b]=g(r,m,o,d);if(typeof v!="number")return S;l+=v,p.push(...b)}return[l,s(p)]}function g(r,c,o,d){const l=(0,L.fuzzyScore)(c.original,c.originalLowercase,o,r,r.toLowerCase(),d,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return l?[l[0],(0,L.createMatches)(l)]:S}const C=Object.freeze({score:0});function s(r){const c=r.sort((l,p)=>l.start-p.start),o=[];let d;for(const l of c)!d||!i(d,l)?(d=l,o.push(l)):(d.start=Math.min(d.start,l.start),d.end=Math.max(d.end,l.end));return o}function i(r,c){return!(r.end=0,m=n(r);let v;const b=r.split(t);if(b.length>1)for(const w of b){const E=n(w),{pathNormalized:I,normalized:M,normalizedLowercase:P}=u(w);M&&(v||(v=[]),v.push({original:w,originalLowercase:w.toLowerCase(),pathNormalized:I,normalized:M,normalizedLowercase:P,expectContiguousMatch:E}))}return{original:r,originalLowercase:c,pathNormalized:o,normalized:d,normalizedLowercase:l,values:v,containsPathSeparator:p,expectContiguousMatch:m}}e.prepareQuery=a;function u(r){let c;y.isWindows?c=r.replace(/\//g,k.sep):c=r.replace(/\\/g,k.sep);const o=(0,D.stripWildcards)(c).replace(/\s|"/g,"");return{pathNormalized:c,normalized:o,normalizedLowercase:o.toLowerCase()}}function h(r){return Array.isArray(r)?a(r.map(c=>c.original).join(t)):a(r.original)}e.pieceToQuery=h}),define(ne[303],se([1,0,13,220,65,92,17,11]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isRelativePattern=e.parse=e.match=e.splitGlobAware=e.GLOB_SPLIT=e.GLOBSTAR=void 0,e.GLOBSTAR="**",e.GLOB_SPLIT="/";const _="[/\\\\]",g="[^/\\\\]",C=/\//g;function s(O,W){switch(O){case 0:return"";case 1:return`${g}*?`;default:return`(?:${_}|${g}+${_}${W?`|${_}${g}+`:""})*?`}}function i(O,W){if(!O)return[];const U=[];let j=!1,R=!1,K="";for(const G of O){switch(G){case W:if(!j&&!R){U.push(K),K="";continue}break;case"{":j=!0;break;case"}":j=!1;break;case"[":R=!0;break;case"]":R=!1;break}K+=G}return K&&U.push(K),U}e.splitGlobAware=i;function n(O){if(!O)return"";let W="";const U=i(O,e.GLOB_SPLIT);if(U.every(j=>j===e.GLOBSTAR))W=".*";else{let j=!1;U.forEach((R,K)=>{if(R===e.GLOBSTAR){if(j)return;W+=s(2,K===U.length-1)}else{let G=!1,Z="",J=!1,X="";for(const H of R){if(H!=="}"&&G){Z+=H;continue}if(J&&(H!=="]"||!X)){let B;H==="-"?B=H:(H==="^"||H==="!")&&!X?B="^":H===e.GLOB_SPLIT?B="":B=(0,f.escapeRegExpCharacters)(H),X+=B;continue}switch(H){case"{":G=!0;continue;case"[":J=!0;continue;case"}":{const V=`(?:${i(Z,",").map(Y=>n(Y)).join("|")})`;W+=V,G=!1,Z="";break}case"]":{W+="["+X+"]",J=!1,X="";break}case"?":W+=g;continue;case"*":W+=s(1);continue;default:W+=(0,f.escapeRegExpCharacters)(H)}}Kp(Z,W)).filter(Z=>Z!==l),O),j=U.length;if(!j)return l;if(j===1)return U[0];const R=function(Z,J){for(let X=0,H=U.length;X!!Z.allBasenames);K&&(R.allBasenames=K.allBasenames);const G=U.reduce((Z,J)=>J.allPaths?Z.concat(J.allPaths):Z,[]);return G.length&&(R.allPaths=G),R}function I(O,W,U){const j=D.sep===D.posix.sep,R=j?O:O.replace(C,D.sep),K=D.sep+R,G=D.posix.sep+O;let Z;return U?Z=function(J,X){return typeof J=="string"&&(J===R||J.endsWith(K)||!j&&(J===O||J.endsWith(G)))?W:null}:Z=function(J,X){return typeof J=="string"&&(J===R||!j&&J===O)?W:null},Z.allPaths=[(U?"*/":"./")+O],Z}function M(O){try{const W=new RegExp(`^${n(O)}$`);return function(U){return W.lastIndex=0,typeof U=="string"&&W.test(U)?O:null}}catch{return l}}function P(O,W,U){return!O||typeof W!="string"?!1:x(O)(W,void 0,U)}e.match=P;function x(O,W={}){if(!O)return d;if(typeof O=="string"||T(O)){const U=p(O,W);if(U===l)return d;const j=function(R,K){return!!U(R,K)};return U.allBasenames&&(j.allBasenames=U.allBasenames),U.allPaths&&(j.allPaths=U.allPaths),j}return A(O,W)}e.parse=x;function T(O){const W=O;return W?typeof W.base=="string"&&typeof W.pattern=="string":!1}e.isRelativePattern=T;function A(O,W){const U=F(Object.getOwnPropertyNames(O).map(Z=>N(Z,O[Z],W)).filter(Z=>Z!==l)),j=U.length;if(!j)return l;if(!U.some(Z=>!!Z.requiresSiblings)){if(j===1)return U[0];const Z=function(H,B){let V;for(let Y=0,ie=U.length;Ywe(this,void 0,void 0,function*(){for(const Y of V){const ie=yield Y;if(typeof ie=="string")return ie}return null}))():null},J=U.find(H=>!!H.allBasenames);J&&(Z.allBasenames=J.allBasenames);const X=U.reduce((H,B)=>B.allPaths?H.concat(B.allPaths):H,[]);return X.length&&(Z.allPaths=X),Z}const R=function(Z,J,X){let H,B;for(let V=0,Y=U.length;Vwe(this,void 0,void 0,function*(){for(const V of B){const Y=yield V;if(typeof Y=="string")return Y}return null}))():null},K=U.find(Z=>!!Z.allBasenames);K&&(R.allBasenames=K.allBasenames);const G=U.reduce((Z,J)=>J.allPaths?Z.concat(J.allPaths):Z,[]);return G.length&&(R.allPaths=G),R}function N(O,W,U){if(W===!1)return l;const j=p(O,U);if(j===l)return l;if(typeof W=="boolean")return j;if(W){const R=W.when;if(typeof R=="string"){const K=(G,Z,J,X)=>{if(!X||!j(G,Z))return null;const H=R.replace("$(basename)",()=>J),B=X(H);return(0,L.isThenable)(B)?B.then(V=>V?O:null):B?O:null};return K.requiresSiblings=!0,K}}return j}function F(O,W){const U=O.filter(Z=>!!Z.basenames);if(U.length<2)return O;const j=U.reduce((Z,J)=>{const X=J.basenames;return X?Z.concat(X):Z},[]);let R;if(W){R=[];for(let Z=0,J=j.length;Z{const X=J.patterns;return X?Z.concat(X):Z},[]);const K=function(Z,J){if(typeof Z!="string")return null;if(!J){let H;for(H=Z.length;H>0;H--){const B=Z.charCodeAt(H-1);if(B===47||B===92)break}J=Z.substr(H)}const X=j.indexOf(J);return X!==-1?R[X]:null};K.basenames=j,K.patterns=R,K.allBasenames=j;const G=O.filter(Z=>!Z.basenames);return G.push(K),G}}),define(ne[571],se([1,0,220,17]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.normalizeDriveLetter=void 0;function y(S,f=k.isWindows){return(0,L.hasDriveLetter)(S,f)?S.charAt(0).toUpperCase()+S.slice(1):S}e.normalizeDriveLetter=y;let D=Object.create(null)}),define(ne[22],se([1,0,92,17]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.uriToFsPath=e.URI=void 0;const y=/^\w[\w\d+.-]*$/,D=/^\//,S=/^\/\//;function f(m,v){if(!m.scheme&&v)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${m.authority}", path: "${m.path}", query: "${m.query}", fragment: "${m.fragment}"}`);if(m.scheme&&!y.test(m.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(m.path){if(m.authority){if(!D.test(m.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(S.test(m.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function _(m,v){return!m&&!v?"file":m}function g(m,v){switch(m){case"https":case"http":case"file":v?v[0]!==s&&(v=s+v):v=s;break}return v}const C="",s="/",i=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class n{static isUri(v){return v instanceof n?!0:v?typeof v.authority=="string"&&typeof v.fragment=="string"&&typeof v.path=="string"&&typeof v.query=="string"&&typeof v.scheme=="string"&&typeof v.fsPath=="string"&&typeof v.with=="function"&&typeof v.toString=="function":!1}constructor(v,b,w,E,I,M=!1){typeof v=="object"?(this.scheme=v.scheme||C,this.authority=v.authority||C,this.path=v.path||C,this.query=v.query||C,this.fragment=v.fragment||C):(this.scheme=_(v,M),this.authority=b||C,this.path=g(this.scheme,w||C),this.query=E||C,this.fragment=I||C,f(this,M))}get fsPath(){return c(this,!1)}with(v){if(!v)return this;let{scheme:b,authority:w,path:E,query:I,fragment:M}=v;return b===void 0?b=this.scheme:b===null&&(b=C),w===void 0?w=this.authority:w===null&&(w=C),E===void 0?E=this.path:E===null&&(E=C),I===void 0?I=this.query:I===null&&(I=C),M===void 0?M=this.fragment:M===null&&(M=C),b===this.scheme&&w===this.authority&&E===this.path&&I===this.query&&M===this.fragment?this:new a(b,w,E,I,M)}static parse(v,b=!1){const w=i.exec(v);return w?new a(w[2]||C,p(w[4]||C),p(w[5]||C),p(w[7]||C),p(w[9]||C),b):new a(C,C,C,C,C)}static file(v){let b=C;if(k.isWindows&&(v=v.replace(/\\/g,s)),v[0]===s&&v[1]===s){const w=v.indexOf(s,2);w===-1?(b=v.substring(2),v=s):(b=v.substring(2,w),v=v.substring(w)||s)}return new a("file",b,v,C,C)}static from(v,b){return new a(v.scheme,v.authority,v.path,v.query,v.fragment,b)}static joinPath(v,...b){if(!v.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let w;return k.isWindows&&v.scheme==="file"?w=n.file(L.win32.join(c(v,!0),...b)).path:w=L.posix.join(v.path,...b),v.with({path:w})}toString(v=!1){return o(this,v)}toJSON(){return this}static revive(v){var b,w;if(v){if(v instanceof n)return v;{const E=new a(v);return E._formatted=(b=v.external)!==null&&b!==void 0?b:null,E._fsPath=v._sep===t&&(w=v.fsPath)!==null&&w!==void 0?w:null,E}}else return v}}e.URI=n;const t=k.isWindows?1:void 0;class a extends n{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=c(this,!1)),this._fsPath}toString(v=!1){return v?o(this,!0):(this._formatted||(this._formatted=o(this,!1)),this._formatted)}toJSON(){const v={$mid:1};return this._fsPath&&(v.fsPath=this._fsPath,v._sep=t),this._formatted&&(v.external=this._formatted),this.path&&(v.path=this.path),this.scheme&&(v.scheme=this.scheme),this.authority&&(v.authority=this.authority),this.query&&(v.query=this.query),this.fragment&&(v.fragment=this.fragment),v}}const u={[58]:"%3A",[47]:"%2F",[63]:"%3F",[35]:"%23",[91]:"%5B",[93]:"%5D",[64]:"%40",[33]:"%21",[36]:"%24",[38]:"%26",[39]:"%27",[40]:"%28",[41]:"%29",[42]:"%2A",[43]:"%2B",[44]:"%2C",[59]:"%3B",[61]:"%3D",[32]:"%20"};function h(m,v,b){let w,E=-1;for(let I=0;I=97&&M<=122||M>=65&&M<=90||M>=48&&M<=57||M===45||M===46||M===95||M===126||v&&M===47||b&&M===91||b&&M===93||b&&M===58)E!==-1&&(w+=encodeURIComponent(m.substring(E,I)),E=-1),w!==void 0&&(w+=m.charAt(I));else{w===void 0&&(w=m.substr(0,I));const P=u[M];P!==void 0?(E!==-1&&(w+=encodeURIComponent(m.substring(E,I)),E=-1),w+=P):E===-1&&(E=I)}}return E!==-1&&(w+=encodeURIComponent(m.substring(E))),w!==void 0?w:m}function r(m){let v;for(let b=0;b1&&m.scheme==="file"?b=`//${m.authority}${m.path}`:m.path.charCodeAt(0)===47&&(m.path.charCodeAt(1)>=65&&m.path.charCodeAt(1)<=90||m.path.charCodeAt(1)>=97&&m.path.charCodeAt(1)<=122)&&m.path.charCodeAt(2)===58?v?b=m.path.substr(1):b=m.path[1].toLowerCase()+m.path.substr(2):b=m.path,k.isWindows&&(b=b.replace(/\//g,"\\")),b}e.uriToFsPath=c;function o(m,v){const b=v?r:h;let w="",{scheme:E,authority:I,path:M,query:P,fragment:x}=m;if(E&&(w+=E,w+=":"),(I||E==="file")&&(w+=s,w+=s),I){let T=I.indexOf("@");if(T!==-1){const A=I.substr(0,T);I=I.substr(T+1),T=A.lastIndexOf(":"),T===-1?w+=b(A,!1,!1):(w+=b(A.substr(0,T),!1,!1),w+=":",w+=b(A.substr(T+1),!1,!0)),w+="@"}I=I.toLowerCase(),T=I.lastIndexOf(":"),T===-1?w+=b(I,!1,!0):(w+=b(I.substr(0,T),!1,!0),w+=I.substr(T))}if(M){if(M.length>=3&&M.charCodeAt(0)===47&&M.charCodeAt(2)===58){const T=M.charCodeAt(1);T>=65&&T<=90&&(M=`/${String.fromCharCode(T+32)}:${M.substr(3)}`)}else if(M.length>=2&&M.charCodeAt(1)===58){const T=M.charCodeAt(0);T>=65&&T<=90&&(M=`${String.fromCharCode(T+32)}:${M.substr(2)}`)}w+=b(M,!0,!1)}return P&&(w+="?",w+=b(P,!1,!1)),x&&(w+="#",w+=v?x:h(x,!1,!1)),w}function d(m){try{return decodeURIComponent(m)}catch{return m.length>3?m.substr(0,3)+d(m.substr(3)):m}}const l=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function p(m){return m.match(l)?m.replace(l,v=>d(v)):m}}),define(ne[221],se([1,0,140,22]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.revive=e.parse=e.stringify=void 0;function y(_){return JSON.stringify(_,S)}e.stringify=y;function D(_){let g=JSON.parse(_);return g=f(g),g}e.parse=D;function S(_,g){return g instanceof RegExp?{$mid:2,source:g.source,flags:g.flags}:g}function f(_,g=0){if(!_||g>200)return _;if(typeof _=="object"){switch(_.$mid){case 1:return k.URI.revive(_);case 2:return new RegExp(_.source,_.flags);case 16:return new Date(_.source)}if(_ instanceof L.VSBuffer||_ instanceof Uint8Array)return _;if(Array.isArray(_))for(let C=0;C<_.length;++C)_[C]=f(_[C],g+1);else for(const C in _)Object.hasOwnProperty.call(_,C)&&(_[C]=f(_[C],g+1))}return _}e.revive=f}),define(ne[54],se([1,0,9,17,22]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.COI=e.FileAccess=e.RemoteAuthorities=e.connectionTokenQueryName=e.Schemas=void 0;var D;(function(g){g.inMemory="inmemory",g.vscode="vscode",g.internal="private",g.walkThrough="walkThrough",g.walkThroughSnippet="walkThroughSnippet",g.http="http",g.https="https",g.file="file",g.mailto="mailto",g.untitled="untitled",g.data="data",g.command="command",g.vscodeRemote="vscode-remote",g.vscodeRemoteResource="vscode-remote-resource",g.vscodeManagedRemoteResource="vscode-managed-remote-resource",g.vscodeUserData="vscode-userdata",g.vscodeCustomEditor="vscode-custom-editor",g.vscodeNotebookCell="vscode-notebook-cell",g.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",g.vscodeNotebookCellOutput="vscode-notebook-cell-output",g.vscodeInteractiveInput="vscode-interactive-input",g.vscodeSettings="vscode-settings",g.vscodeWorkspaceTrust="vscode-workspace-trust",g.vscodeTerminal="vscode-terminal",g.vscodeChatSesssion="vscode-chat-editor",g.webviewPanel="webview-panel",g.vscodeWebview="vscode-webview",g.extension="extension",g.vscodeFileResource="vscode-file",g.tmp="tmp",g.vsls="vsls",g.vscodeSourceControl="vscode-scm"})(D||(e.Schemas=D={})),e.connectionTokenQueryName="tkn";class S{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._remoteResourcesPath=`/${D.vscodeRemoteResource}`}setPreferredWebSchema(C){this._preferredWebSchema=C}rewrite(C){if(this._delegate)try{return this._delegate(C)}catch(u){return L.onUnexpectedError(u),C}const s=C.authority;let i=this._hosts[s];i&&i.indexOf(":")!==-1&&i.indexOf("[")===-1&&(i=`[${i}]`);const n=this._ports[s],t=this._connectionTokens[s];let a=`path=${encodeURIComponent(C.path)}`;return typeof t=="string"&&(a+=`&${e.connectionTokenQueryName}=${encodeURIComponent(t)}`),y.URI.from({scheme:k.isWeb?this._preferredWebSchema:D.vscodeRemoteResource,authority:`${i}:${n}`,path:this._remoteResourcesPath,query:a})}}e.RemoteAuthorities=new S;class f{uriToBrowserUri(C){return C.scheme===D.vscodeRemote?e.RemoteAuthorities.rewrite(C):C.scheme===D.file&&(k.isNative||k.isWebWorker&&k.globals.origin===`${D.vscodeFileResource}://${f.FALLBACK_AUTHORITY}`)?C.with({scheme:D.vscodeFileResource,authority:C.authority||f.FALLBACK_AUTHORITY,query:null,fragment:null}):C}}f.FALLBACK_AUTHORITY="vscode-app",e.FileAccess=new f;var _;(function(g){const C=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);g.CoopAndCoep=Object.freeze(C.get("3"));const s="vscode-coi";function i(t){let a;typeof t=="string"?a=new URL(t).searchParams:t instanceof URL?a=t.searchParams:y.URI.isUri(t)&&(a=new URL(t.toString(!0)).searchParams);const u=a?.get(s);if(u)return C.get(u)}g.getHeadersFromQuery=i;function n(t,a,u){if(!globalThis.crossOriginIsolated)return;const h=a&&u?"3":u?"2":"1";t instanceof URLSearchParams?t.set(s,h):t[s]=h}g.addSearchParam=n})(_||(e.COI=_={}))}),define(ne[7],se([1,0,52,217,44,60,9,6,304,2,54,17]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.h=e.DragAndDropObserver=e.ModifierKeyEmitter=e.basicMarkupHtmlTags=e.hookDomPurifyHrefAndSrcSanitizer=e.asCssValueWithDefault=e.asCSSPropertyValue=e.asCSSUrl=e.animate=e.windowOpenNoOpener=e.computeScreenAwareSize=e.hide=e.show=e.setVisibility=e.$=e.Namespace=e.reset=e.prepend=e.append=e.trackFocus=e.restoreParentsScrollTop=e.saveParentsScrollTop=e.EventHelper=e.isEventLike=e.EventType=e.isHTMLElement=e.removeCSSRulesContainingSelector=e.createCSSRule=e.createStyleSheet=e.getActiveElement=e.getShadowRoot=e.isInShadowDOM=e.isShadowRoot=e.hasParentWithClass=e.findParentWithClass=e.isAncestor=e.getTotalHeight=e.getContentHeight=e.getContentWidth=e.getTotalWidth=e.getDomNodeZoomLevel=e.getDomNodePagePosition=e.size=e.getTopLeftOffset=e.Dimension=e.getClientArea=e.getComputedStyle=e.scheduleAtNextAnimationFrame=e.runAtThisOrScheduleAtNextAnimationFrame=e.addDisposableGenericMouseUpListener=e.addDisposableGenericMouseDownListener=e.addStandardDisposableGenericMouseUpListener=e.addStandardDisposableGenericMouseDownListener=e.addStandardDisposableListener=e.addDisposableListener=e.isInDOM=e.clearNode=void 0;function i(Ce){for(;Ce.firstChild;)Ce.firstChild.remove()}e.clearNode=i;function n(Ce){var be;return(be=Ce?.isConnected)!==null&&be!==void 0?be:!1}e.isInDOM=n;class t{constructor(be,Ie,Ne,Re){this._node=be,this._type=Ie,this._handler=Ne,this._options=Re||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function a(Ce,be,Ie,Ne){return new t(Ce,be,Ie,Ne)}e.addDisposableListener=a;function u(Ce){return function(be){return Ce(new D.StandardMouseEvent(be))}}function h(Ce){return function(be){return Ce(new y.StandardKeyboardEvent(be))}}const r=function(be,Ie,Ne,Re){let Ve=Ne;return Ie==="click"||Ie==="mousedown"?Ve=u(Ne):(Ie==="keydown"||Ie==="keypress"||Ie==="keyup")&&(Ve=h(Ne)),a(be,Ie,Ve,Re)};e.addStandardDisposableListener=r;const c=function(be,Ie,Ne){const Re=u(Ie);return d(be,Re,Ne)};e.addStandardDisposableGenericMouseDownListener=c;const o=function(be,Ie,Ne){const Re=u(Ie);return l(be,Re,Ne)};e.addStandardDisposableGenericMouseUpListener=o;function d(Ce,be,Ie){return a(Ce,s.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_DOWN:e.EventType.MOUSE_DOWN,be,Ie)}e.addDisposableGenericMouseDownListener=d;function l(Ce,be,Ie){return a(Ce,s.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_UP:e.EventType.MOUSE_UP,be,Ie)}e.addDisposableGenericMouseUpListener=l;class p{constructor(be,Ie=0){this._runner=be,this.priority=Ie,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(be){(0,S.onUnexpectedError)(be)}}static sort(be,Ie){return Ie.priority-be.priority}}(function(){let Ce=[],be=null,Ie=!1,Ne=!1;const Re=()=>{for(Ie=!1,be=Ce,Ce=[],Ne=!0;be.length>0;)be.sort(p.sort),be.shift().execute();Ne=!1};e.scheduleAtNextAnimationFrame=(Ve,ze=0)=>{const We=new p(Ve,ze);return Ce.push(We),Ie||(Ie=!0,requestAnimationFrame(Re)),We},e.runAtThisOrScheduleAtNextAnimationFrame=(Ve,ze)=>{if(Ne){const We=new p(Ve,ze);return be.push(We),We}else return(0,e.scheduleAtNextAnimationFrame)(Ve,ze)}})();function m(Ce){return document.defaultView.getComputedStyle(Ce,null)}e.getComputedStyle=m;function v(Ce){if(Ce!==document.body)return new w(Ce.clientWidth,Ce.clientHeight);if(s.isIOS&&window.visualViewport)return new w(window.visualViewport.width,window.visualViewport.height);if(window.innerWidth&&window.innerHeight)return new w(window.innerWidth,window.innerHeight);if(document.body&&document.body.clientWidth&&document.body.clientHeight)return new w(document.body.clientWidth,document.body.clientHeight);if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientHeight)return new w(document.documentElement.clientWidth,document.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}e.getClientArea=v;class b{static convertToPixels(be,Ie){return parseFloat(Ie)||0}static getDimension(be,Ie,Ne){const Re=m(be),Ve=Re?Re.getPropertyValue(Ie):"0";return b.convertToPixels(be,Ve)}static getBorderLeftWidth(be){return b.getDimension(be,"border-left-width","borderLeftWidth")}static getBorderRightWidth(be){return b.getDimension(be,"border-right-width","borderRightWidth")}static getBorderTopWidth(be){return b.getDimension(be,"border-top-width","borderTopWidth")}static getBorderBottomWidth(be){return b.getDimension(be,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(be){return b.getDimension(be,"padding-left","paddingLeft")}static getPaddingRight(be){return b.getDimension(be,"padding-right","paddingRight")}static getPaddingTop(be){return b.getDimension(be,"padding-top","paddingTop")}static getPaddingBottom(be){return b.getDimension(be,"padding-bottom","paddingBottom")}static getMarginLeft(be){return b.getDimension(be,"margin-left","marginLeft")}static getMarginTop(be){return b.getDimension(be,"margin-top","marginTop")}static getMarginRight(be){return b.getDimension(be,"margin-right","marginRight")}static getMarginBottom(be){return b.getDimension(be,"margin-bottom","marginBottom")}}class w{constructor(be,Ie){this.width=be,this.height=Ie}with(be=this.width,Ie=this.height){return be!==this.width||Ie!==this.height?new w(be,Ie):this}static is(be){return typeof be=="object"&&typeof be.height=="number"&&typeof be.width=="number"}static lift(be){return be instanceof w?be:new w(be.width,be.height)}static equals(be,Ie){return be===Ie?!0:!be||!Ie?!1:be.width===Ie.width&&be.height===Ie.height}}e.Dimension=w,w.None=new w(0,0);function E(Ce){let be=Ce.offsetParent,Ie=Ce.offsetTop,Ne=Ce.offsetLeft;for(;(Ce=Ce.parentNode)!==null&&Ce!==document.body&&Ce!==document.documentElement;){Ie-=Ce.scrollTop;const Re=U(Ce)?null:m(Ce);Re&&(Ne-=Re.direction!=="rtl"?Ce.scrollLeft:-Ce.scrollLeft),Ce===be&&(Ne+=b.getBorderLeftWidth(Ce),Ie+=b.getBorderTopWidth(Ce),Ie+=Ce.offsetTop,Ne+=Ce.offsetLeft,be=Ce.offsetParent)}return{left:Ne,top:Ie}}e.getTopLeftOffset=E;function I(Ce,be,Ie){typeof be=="number"&&(Ce.style.width=`${be}px`),typeof Ie=="number"&&(Ce.style.height=`${Ie}px`)}e.size=I;function M(Ce){const be=Ce.getBoundingClientRect();return{left:be.left+window.scrollX,top:be.top+window.scrollY,width:be.width,height:be.height}}e.getDomNodePagePosition=M;function P(Ce){let be=Ce,Ie=1;do{const Ne=m(be).zoom;Ne!=null&&Ne!=="1"&&(Ie*=Ne),be=be.parentElement}while(be!==null&&be!==document.documentElement);return Ie}e.getDomNodeZoomLevel=P;function x(Ce){const be=b.getMarginLeft(Ce)+b.getMarginRight(Ce);return Ce.offsetWidth+be}e.getTotalWidth=x;function T(Ce){const be=b.getBorderLeftWidth(Ce)+b.getBorderRightWidth(Ce),Ie=b.getPaddingLeft(Ce)+b.getPaddingRight(Ce);return Ce.offsetWidth-be-Ie}e.getContentWidth=T;function A(Ce){const be=b.getBorderTopWidth(Ce)+b.getBorderBottomWidth(Ce),Ie=b.getPaddingTop(Ce)+b.getPaddingBottom(Ce);return Ce.offsetHeight-be-Ie}e.getContentHeight=A;function N(Ce){const be=b.getMarginTop(Ce)+b.getMarginBottom(Ce);return Ce.offsetHeight+be}e.getTotalHeight=N;function F(Ce,be){for(;Ce;){if(Ce===be)return!0;Ce=Ce.parentNode}return!1}e.isAncestor=F;function O(Ce,be,Ie){for(;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;){if(Ce.classList.contains(be))return Ce;if(Ie){if(typeof Ie=="string"){if(Ce.classList.contains(Ie))return null}else if(Ce===Ie)return null}Ce=Ce.parentNode}return null}e.findParentWithClass=O;function W(Ce,be,Ie){return!!O(Ce,be,Ie)}e.hasParentWithClass=W;function U(Ce){return Ce&&!!Ce.host&&!!Ce.mode}e.isShadowRoot=U;function j(Ce){return!!R(Ce)}e.isInShadowDOM=j;function R(Ce){for(;Ce.parentNode;){if(Ce===document.body)return null;Ce=Ce.parentNode}return U(Ce)?Ce:null}e.getShadowRoot=R;function K(){let Ce=document.activeElement;for(;Ce?.shadowRoot;)Ce=Ce.shadowRoot.activeElement;return Ce}e.getActiveElement=K;function G(Ce=document.getElementsByTagName("head")[0],be){const Ie=document.createElement("style");return Ie.type="text/css",Ie.media="screen",be?.(Ie),Ce.appendChild(Ie),Ie}e.createStyleSheet=G;let Z=null;function J(){return Z||(Z=G()),Z}function X(Ce){var be,Ie;return!((be=Ce?.sheet)===null||be===void 0)&&be.rules?Ce.sheet.rules:!((Ie=Ce?.sheet)===null||Ie===void 0)&&Ie.cssRules?Ce.sheet.cssRules:[]}function H(Ce,be,Ie=J()){!Ie||!be||Ie.sheet.insertRule(Ce+"{"+be+"}",0)}e.createCSSRule=H;function B(Ce,be=J()){if(!be)return;const Ie=X(be),Ne=[];for(let Re=0;Re=0;Re--)be.sheet.deleteRule(Ne[Re])}e.removeCSSRulesContainingSelector=B;function V(Ce){return typeof HTMLElement=="object"?Ce instanceof HTMLElement:Ce&&typeof Ce=="object"&&Ce.nodeType===1&&typeof Ce.nodeName=="string"}e.isHTMLElement=V,e.EventType={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:L.isWebKit?"webkitAnimationStart":"animationstart",ANIMATION_END:L.isWebKit?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:L.isWebKit?"webkitAnimationIteration":"animationiteration"};function Y(Ce){const be=Ce;return!!(be&&typeof be.preventDefault=="function"&&typeof be.stopPropagation=="function")}e.isEventLike=Y,e.EventHelper={stop:(Ce,be)=>(Ce.preventDefault(),be&&Ce.stopPropagation(),Ce)};function ie(Ce){const be=[];for(let Ie=0;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;Ie++)be[Ie]=Ce.scrollTop,Ce=Ce.parentNode;return be}e.saveParentsScrollTop=ie;function ae(Ce,be){for(let Ie=0;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;Ie++)Ce.scrollTop!==be[Ie]&&(Ce.scrollTop=be[Ie]),Ce=Ce.parentNode}e.restoreParentsScrollTop=ae;class ce extends g.Disposable{static hasFocusWithin(be){const Ie=R(be),Ne=Ie?Ie.activeElement:document.activeElement;return F(Ne,be)}constructor(be){super(),this._onDidFocus=this._register(new f.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new f.Emitter),this.onDidBlur=this._onDidBlur.event;let Ie=ce.hasFocusWithin(be),Ne=!1;const Re=()=>{Ne=!1,Ie||(Ie=!0,this._onDidFocus.fire())},Ve=()=>{Ie&&(Ne=!0,window.setTimeout(()=>{Ne&&(Ne=!1,Ie=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{ce.hasFocusWithin(be)!==Ie&&(Ie?Ve():Re())},this._register(a(be,e.EventType.FOCUS,Re,!0)),this._register(a(be,e.EventType.BLUR,Ve,!0)),this._register(a(be,e.EventType.FOCUS_IN,()=>this._refreshStateHandler())),this._register(a(be,e.EventType.FOCUS_OUT,()=>this._refreshStateHandler()))}}function de(Ce){return new ce(Ce)}e.trackFocus=de;function he(Ce,...be){if(Ce.append(...be),be.length===1&&typeof be[0]!="string")return be[0]}e.append=he;function ue(Ce,be){return Ce.insertBefore(be,Ce.firstChild),be}e.prepend=ue;function te(Ce,...be){Ce.innerText="",he(Ce,...be)}e.reset=te;const q=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var z;(function(Ce){Ce.HTML="http://www.w3.org/1999/xhtml",Ce.SVG="http://www.w3.org/2000/svg"})(z||(e.Namespace=z={}));function ee(Ce,be,Ie,...Ne){const Re=q.exec(be);if(!Re)throw new Error("Bad use of emmet");const Ve=Re[1]||"div";let ze;return Ce!==z.HTML?ze=document.createElementNS(Ce,Ve):ze=document.createElement(Ve),Re[3]&&(ze.id=Re[3]),Re[4]&&(ze.className=Re[4].replace(/\./g," ").trim()),Ie&&Object.entries(Ie).forEach(([We,qe])=>{typeof qe>"u"||(/^on\w+$/.test(We)?ze[We]=qe:We==="selected"?qe&&ze.setAttribute(We,"true"):ze.setAttribute(We,qe))}),ze.append(...Ne),ze}function $(Ce,be,...Ie){return ee(z.HTML,Ce,be,...Ie)}e.$=$,$.SVG=function(Ce,be,...Ie){return ee(z.SVG,Ce,be,...Ie)};function re(Ce,...be){Ce?oe(...be):ge(...be)}e.setVisibility=re;function oe(...Ce){for(const be of Ce)be.style.display="",be.removeAttribute("aria-hidden")}e.show=oe;function ge(...Ce){for(const be of Ce)be.style.display="none",be.setAttribute("aria-hidden","true")}e.hide=ge;function ve(Ce){const be=window.devicePixelRatio*Ce;return Math.max(1,Math.floor(be))/window.devicePixelRatio}e.computeScreenAwareSize=ve;function Se(Ce){window.open(Ce,"_blank","noopener")}e.windowOpenNoOpener=Se;function Le(Ce){const be=()=>{Ce(),Ie=(0,e.scheduleAtNextAnimationFrame)(be)};let Ie=(0,e.scheduleAtNextAnimationFrame)(be);return(0,g.toDisposable)(()=>Ie.dispose())}e.animate=Le,C.RemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href)?"https":"http");function De(Ce){return Ce?`url('${C.FileAccess.uriToBrowserUri(Ce).toString(!0).replace(/'/g,"%27")}')`:"url('')"}e.asCSSUrl=De;function ye(Ce){return`'${Ce.replace(/'/g,"%27")}'`}e.asCSSPropertyValue=ye;function Ee(Ce,be){if(Ce!==void 0){const Ie=Ce.match(/^\s*var\((.+)\)$/);if(Ie){const Ne=Ie[1].split(",",2);return Ne.length===2&&(be=Ee(Ne[1].trim(),be)),`var(${Ne[0]}, ${be})`}return Ce}return be}e.asCssValueWithDefault=Ee;function Me(Ce,be=!1){const Ie=document.createElement("a");return _.addHook("afterSanitizeAttributes",Ne=>{for(const Re of["href","src"])if(Ne.hasAttribute(Re)){const Ve=Ne.getAttribute(Re);if(Re==="href"&&Ve.startsWith("#"))continue;if(Ie.href=Ve,!Ce.includes(Ie.protocol.replace(/:$/,""))){if(be&&Re==="src"&&Ie.href.startsWith("data:"))continue;Ne.removeAttribute(Re)}}}),(0,g.toDisposable)(()=>{_.removeHook("afterSanitizeAttributes")})}e.hookDomPurifyHrefAndSrcSanitizer=Me,e.basicMarkupHtmlTags=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);const Pe=Object.freeze({ALLOWED_TAGS:["a","button","blockquote","code","div","h1","h2","h3","h4","h5","h6","hr","input","label","li","p","pre","select","small","span","strong","textarea","ul","ol"],ALLOWED_ATTR:["href","data-href","data-command","target","title","name","src","alt","class","id","role","tabindex","style","data-code","width","height","align","x-dispatch","required","checked","placeholder","type","start"],RETURN_DOM:!1,RETURN_DOM_FRAGMENT:!1,RETURN_TRUSTED_TYPE:!0});class Fe extends f.Emitter{constructor(){super(),this._subscriptions=new g.DisposableStore,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(a(window,"keydown",be=>{if(be.defaultPrevented)return;const Ie=new y.StandardKeyboardEvent(be);if(!(Ie.keyCode===6&&be.repeat)){if(be.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(be.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(be.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(be.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(Ie.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=be.altKey,this._keyStatus.ctrlKey=be.ctrlKey,this._keyStatus.metaKey=be.metaKey,this._keyStatus.shiftKey=be.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=be,this.fire(this._keyStatus))}},!0)),this._subscriptions.add(a(window,"keyup",be=>{be.defaultPrevented||(!be.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!be.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!be.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!be.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=be.altKey,this._keyStatus.ctrlKey=be.ctrlKey,this._keyStatus.metaKey=be.metaKey,this._keyStatus.shiftKey=be.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=be,this.fire(this._keyStatus)))},!0)),this._subscriptions.add(a(document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),this._subscriptions.add(a(document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),this._subscriptions.add(a(document.body,"mousemove",be=>{be.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),this._subscriptions.add(a(window,"blur",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return Fe.instance||(Fe.instance=new Fe),Fe.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}e.ModifierKeyEmitter=Fe;class _e extends g.Disposable{constructor(be,Ie){super(),this.element=be,this.callbacks=Ie,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this._register(a(this.element,e.EventType.DRAG_ENTER,be=>{this.counter++,this.dragStartTime=be.timeStamp,this.callbacks.onDragEnter(be)})),this._register(a(this.element,e.EventType.DRAG_OVER,be=>{var Ie,Ne;be.preventDefault(),(Ne=(Ie=this.callbacks).onDragOver)===null||Ne===void 0||Ne.call(Ie,be,be.timeStamp-this.dragStartTime)})),this._register(a(this.element,e.EventType.DRAG_LEAVE,be=>{this.counter--,this.counter===0&&(this.dragStartTime=0,this.callbacks.onDragLeave(be))})),this._register(a(this.element,e.EventType.DRAG_END,be=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDragEnd(be)})),this._register(a(this.element,e.EventType.DROP,be=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDrop(be)}))}}e.DragAndDropObserver=_e;const me=/(?[\w\-]+)?(?:#(?[\w\-]+))?(?(?:\.(?:[\w\-]+))*)(?:@(?(?:[\w\_])+))?/;function le(Ce,...be){let Ie,Ne;Array.isArray(be[0])?(Ie={},Ne=be[0]):(Ie=be[0]||{},Ne=be[1]);const Re=me.exec(Ce);if(!Re||!Re.groups)throw new Error("Bad use of h");const Ve=Re.groups.tag||"div",ze=document.createElement(Ve);Re.groups.id&&(ze.id=Re.groups.id);const We=[];if(Re.groups.class)for(const Oe of Re.groups.class.split("."))Oe!==""&&We.push(Oe);if(Ie.className!==void 0)for(const Oe of Ie.className.split("."))Oe!==""&&We.push(Oe);We.length>0&&(ze.className=We.join(" "));const qe={};if(Re.groups.name&&(qe[Re.groups.name]=ze),Ne)for(const Oe of Ne)Oe instanceof HTMLElement?ze.appendChild(Oe):typeof Oe=="string"?ze.append(Oe):"root"in Oe&&(Object.assign(qe,Oe),ze.appendChild(Oe.root));for(const[Oe,Ge]of Object.entries(Ie))if(Oe!=="className")if(Oe==="style")for(const[Qe,st]of Object.entries(Ge))ze.style.setProperty(pe(Qe),typeof st=="number"?st+"px":""+st);else Oe==="tabIndex"?ze.tabIndex=Ge:ze.setAttribute(pe(Oe),Ge.toString());return qe.root=ze,qe}e.h=le;function pe(Ce){return Ce.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}}),define(ne[305],se([1,0,7]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createElement=e.renderFormattedText=e.renderText=void 0;function k(s,i={}){const n=D(i);return n.textContent=s,n}e.renderText=k;function y(s,i={}){const n=D(i);return f(n,_(s,!!i.renderCodeSegments),i.actionHandler,i.renderCodeSegments),n}e.renderFormattedText=y;function D(s){const i=s.inline?"span":"div",n=document.createElement(i);return s.className&&(n.className=s.className),n}e.createElement=D;class S{constructor(i){this.source=i,this.index=0}eos(){return this.index>=this.source.length}next(){const i=this.peek();return this.advance(),i}peek(){return this.source[this.index]}advance(){this.index++}}function f(s,i,n,t){let a;if(i.type===2)a=document.createTextNode(i.content||"");else if(i.type===3)a=document.createElement("b");else if(i.type===4)a=document.createElement("i");else if(i.type===7&&t)a=document.createElement("code");else if(i.type===5&&n){const u=document.createElement("a");n.disposables.add(L.addStandardDisposableListener(u,"click",h=>{n.callback(String(i.index),h)})),a=u}else i.type===8?a=document.createElement("br"):i.type===1&&(a=s);a&&s!==a&&s.appendChild(a),a&&Array.isArray(i.children)&&i.children.forEach(u=>{f(a,u,n,t)})}function _(s,i){const n={type:1,children:[]};let t=0,a=n;const u=[],h=new S(s);for(;!h.eos();){let r=h.next();const c=r==="\\"&&C(h.peek(),i)!==0;if(c&&(r=h.next()),!c&&g(r,i)&&r===h.peek()){h.advance(),a.type===2&&(a=u.pop());const o=C(r,i);if(a.type===o||a.type===5&&o===6)a=u.pop();else{const d={type:o,children:[]};o===5&&(d.index=t,t++),a.children.push(d),u.push(a),a=d}}else if(r===` -`)a.type===2&&(a=u.pop()),a.children.push({type:8});else if(a.type!==2){const o={type:2,content:r};a.children.push(o),u.push(a),a=o}else a.content+=r}return a.type===2&&(a=u.pop()),u.length,n}function g(s,i){return C(s,i)!==0}function C(s,i){switch(s){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return i?7:0;default:return 0}}}),define(ne[152],se([1,0,7,2]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalPointerMoveMonitor=void 0;class y{constructor(){this._hooks=new k.DisposableStore,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(S,f){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const _=this._onStopCallback;this._onStopCallback=null,S&&_&&_(f)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(S,f,_,g,C){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=g,this._onStopCallback=C;let s=S;try{S.setPointerCapture(f),this._hooks.add((0,k.toDisposable)(()=>{try{S.releasePointerCapture(f)}catch{}}))}catch{s=window}this._hooks.add(L.addDisposableListener(s,L.EventType.POINTER_MOVE,i=>{if(i.buttons!==_){this.stopMonitoring(!0);return}i.preventDefault(),this._pointerMoveCallback(i)})),this._hooks.add(L.addDisposableListener(s,L.EventType.POINTER_UP,i=>this.stopMonitoring(!0)))}}e.GlobalPointerMoveMonitor=y}),define(ne[61],se([1,0,7,14,106,2,64]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Gesture=e.EventType=void 0;var f;(function(g){g.Tap="-monaco-gesturetap",g.Change="-monaco-gesturechange",g.Start="-monaco-gesturestart",g.End="-monaco-gesturesend",g.Contextmenu="-monaco-gesturecontextmenu"})(f||(e.EventType=f={}));class _ extends D.Disposable{constructor(){super(),this.dispatched=!1,this.targets=new S.LinkedList,this.ignoreTargets=new S.LinkedList,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(L.addDisposableListener(document,"touchstart",C=>this.onTouchStart(C),{passive:!1})),this._register(L.addDisposableListener(document,"touchend",C=>this.onTouchEnd(C))),this._register(L.addDisposableListener(document,"touchmove",C=>this.onTouchMove(C),{passive:!1}))}static addTarget(C){if(!_.isTouchDevice())return D.Disposable.None;_.INSTANCE||(_.INSTANCE=new _);const s=_.INSTANCE.targets.push(C);return(0,D.toDisposable)(s)}static ignoreTarget(C){if(!_.isTouchDevice())return D.Disposable.None;_.INSTANCE||(_.INSTANCE=new _);const s=_.INSTANCE.ignoreTargets.push(C);return(0,D.toDisposable)(s)}static isTouchDevice(){return"ontouchstart"in window||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(C){const s=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,n=C.targetTouches.length;i=_.HOLD_DELAY&&Math.abs(u.initialPageX-k.tail(u.rollingPageX))<30&&Math.abs(u.initialPageY-k.tail(u.rollingPageY))<30){const r=this.newGestureEvent(f.Contextmenu,u.initialTarget);r.pageX=k.tail(u.rollingPageX),r.pageY=k.tail(u.rollingPageY),this.dispatchEvent(r)}else if(i===1){const r=k.tail(u.rollingPageX),c=k.tail(u.rollingPageY),o=k.tail(u.rollingTimestamps)-u.rollingTimestamps[0],d=r-u.rollingPageX[0],l=c-u.rollingPageY[0],p=[...this.targets].filter(m=>u.initialTarget instanceof Node&&m.contains(u.initialTarget));this.inertia(p,s,Math.abs(d)/o,d>0?1:-1,r,Math.abs(l)/o,l>0?1:-1,c)}this.dispatchEvent(this.newGestureEvent(f.End,u.initialTarget)),delete this.activeTouches[a.identifier]}this.dispatched&&(C.preventDefault(),C.stopPropagation(),this.dispatched=!1)}newGestureEvent(C,s){const i=document.createEvent("CustomEvent");return i.initEvent(C,!1,!0),i.initialTarget=s,i.tapCount=0,i}dispatchEvent(C){if(C.type===f.Tap){const s=new Date().getTime();let i=0;s-this._lastSetTapCountTime>_.CLEAR_TAP_COUNT_TIME?i=1:i=2,this._lastSetTapCountTime=s,C.tapCount=i}else(C.type===f.Change||C.type===f.Contextmenu)&&(this._lastSetTapCountTime=0);if(C.initialTarget instanceof Node){for(const s of this.ignoreTargets)if(s.contains(C.initialTarget))return;for(const s of this.targets)s.contains(C.initialTarget)&&(s.dispatchEvent(C),this.dispatched=!0)}}inertia(C,s,i,n,t,a,u,h){this.handle=L.scheduleAtNextAnimationFrame(()=>{const r=Date.now(),c=r-s;let o=0,d=0,l=!0;i+=_.SCROLL_FRICTION*c,a+=_.SCROLL_FRICTION*c,i>0&&(l=!1,o=n*i*c),a>0&&(l=!1,d=u*a*c);const p=this.newGestureEvent(f.Change);p.translationX=o,p.translationY=d,C.forEach(m=>m.dispatchEvent(p)),l||this.inertia(C,r,i,n,t+o,a,u,h+d)})}onTouchMove(C){const s=Date.now();for(let i=0,n=C.changedTouches.length;i3&&(a.rollingPageX.shift(),a.rollingPageY.shift(),a.rollingTimestamps.shift()),a.rollingPageX.push(t.pageX),a.rollingPageY.push(t.pageY),a.rollingTimestamps.push(s)}this.dispatched&&(C.preventDefault(),C.stopPropagation(),this.dispatched=!1)}}e.Gesture=_,_.SCROLL_FRICTION=-.005,_.HOLD_DELAY=700,_.CLEAR_TAP_COUNT_TIME=400,ke([y.memoize],_,"isTouchDevice",null)}),define(ne[49],se([1,0,7,393]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.status=e.alert=e.setARIAContainer=void 0;const k=2e4;let y,D,S,f,_;function g(n){y=document.createElement("div"),y.className="monaco-aria-container";const t=()=>{const u=document.createElement("div");return u.className="monaco-alert",u.setAttribute("role","alert"),u.setAttribute("aria-atomic","true"),y.appendChild(u),u};D=t(),S=t();const a=()=>{const u=document.createElement("div");return u.className="monaco-status",u.setAttribute("aria-live","polite"),u.setAttribute("aria-atomic","true"),y.appendChild(u),u};f=a(),_=a(),n.appendChild(y)}e.setARIAContainer=g;function C(n){y&&(D.textContent!==n?(L.clearNode(S),i(D,n)):(L.clearNode(D),i(S,n)))}e.alert=C;function s(n){y&&(f.textContent!==n?(L.clearNode(_),i(f,n)):(L.clearNode(f),i(_,n)))}e.status=s;function i(n,t){L.clearNode(n),t.length>k&&(t=t.substr(0,k)),n.textContent=t,n.style.visibility="hidden",n.style.visibility="visible"}}),define(ne[306],se([1,0,217,7,2,17,166,397]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextView=e.layout=e.LayoutAnchorMode=e.isAnchor=void 0;function f(i){const n=i;return!!n&&typeof n.x=="number"&&typeof n.y=="number"}e.isAnchor=f;var _;(function(i){i[i.AVOID=0]="AVOID",i[i.ALIGN=1]="ALIGN"})(_||(e.LayoutAnchorMode=_={}));function g(i,n,t){const a=t.mode===_.ALIGN?t.offset:t.offset+t.size,u=t.mode===_.ALIGN?t.offset+t.size:t.offset;return t.position===0?n<=i-a?a:n<=u?u-n:Math.max(i-n,0):n<=u?u-n:n<=i-a?a:0}e.layout=g;class C extends y.Disposable{constructor(n,t){super(),this.container=null,this.delegate=null,this.toDisposeOnClean=y.Disposable.None,this.toDisposeOnSetContainer=y.Disposable.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=k.$(".context-view"),this.useFixedPosition=!1,this.useShadowDOM=!1,k.hide(this.view),this.setContainer(n,t),this._register((0,y.toDisposable)(()=>this.setContainer(null,1)))}setContainer(n,t){var a;if(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,(a=this.shadowRootHostElement)===null||a===void 0||a.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),n){if(this.container=n,this.useFixedPosition=t!==1,this.useShadowDOM=t===3,this.useShadowDOM){this.shadowRootHostElement=k.$(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const h=document.createElement("style");h.textContent=s,this.shadowRoot.appendChild(h),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(k.$("slot"))}else this.container.appendChild(this.view);const u=new y.DisposableStore;C.BUBBLE_UP_EVENTS.forEach(h=>{u.add(k.addStandardDisposableListener(this.container,h,r=>{this.onDOMEvent(r,!1)}))}),C.BUBBLE_DOWN_EVENTS.forEach(h=>{u.add(k.addStandardDisposableListener(this.container,h,r=>{this.onDOMEvent(r,!0)},!0))}),this.toDisposeOnSetContainer=u}}show(n){var t,a;this.isVisible()&&this.hide(),k.clearNode(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="2575",this.view.style.position=this.useFixedPosition?"fixed":"absolute",k.show(this.view),this.toDisposeOnClean=n.render(this.view)||y.Disposable.None,this.delegate=n,this.doLayout(),(a=(t=this.delegate).focus)===null||a===void 0||a.call(t)}getViewElement(){return this.view}layout(){if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(D.isIOS&&L.BrowserFeatures.pointerEvents)){this.hide();return}this.delegate.layout&&this.delegate.layout(),this.doLayout()}}doLayout(){if(!this.isVisible())return;const n=this.delegate.getAnchor();let t;if(k.isHTMLElement(n)){const p=k.getDomNodePagePosition(n),m=k.getDomNodeZoomLevel(n);t={top:p.top*m,left:p.left*m,width:p.width*m,height:p.height*m}}else f(n)?t={top:n.y,left:n.x,width:n.width||1,height:n.height||2}:t={top:n.posy,left:n.posx,width:2,height:2};const a=k.getTotalWidth(this.view),u=k.getTotalHeight(this.view),h=this.delegate.anchorPosition||0,r=this.delegate.anchorAlignment||0,c=this.delegate.anchorAxisAlignment||0;let o,d;if(c===0){const p={offset:t.top-window.pageYOffset,size:t.height,position:h===0?0:1},m={offset:t.left,size:t.width,position:r===0?0:1,mode:_.ALIGN};o=g(window.innerHeight,u,p)+window.pageYOffset,S.Range.intersects({start:o,end:o+u},{start:p.offset,end:p.offset+p.size})&&(m.mode=_.AVOID),d=g(window.innerWidth,a,m)}else{const p={offset:t.left,size:t.width,position:r===0?0:1},m={offset:t.top,size:t.height,position:h===0?0:1,mode:_.ALIGN};d=g(window.innerWidth,a,p),S.Range.intersects({start:d,end:d+a},{start:p.offset,end:p.offset+p.size})&&(m.mode=_.AVOID),o=g(window.innerHeight,u,m)+window.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(h===0?"bottom":"top"),this.view.classList.add(r===0?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const l=k.getDomNodePagePosition(this.container);this.view.style.top=`${o-(this.useFixedPosition?k.getDomNodePagePosition(this.view).top:l.top)}px`,this.view.style.left=`${d-(this.useFixedPosition?k.getDomNodePagePosition(this.view).left:l.left)}px`,this.view.style.width="initial"}hide(n){const t=this.delegate;this.delegate=null,t?.onHide&&t.onHide(n),this.toDisposeOnClean.dispose(),k.hide(this.view)}isVisible(){return!!this.delegate}onDOMEvent(n,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(n,document.activeElement):t&&!k.isAncestor(n.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}e.ContextView=C,C.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],C.BUBBLE_DOWN_EVENTS=["click"];const s=` - :host { - all: initial; /* 1st rule so subsequent properties are reset. */ - } - - .codicon[class*='codicon-'] { - font: normal normal normal 16px/1 codicon; - display: inline-block; - text-decoration: none; - text-rendering: auto; - text-align: center; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - } - - :host { - font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif; - } - - :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; } - :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; } - :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; } - :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; } - :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; } - - :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; } - :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; } - :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; } - :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; } - :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; } - - :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; } - :host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; } - :host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; } - :host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; } - :host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; } -`}),define(ne[307],se([1,0,7,11,398]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CountBadge=void 0;class y{constructor(S,f,_){this.options=f,this.styles=_,this.count=0,this.element=(0,L.append)(S,(0,L.$)(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(S){this.count=S,this.render()}setTitleFormat(S){this.titleFormat=S,this.render()}render(){var S,f;this.element.textContent=(0,k.format)(this.countFormat,this.count),this.element.title=(0,k.format)(this.titleFormat,this.count),this.element.style.backgroundColor=(S=this.styles.badgeBackground)!==null&&S!==void 0?S:"",this.element.style.color=(f=this.styles.badgeForeground)!==null&&f!==void 0?f:"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}e.CountBadge=y}),define(ne[572],se([1,0,7,44,61,39,6,266]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DropdownMenu=void 0;class f extends D.ActionRunner{constructor(C,s){super(),this._onDidChangeVisibility=this._register(new S.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=(0,L.append)(C,(0,L.$)(".monaco-dropdown")),this._label=(0,L.append)(this._element,(0,L.$)(".dropdown-label"));let i=s.labelRenderer;i||(i=t=>(t.textContent=s.label||"",null));for(const t of[L.EventType.CLICK,L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this.element,t,a=>L.EventHelper.stop(a,!0)));for(const t of[L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this._label,t,a=>{a instanceof MouseEvent&&(a.detail>1||a.button!==0)||(this.visible?this.hide():this.show())}));this._register((0,L.addDisposableListener)(this._label,L.EventType.KEY_UP,t=>{const a=new k.StandardKeyboardEvent(t);(a.equals(3)||a.equals(10))&&(L.EventHelper.stop(t,!0),this.visible?this.hide():this.show())}));const n=i(this._label);n&&this._register(n),this._register(y.Gesture.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class _ extends f{constructor(C,s){super(C,s),this._options=s,this._actions=[],this.actions=s.actions||[]}set menuOptions(C){this._menuOptions=C}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(C){this._actions=C}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(C,s)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(C,s):void 0,getKeyBinding:C=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(C):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}e.DropdownMenu=_}),define(ne[129],se([1,0,7,26]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderIcon=e.renderLabelWithIcons=void 0;const y=new RegExp(`(\\\\)?\\$\\((${k.ThemeIcon.iconNameExpression}(?:${k.ThemeIcon.iconModifierExpression})?)\\)`,"g");function D(f){const _=new Array;let g,C=0,s=0;for(;(g=y.exec(f))!==null;){s=g.index||0,C{C=s===`\r -`?-1:0,i+=g;for(const n of _)n.end<=i||(n.start>=i&&(n.start+=C),n.end>=i&&(n.end+=C));return g+=C,"\u23CE"})}}e.HighlightedLabel=D}),define(ne[222],se([1,0,7,216,47,558,402]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.KeybindingLabel=e.unthemedKeybindingLabelOptions=void 0;const S=L.$;e.unthemedKeybindingLabelOptions={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class f{constructor(g,C,s){this.os=C,this.keyElements=new Set,this.options=s||Object.create(null);const i=this.options.keybindingLabelForeground;this.domNode=L.append(g,S(".monaco-keybinding")),i&&(this.domNode.style.color=i),this.didEverRender=!1,g.appendChild(this.domNode)}get element(){return this.domNode}set(g,C){this.didEverRender&&this.keybinding===g&&f.areSame(this.matches,C)||(this.keybinding=g,this.matches=C,this.render())}render(){var g;if(this.clear(),this.keybinding){const C=this.keybinding.getChords();C[0]&&this.renderChord(this.domNode,C[0],this.matches?this.matches.firstPart:null);for(let i=1;i{for(const _ of S)this.getRenderer(f).disposeTemplate(_.templateData),_.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(S){const f=this.renderers.get(S);if(!f)throw new Error(`No renderer found for ${S}`);return f}}e.RowCache=y}),define(ne[574],se([1,0,7,13,2,404]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressBar=void 0;const D="done",S="active",f="infinite",_="infinite-long-running",g="discrete";class C extends y.Disposable{constructor(i,n){super(),this.workedVal=0,this.showDelayedScheduler=this._register(new k.RunOnceScheduler(()=>(0,L.show)(this.element),0)),this.longRunningScheduler=this._register(new k.RunOnceScheduler(()=>this.infiniteLongRunning(),C.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(i,n)}create(i,n){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),i.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=n?.progressBarBackground||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(S,f,_,g),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel()}stop(){return this.doDone(!1)}doDone(i){return this.element.classList.add(D),this.element.classList.contains(f)?(this.bit.style.opacity="0",i?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",i?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(g,D,_),this.element.classList.add(S,f),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(_)}getContainer(){return this.element}}e.ProgressBar=C,C.LONG_RUNNING_INFINITE_THRESHOLD=1e4}),define(ne[130],se([1,0,7,81,61,13,106,6,2,17,405]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Sash=e.OrthogonalEdge=void 0;const C=!1;var s;(function(d){d.North="north",d.South="south",d.East="east",d.West="west"})(s||(e.OrthogonalEdge=s={}));let i=4;const n=new f.Emitter;let t=300;const a=new f.Emitter;class u{constructor(){this.disposables=new _.DisposableStore}get onPointerMove(){return this.disposables.add(new k.DomEmitter(window,"mousemove")).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter(window,"mouseup")).event}dispose(){this.disposables.dispose()}}ke([S.memoize],u.prototype,"onPointerMove",null),ke([S.memoize],u.prototype,"onPointerUp",null);class h{get onPointerMove(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.Change)).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.End)).event}constructor(l){this.el=l,this.disposables=new _.DisposableStore}dispose(){this.disposables.dispose()}}ke([S.memoize],h.prototype,"onPointerMove",null),ke([S.memoize],h.prototype,"onPointerUp",null);class r{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(l){this.factory=l}dispose(){}}ke([S.memoize],r.prototype,"onPointerMove",null),ke([S.memoize],r.prototype,"onPointerUp",null);const c="pointer-events-disabled";class o extends _.Disposable{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(l){this._state!==l&&(this.el.classList.toggle("disabled",l===0),this.el.classList.toggle("minimum",l===1),this.el.classList.toggle("maximum",l===2),this._state=l,this.onDidEnablementChange.fire(l))}set orthogonalStartSash(l){if(this._orthogonalStartSash!==l){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),l){const p=m=>{this.orthogonalStartDragHandleDisposables.clear(),m!==0&&(this._orthogonalStartDragHandle=(0,L.append)(this.el,(0,L.$)(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add((0,_.toDisposable)(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,"mouseenter")).event(()=>o.onMouseEnter(l),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,"mouseleave")).event(()=>o.onMouseLeave(l),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(l.onDidEnablementChange.event(p,this)),p(l.state)}this._orthogonalStartSash=l}}set orthogonalEndSash(l){if(this._orthogonalEndSash!==l){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),l){const p=m=>{this.orthogonalEndDragHandleDisposables.clear(),m!==0&&(this._orthogonalEndDragHandle=(0,L.append)(this.el,(0,L.$)(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add((0,_.toDisposable)(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,"mouseenter")).event(()=>o.onMouseEnter(l),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,"mouseleave")).event(()=>o.onMouseLeave(l),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(l.onDidEnablementChange.event(p,this)),p(l.state)}this._orthogonalEndSash=l}}constructor(l,p,m){super(),this.hoverDelay=t,this.hoverDelayer=this._register(new D.Delayer(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new f.Emitter),this._onDidStart=this._register(new f.Emitter),this._onDidChange=this._register(new f.Emitter),this._onDidReset=this._register(new f.Emitter),this._onDidEnd=this._register(new f.Emitter),this.orthogonalStartSashDisposables=this._register(new _.DisposableStore),this.orthogonalStartDragHandleDisposables=this._register(new _.DisposableStore),this.orthogonalEndSashDisposables=this._register(new _.DisposableStore),this.orthogonalEndDragHandleDisposables=this._register(new _.DisposableStore),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=(0,L.append)(l,(0,L.$)(".monaco-sash")),m.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${m.orthogonalEdge}`),g.isMacintosh&&this.el.classList.add("mac");const v=this._register(new k.DomEmitter(this.el,"mousedown")).event;this._register(v(x=>this.onPointerStart(x,new u),this));const b=this._register(new k.DomEmitter(this.el,"dblclick")).event;this._register(b(this.onPointerDoublePress,this));const w=this._register(new k.DomEmitter(this.el,"mouseenter")).event;this._register(w(()=>o.onMouseEnter(this)));const E=this._register(new k.DomEmitter(this.el,"mouseleave")).event;this._register(E(()=>o.onMouseLeave(this))),this._register(y.Gesture.addTarget(this.el));const I=this._register(new k.DomEmitter(this.el,y.EventType.Start)).event;this._register(I(x=>this.onPointerStart(x,new h(this.el)),this));const M=this._register(new k.DomEmitter(this.el,y.EventType.Tap)).event;let P;this._register(M(x=>{if(P){clearTimeout(P),P=void 0,this.onPointerDoublePress(x);return}clearTimeout(P),P=setTimeout(()=>P=void 0,250)},this)),typeof m.size=="number"?(this.size=m.size,m.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=i,this._register(n.event(x=>{this.size=x,this.layout()}))),this._register(a.event(x=>this.hoverDelay=x)),this.layoutProvider=p,this.orthogonalStartSash=m.orthogonalStartSash,this.orthogonalEndSash=m.orthogonalEndSash,this.orientation=m.orientation||0,this.orientation===1?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",C),this.layout()}onPointerStart(l,p){L.EventHelper.stop(l);let m=!1;if(!l.__orthogonalSashEvent){const N=this.getOrthogonalSash(l);N&&(m=!0,l.__orthogonalSashEvent=!0,N.onPointerStart(l,new r(p)))}if(this.linkedSash&&!l.__linkedSashEvent&&(l.__linkedSashEvent=!0,this.linkedSash.onPointerStart(l,new r(p))),!this.state)return;const v=document.getElementsByTagName("iframe");for(const N of v)N.classList.add(c);const b=l.pageX,w=l.pageY,E=l.altKey,I={startX:b,currentX:b,startY:w,currentY:w,altKey:E};this.el.classList.add("active"),this._onDidStart.fire(I);const M=(0,L.createStyleSheet)(this.el),P=()=>{let N="";m?N="all-scroll":this.orientation===1?this.state===1?N="s-resize":this.state===2?N="n-resize":N=g.isMacintosh?"row-resize":"ns-resize":this.state===1?N="e-resize":this.state===2?N="w-resize":N=g.isMacintosh?"col-resize":"ew-resize",M.textContent=`* { cursor: ${N} !important; }`},x=new _.DisposableStore;P(),m||this.onDidEnablementChange.event(P,null,x);const T=N=>{L.EventHelper.stop(N,!1);const F={startX:b,currentX:N.pageX,startY:w,currentY:N.pageY,altKey:E};this._onDidChange.fire(F)},A=N=>{L.EventHelper.stop(N,!1),this.el.removeChild(M),this.el.classList.remove("active"),this._onDidEnd.fire(),x.dispose();for(const F of v)F.classList.remove(c)};p.onPointerMove(T,null,x),p.onPointerUp(A,null,x),x.add(p)}onPointerDoublePress(l){const p=this.getOrthogonalSash(l);p&&p._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(l,p=!1){l.el.classList.contains("active")?(l.hoverDelayer.cancel(),l.el.classList.add("hover")):l.hoverDelayer.trigger(()=>l.el.classList.add("hover"),l.hoverDelay).then(void 0,()=>{}),!p&&l.linkedSash&&o.onMouseEnter(l.linkedSash,!0)}static onMouseLeave(l,p=!1){l.hoverDelayer.cancel(),l.el.classList.remove("hover"),!p&&l.linkedSash&&o.onMouseLeave(l.linkedSash,!0)}clearSashHoverState(){o.onMouseLeave(this)}layout(){if(this.orientation===0){const l=this.layoutProvider;this.el.style.left=l.getVerticalSashLeft(this)-this.size/2+"px",l.getVerticalSashTop&&(this.el.style.top=l.getVerticalSashTop(this)+"px"),l.getVerticalSashHeight&&(this.el.style.height=l.getVerticalSashHeight(this)+"px")}else{const l=this.layoutProvider;this.el.style.top=l.getHorizontalSashTop(this)-this.size/2+"px",l.getHorizontalSashLeft&&(this.el.style.left=l.getHorizontalSashLeft(this)+"px"),l.getHorizontalSashWidth&&(this.el.style.width=l.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(l){var p;const m=(p=l.initialTarget)!==null&&p!==void 0?p:l.target;if(!(!m||!(m instanceof HTMLElement))&&m.classList.contains("orthogonal-drag-handle"))return m.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}e.Sash=o}),define(ne[223],se([1,0,7,130,6,2]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResizableHTMLElement=void 0;class S{constructor(){this._onDidWillResize=new y.Emitter,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new y.Emitter,this.onDidResize=this._onDidResize.event,this._sashListener=new D.DisposableStore,this._size=new L.Dimension(0,0),this._minSize=new L.Dimension(0,0),this._maxSize=new L.Dimension(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:k.OrthogonalEdge.North}),this._southSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:k.OrthogonalEdge.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let _,g=0,C=0;this._sashListener.add(y.Event.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{_===void 0&&(this._onDidWillResize.fire(),_=this._size,g=0,C=0)})),this._sashListener.add(y.Event.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{_!==void 0&&(_=void 0,g=0,C=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(s=>{_&&(C=s.currentX-s.startX,this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(s=>{_&&(C=-(s.currentX-s.startX),this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(s=>{_&&(g=-(s.currentY-s.startY),this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(s=>{_&&(g=s.currentY-s.startY,this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(y.Event.any(this._eastSash.onDidReset,this._westSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(y.Event.any(this._northSash.onDidReset,this._southSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(_,g,C,s){this._northSash.state=_?3:0,this._eastSash.state=g?3:0,this._southSash.state=C?3:0,this._westSash.state=s?3:0}layout(_=this.size.height,g=this.size.width){const{height:C,width:s}=this._minSize,{height:i,width:n}=this._maxSize;_=Math.max(C,Math.min(i,_)),g=Math.max(s,Math.min(n,g));const t=new L.Dimension(g,_);L.Dimension.equals(t,this._size)||(this.domNode.style.height=_+"px",this.domNode.style.width=g+"px",this._size=t,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(_){this._maxSize=_}get maxSize(){return this._maxSize}set minSize(_){this._minSize=_}get minSize(){return this._minSize}set preferredSize(_){this._preferredSize=_}get preferredSize(){return this._preferredSize}}e.ResizableHTMLElement=S}),define(ne[575],se([1,0,7,61,14,6,2,17]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectBoxNative=void 0;class _ extends S.Disposable{constructor(C,s,i,n){super(),this.selected=0,this.selectBoxOptions=n||Object.create(null),this.options=[],this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new D.Emitter),this.styles=i,this.registerListeners(),this.setOptions(C,s)}registerListeners(){this._register(k.Gesture.addTarget(this.selectElement)),[k.EventType.Tap].forEach(C=>{this._register(L.addDisposableListener(this.selectElement,C,s=>{this.selectElement.focus()}))}),this._register(L.addStandardDisposableListener(this.selectElement,"click",C=>{L.EventHelper.stop(C,!0)})),this._register(L.addStandardDisposableListener(this.selectElement,"change",C=>{this.selectElement.title=C.target.value,this._onDidSelect.fire({index:C.target.selectedIndex,selected:C.target.value})})),this._register(L.addStandardDisposableListener(this.selectElement,"keydown",C=>{let s=!1;f.isMacintosh?(C.keyCode===18||C.keyCode===16||C.keyCode===10)&&(s=!0):(C.keyCode===18&&C.altKey||C.keyCode===10||C.keyCode===3)&&(s=!0),s&&C.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(C,s){(!this.options||!y.equals(this.options,C))&&(this.options=C,this.selectElement.options.length=0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled))})),s!==void 0&&this.select(s)}select(C){this.options.length===0?this.selected=0:C>=0&&Cthis.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selectedC(new y.StandardMouseEvent(s))))}onmousedown(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_DOWN,s=>C(new y.StandardMouseEvent(s))))}onmouseover(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_OVER,s=>C(new y.StandardMouseEvent(s))))}onmouseleave(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_LEAVE,s=>C(new y.StandardMouseEvent(s))))}onkeydown(g,C){this._register(L.addDisposableListener(g,L.EventType.KEY_DOWN,s=>C(new k.StandardKeyboardEvent(s))))}onkeyup(g,C){this._register(L.addDisposableListener(g,L.EventType.KEY_UP,s=>C(new k.StandardKeyboardEvent(s))))}oninput(g,C){this._register(L.addDisposableListener(g,L.EventType.INPUT,C))}onblur(g,C){this._register(L.addDisposableListener(g,L.EventType.BLUR,C))}onfocus(g,C){this._register(L.addDisposableListener(g,L.EventType.FOCUS,C))}ignoreGesture(g){return D.Gesture.ignoreTarget(g)}}e.Widget=f}),define(ne[224],se([1,0,152,83,13,26,7]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarArrow=e.ARROW_IMG_SIZE=void 0,e.ARROW_IMG_SIZE=11;class f extends k.Widget{constructor(g){super(),this._onActivate=g.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=g.bgWidth+"px",this.bgDomNode.style.height=g.bgHeight+"px",typeof g.top<"u"&&(this.bgDomNode.style.top="0px"),typeof g.left<"u"&&(this.bgDomNode.style.left="0px"),typeof g.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof g.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=g.className,this.domNode.classList.add(...D.ThemeIcon.asClassNameArray(g.icon)),this.domNode.style.position="absolute",this.domNode.style.width=e.ARROW_IMG_SIZE+"px",this.domNode.style.height=e.ARROW_IMG_SIZE+"px",typeof g.top<"u"&&(this.domNode.style.top=g.top+"px"),typeof g.left<"u"&&(this.domNode.style.left=g.left+"px"),typeof g.bottom<"u"&&(this.domNode.style.bottom=g.bottom+"px"),typeof g.right<"u"&&(this.domNode.style.right=g.right+"px"),this._pointerMoveMonitor=this._register(new L.GlobalPointerMoveMonitor),this._register(S.addStandardDisposableListener(this.bgDomNode,S.EventType.POINTER_DOWN,C=>this._arrowPointerDown(C))),this._register(S.addStandardDisposableListener(this.domNode,S.EventType.POINTER_DOWN,C=>this._arrowPointerDown(C))),this._pointerdownRepeatTimer=this._register(new y.IntervalTimer),this._pointerdownScheduleRepeatTimer=this._register(new y.TimeoutTimer)}_arrowPointerDown(g){if(!g.target||!(g.target instanceof Element))return;const C=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24)};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(C,200),this._pointerMoveMonitor.startMonitoring(g.target,g.pointerId,g.buttons,s=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),g.preventDefault()}}e.ScrollbarArrow=f}),define(ne[309],se([1,0,7,35,152,224,567,83,17]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractScrollbar=void 0;const g=140;class C extends f.Widget{constructor(i){super(),this._lazyRender=i.lazyRender,this._host=i.host,this._scrollable=i.scrollable,this._scrollByPage=i.scrollByPage,this._scrollbarState=i.scrollbarState,this._visibilityController=this._register(new S.ScrollbarVisibilityController(i.visibility,"visible scrollbar "+i.extraScrollbarClassName,"invisible scrollbar "+i.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new y.GlobalPointerMoveMonitor),this._shouldRender=!0,this.domNode=(0,k.createFastDomNode)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(L.addDisposableListener(this.domNode.domNode,L.EventType.POINTER_DOWN,n=>this._domNodePointerDown(n)))}_createArrow(i){const n=this._register(new D.ScrollbarArrow(i));this.domNode.domNode.appendChild(n.bgDomNode),this.domNode.domNode.appendChild(n.domNode)}_createSlider(i,n,t,a){this.slider=(0,k.createFastDomNode)(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(i),this.slider.setLeft(n),typeof t=="number"&&this.slider.setWidth(t),typeof a=="number"&&this.slider.setHeight(a),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(L.addDisposableListener(this.slider.domNode,L.EventType.POINTER_DOWN,u=>{u.button===0&&(u.preventDefault(),this._sliderPointerDown(u))})),this.onclick(this.slider.domNode,u=>{u.leftButton&&u.stopPropagation()})}_onElementSize(i){return this._scrollbarState.setVisibleSize(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(i){return this._scrollbarState.setScrollSize(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(i){return this._scrollbarState.setScrollPosition(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(i){i.target===this.domNode.domNode&&this._onPointerDown(i)}delegatePointerDown(i){const n=this.domNode.domNode.getClientRects()[0].top,t=n+this._scrollbarState.getSliderPosition(),a=n+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),u=this._sliderPointerPosition(i);t<=u&&u<=a?i.button===0&&(i.preventDefault(),this._sliderPointerDown(i)):this._onPointerDown(i)}_onPointerDown(i){let n,t;if(i.target===this.domNode.domNode&&typeof i.offsetX=="number"&&typeof i.offsetY=="number")n=i.offsetX,t=i.offsetY;else{const u=L.getDomNodePagePosition(this.domNode.domNode);n=i.pageX-u.left,t=i.pageY-u.top}const a=this._pointerDownRelativePosition(n,t);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(a):this._scrollbarState.getDesiredScrollPositionFromOffset(a)),i.button===0&&(i.preventDefault(),this._sliderPointerDown(i))}_sliderPointerDown(i){if(!i.target||!(i.target instanceof Element))return;const n=this._sliderPointerPosition(i),t=this._sliderOrthogonalPointerPosition(i),a=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(i.target,i.pointerId,i.buttons,u=>{const h=this._sliderOrthogonalPointerPosition(u),r=Math.abs(h-t);if(_.isWindows&&r>g){this._setDesiredScrollPositionNow(a.getScrollPosition());return}const o=this._sliderPointerPosition(u)-n;this._setDesiredScrollPositionNow(a.getDesiredScrollPositionFromDelta(o))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(i){const n={};this.writeScrollPosition(n,i),this._scrollable.setScrollPositionNow(n)}updateScrollbarSize(i){this._updateScrollbarSize(i),this._scrollbarState.setScrollbarSize(i),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}e.AbstractScrollbar=C}),define(ne[576],se([1,0,60,309,224,195,25]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HorizontalScrollbar=void 0;class f extends k.AbstractScrollbar{constructor(g,C,s){const i=g.getScrollDimensions(),n=g.getCurrentScrollPosition();if(super({lazyRender:C.lazyRender,host:s,scrollbarState:new D.ScrollbarState(C.horizontalHasArrows?C.arrowSize:0,C.horizontal===2?0:C.horizontalScrollbarSize,C.vertical===2?0:C.verticalScrollbarSize,i.width,i.scrollWidth,n.scrollLeft),visibility:C.horizontal,extraScrollbarClassName:"horizontal",scrollable:g,scrollByPage:C.scrollByPage}),C.horizontalHasArrows){const t=(C.arrowSize-y.ARROW_IMG_SIZE)/2,a=(C.horizontalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonLeft,top:a,left:t,bottom:void 0,right:void 0,bgWidth:C.arrowSize,bgHeight:C.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,1,0))}),this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonRight,top:a,left:void 0,bottom:void 0,right:t,bgWidth:C.arrowSize,bgHeight:C.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,-1,0))})}this._createSlider(Math.floor((C.horizontalScrollbarSize-C.horizontalSliderSize)/2),0,void 0,C.horizontalSliderSize)}_updateSlider(g,C){this.slider.setWidth(g),this.slider.setLeft(C)}_renderDomNode(g,C){this.domNode.setWidth(g),this.domNode.setHeight(C),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(g){return this._shouldRender=this._onElementScrollSize(g.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(g.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(g.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(g,C){return g}_sliderPointerPosition(g){return g.pageX}_sliderOrthogonalPointerPosition(g){return g.pageY}_updateScrollbarSize(g){this.slider.setHeight(g)}writeScrollPosition(g,C){g.scrollLeft=C}updateOptions(g){this.updateScrollbarSize(g.horizontal===2?0:g.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(g.vertical===2?0:g.verticalScrollbarSize),this._visibilityController.setVisibility(g.horizontal),this._scrollByPage=g.scrollByPage}}e.HorizontalScrollbar=f}),define(ne[577],se([1,0,60,309,224,195,25]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VerticalScrollbar=void 0;class f extends k.AbstractScrollbar{constructor(g,C,s){const i=g.getScrollDimensions(),n=g.getCurrentScrollPosition();if(super({lazyRender:C.lazyRender,host:s,scrollbarState:new D.ScrollbarState(C.verticalHasArrows?C.arrowSize:0,C.vertical===2?0:C.verticalScrollbarSize,0,i.height,i.scrollHeight,n.scrollTop),visibility:C.vertical,extraScrollbarClassName:"vertical",scrollable:g,scrollByPage:C.scrollByPage}),C.verticalHasArrows){const t=(C.arrowSize-y.ARROW_IMG_SIZE)/2,a=(C.verticalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonUp,top:t,left:a,bottom:void 0,right:void 0,bgWidth:C.verticalScrollbarSize,bgHeight:C.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,1))}),this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonDown,top:void 0,left:a,bottom:t,right:void 0,bgWidth:C.verticalScrollbarSize,bgHeight:C.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,-1))})}this._createSlider(0,Math.floor((C.verticalScrollbarSize-C.verticalSliderSize)/2),C.verticalSliderSize,void 0)}_updateSlider(g,C){this.slider.setHeight(g),this.slider.setTop(C)}_renderDomNode(g,C){this.domNode.setWidth(C),this.domNode.setHeight(g),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(g){return this._shouldRender=this._onElementScrollSize(g.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(g.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(g.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(g,C){return C}_sliderPointerPosition(g){return g.pageY}_sliderOrthogonalPointerPosition(g){return g.pageX}_updateScrollbarSize(g){this.slider.setWidth(g)}writeScrollPosition(g,C){g.scrollTop=C}updateOptions(g){this.updateScrollbarSize(g.vertical===2?0:g.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(g.vertical),this._scrollByPage=g.scrollByPage}}e.VerticalScrollbar=f}),define(ne[75],se([1,0,52,7,35,60,576,577,83,13,6,2,17,167,406]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DomScrollableElement=e.SmoothScrollableElement=e.ScrollableElement=e.AbstractScrollableElement=e.MouseWheelClassifier=void 0;const t=500,a=50,u=!0;class h{constructor(v,b,w){this.timestamp=v,this.deltaX=b,this.deltaY=w,this.score=0}}class r{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let v=1,b=0,w=1,E=this._rear;do{const I=E===this._front?v:Math.pow(2,-w);if(v-=I,b+=this._memory[E].score*I,E===this._front)break;E=(this._capacity+E-1)%this._capacity,w++}while(!0);return b<=.5}acceptStandardWheelEvent(v){const b=window.devicePixelRatio/(0,L.getZoomFactor)();i.isWindows||i.isLinux?this.accept(Date.now(),v.deltaX/b,v.deltaY/b):this.accept(Date.now(),v.deltaX,v.deltaY)}accept(v,b,w){const E=new h(v,b,w);E.score=this._computeScore(E),this._front===-1&&this._rear===-1?(this._memory[0]=E,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=E)}_computeScore(v){if(Math.abs(v.deltaX)>0&&Math.abs(v.deltaY)>0)return 1;let b=.5;const w=this._front===-1&&this._rear===-1?null:this._memory[this._rear];return(!this._isAlmostInt(v.deltaX)||!this._isAlmostInt(v.deltaY))&&(b+=.25),Math.min(Math.max(b,0),1)}_isAlmostInt(v){return Math.abs(Math.round(v)-v)<.01}}e.MouseWheelClassifier=r,r.INSTANCE=new r;class c extends _.Widget{get options(){return this._options}constructor(v,b,w){super(),this._onScroll=this._register(new C.Emitter),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new C.Emitter),v.style.overflow="hidden",this._options=p(b),this._scrollable=w,this._register(this._scrollable.onScroll(I=>{this._onWillScroll.fire(I),this._onDidScroll(I),this._onScroll.fire(I)}));const E={onMouseWheel:I=>this._onMouseWheel(I),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new f.VerticalScrollbar(this._scrollable,this._options,E)),this._horizontalScrollbar=this._register(new S.HorizontalScrollbar(this._scrollable,this._options,E)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(v),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=(0,y.createFastDomNode)(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=(0,y.createFastDomNode)(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=(0,y.createFastDomNode)(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,I=>this._onMouseOver(I)),this.onmouseleave(this._listenOnDomNode,I=>this._onMouseLeave(I)),this._hideTimeout=this._register(new g.TimeoutTimer),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=(0,s.dispose)(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(v){this._verticalScrollbar.delegatePointerDown(v)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(v){this._scrollable.setScrollDimensions(v,!1)}updateClassName(v){this._options.className=v,i.isMacintosh&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(v){typeof v.handleMouseWheel<"u"&&(this._options.handleMouseWheel=v.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof v.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=v.mouseWheelScrollSensitivity),typeof v.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=v.fastScrollSensitivity),typeof v.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=v.scrollPredominantAxis),typeof v.horizontal<"u"&&(this._options.horizontal=v.horizontal),typeof v.vertical<"u"&&(this._options.vertical=v.vertical),typeof v.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=v.horizontalScrollbarSize),typeof v.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=v.verticalScrollbarSize),typeof v.scrollByPage<"u"&&(this._options.scrollByPage=v.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(v){this._onMouseWheel(new D.StandardWheelEvent(v))}_setListeningToMouseWheel(v){if(this._mouseWheelToDispose.length>0!==v&&(this._mouseWheelToDispose=(0,s.dispose)(this._mouseWheelToDispose),v)){const w=E=>{this._onMouseWheel(new D.StandardWheelEvent(E))};this._mouseWheelToDispose.push(k.addDisposableListener(this._listenOnDomNode,k.EventType.MOUSE_WHEEL,w,{passive:!1}))}}_onMouseWheel(v){var b;if(!((b=v.browserEvent)===null||b===void 0)&&b.defaultPrevented)return;const w=r.INSTANCE;u&&w.acceptStandardWheelEvent(v);let E=!1;if(v.deltaY||v.deltaX){let M=v.deltaY*this._options.mouseWheelScrollSensitivity,P=v.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&P+M===0?P=M=0:Math.abs(M)>=Math.abs(P)?P=0:M=0),this._options.flipAxes&&([M,P]=[P,M]);const x=!i.isMacintosh&&v.browserEvent&&v.browserEvent.shiftKey;(this._options.scrollYToX||x)&&!P&&(P=M,M=0),v.browserEvent&&v.browserEvent.altKey&&(P=P*this._options.fastScrollSensitivity,M=M*this._options.fastScrollSensitivity);const T=this._scrollable.getFutureScrollPosition();let A={};if(M){const N=a*M,F=T.scrollTop-(N<0?Math.floor(N):Math.ceil(N));this._verticalScrollbar.writeScrollPosition(A,F)}if(P){const N=a*P,F=T.scrollLeft-(N<0?Math.floor(N):Math.ceil(N));this._horizontalScrollbar.writeScrollPosition(A,F)}A=this._scrollable.validateScrollPosition(A),(T.scrollLeft!==A.scrollLeft||T.scrollTop!==A.scrollTop)&&(u&&this._options.mouseWheelSmoothScroll&&w.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(A):this._scrollable.setScrollPositionNow(A),E=!0)}let I=E;!I&&this._options.alwaysConsumeMouseWheel&&(I=!0),!I&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(I=!0),I&&(v.preventDefault(),v.stopPropagation())}_onDidScroll(v){this._shouldRender=this._horizontalScrollbar.onDidScroll(v)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(v)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const v=this._scrollable.getCurrentScrollPosition(),b=v.scrollTop>0,w=v.scrollLeft>0,E=w?" left":"",I=b?" top":"",M=w||b?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${E}`),this._topShadowDomNode.setClassName(`shadow${I}`),this._topLeftShadowDomNode.setClassName(`shadow${M}${I}${E}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(v){this._mouseIsOver=!1,this._hide()}_onMouseOver(v){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),t)}}e.AbstractScrollableElement=c;class o extends c{constructor(v,b){b=b||{},b.mouseWheelSmoothScroll=!1;const w=new n.Scrollable({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(E)});super(v,b,w),this._register(w)}setScrollPosition(v){this._scrollable.setScrollPositionNow(v)}}e.ScrollableElement=o;class d extends c{constructor(v,b,w){super(v,b,w)}setScrollPosition(v){v.reuseAnimation?this._scrollable.setScrollPositionSmooth(v,v.reuseAnimation):this._scrollable.setScrollPositionNow(v)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}e.SmoothScrollableElement=d;class l extends c{constructor(v,b){b=b||{},b.mouseWheelSmoothScroll=!1;const w=new n.Scrollable({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(E)});super(v,b,w),this._register(w),this._element=v,this.onScroll(E=>{E.scrollTopChanged&&(this._element.scrollTop=E.scrollTop),E.scrollLeftChanged&&(this._element.scrollLeft=E.scrollLeft)}),this.scanDomNode()}setScrollPosition(v){this._scrollable.setScrollPositionNow(v)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}e.DomScrollableElement=l;function p(m){const v={lazyRender:typeof m.lazyRender<"u"?m.lazyRender:!1,className:typeof m.className<"u"?m.className:"",useShadows:typeof m.useShadows<"u"?m.useShadows:!0,handleMouseWheel:typeof m.handleMouseWheel<"u"?m.handleMouseWheel:!0,flipAxes:typeof m.flipAxes<"u"?m.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof m.consumeMouseWheelIfScrollbarIsNeeded<"u"?m.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof m.alwaysConsumeMouseWheel<"u"?m.alwaysConsumeMouseWheel:!1,scrollYToX:typeof m.scrollYToX<"u"?m.scrollYToX:!1,mouseWheelScrollSensitivity:typeof m.mouseWheelScrollSensitivity<"u"?m.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof m.fastScrollSensitivity<"u"?m.fastScrollSensitivity:5,scrollPredominantAxis:typeof m.scrollPredominantAxis<"u"?m.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof m.mouseWheelSmoothScroll<"u"?m.mouseWheelSmoothScroll:!0,arrowSize:typeof m.arrowSize<"u"?m.arrowSize:11,listenOnDomNode:typeof m.listenOnDomNode<"u"?m.listenOnDomNode:null,horizontal:typeof m.horizontal<"u"?m.horizontal:1,horizontalScrollbarSize:typeof m.horizontalScrollbarSize<"u"?m.horizontalScrollbarSize:10,horizontalSliderSize:typeof m.horizontalSliderSize<"u"?m.horizontalSliderSize:0,horizontalHasArrows:typeof m.horizontalHasArrows<"u"?m.horizontalHasArrows:!1,vertical:typeof m.vertical<"u"?m.vertical:1,verticalScrollbarSize:typeof m.verticalScrollbarSize<"u"?m.verticalScrollbarSize:10,verticalHasArrows:typeof m.verticalHasArrows<"u"?m.verticalHasArrows:!1,verticalSliderSize:typeof m.verticalSliderSize<"u"?m.verticalSliderSize:0,scrollByPage:typeof m.scrollByPage<"u"?m.scrollByPage:!1};return v.horizontalSliderSize=typeof m.horizontalSliderSize<"u"?m.horizontalSliderSize:v.horizontalScrollbarSize,v.verticalSliderSize=typeof m.verticalSliderSize<"u"?m.verticalSliderSize:v.verticalScrollbarSize,i.isMacintosh&&(v.className+=" mac"),v}}),define(ne[310],se([1,0,7,44,75,2,555,399]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getHoverAccessibleViewHint=e.HoverAction=e.HoverWidget=void 0;const f=L.$;class _ extends D.Disposable{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new y.DomScrollableElement(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}}e.HoverWidget=_;class g extends D.Disposable{static render(i,n,t){return new g(i,n,t)}constructor(i,n,t){super(),this.actionContainer=L.append(i,f("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=L.append(this.actionContainer,f("a.action")),this.action.setAttribute("role","button"),n.iconClass&&L.append(this.action,f(`span.icon.${n.iconClass}`));const a=L.append(this.action,f("span"));a.textContent=t?`${n.label} (${t})`:n.label,this._register(L.addDisposableListener(this.actionContainer,L.EventType.CLICK,u=>{u.stopPropagation(),u.preventDefault(),n.run(this.actionContainer)})),this._register(L.addDisposableListener(this.actionContainer,L.EventType.KEY_DOWN,u=>{const h=new k.StandardKeyboardEvent(u);(h.equals(3)||h.equals(10))&&(u.stopPropagation(),u.preventDefault(),n.run(this.actionContainer))})),this.setEnabled(!0)}setEnabled(i){i?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}e.HoverAction=g;function C(s,i){return s&&i?(0,S.localize)(0,null,i):s?(0,S.localize)(1,null):""}e.getHoverAccessibleViewHint=C}),define(ne[225],se([1,0,197,7,81,61,75,14,13,106,6,2,166,167,391,573,9]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ListView=e.NativeDragAndDropData=e.ExternalElementsDragAndDropData=e.ElementsDragAndDropData=void 0;const h={CurrentDragAndDropData:void 0},r={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(v){return[v]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class c{constructor(b){this.elements=b}update(){}getData(){return this.elements}}e.ElementsDragAndDropData=c;class o{constructor(b){this.elements=b}update(){}getData(){return this.elements}}e.ExternalElementsDragAndDropData=o;class d{constructor(){this.types=[],this.files=[]}update(b){if(b.types&&this.types.splice(0,this.types.length,...b.types),b.files){this.files.splice(0,this.files.length);for(let w=0;wI,b?.getPosInSet?this.getPosInSet=b.getPosInSet.bind(b):this.getPosInSet=(w,E)=>E+1,b?.getRole?this.getRole=b.getRole.bind(b):this.getRole=w=>"listitem",b?.isChecked?this.isChecked=b.isChecked.bind(b):this.isChecked=w=>{}}}class m{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(b){if(b!==this._horizontalScrolling){if(b&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=b,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const w of this.items)this.measureItemWidth(w);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:(0,k.getContentWidth)(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}constructor(b,w,E,I=r){var M,P,x,T,A,N,F,O,W,U,j,R,K;if(this.virtualDelegate=w,this.domId=`list_id_${++m.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new _.Delayer(50),this.splicing=!1,this.dragOverAnimationStopDisposable=s.Disposable.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=s.Disposable.None,this.onDragLeaveTimeout=s.Disposable.None,this.disposables=new s.DisposableStore,this._onDidChangeContentHeight=new C.Emitter,this._onDidChangeContentWidth=new C.Emitter,this._horizontalScrolling=!1,I.horizontalScrolling&&I.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=new t.RangeMap((M=I.paddingTop)!==null&&M!==void 0?M:0);for(const Z of E)this.renderers.set(Z.templateId,Z);this.cache=this.disposables.add(new a.RowCache(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support",typeof I.mouseSupport=="boolean"?I.mouseSupport:!0),this._horizontalScrolling=(P=I.horizontalScrolling)!==null&&P!==void 0?P:r.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom=typeof I.paddingBottom>"u"?0:I.paddingBottom,this.accessibilityProvider=new p(I.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",((x=I.transformOptimization)!==null&&x!==void 0?x:r.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(D.Gesture.addTarget(this.rowsContainer)),this.scrollable=new n.Scrollable({forceIntegerValues:!0,smoothScrollDuration:(T=I.smoothScrolling)!==null&&T!==void 0&&T?125:0,scheduleAtNextAnimationFrame:Z=>(0,k.scheduleAtNextAnimationFrame)(Z)}),this.scrollableElement=this.disposables.add(new S.SmoothScrollableElement(this.rowsContainer,{alwaysConsumeMouseWheel:(A=I.alwaysConsumeMouseWheel)!==null&&A!==void 0?A:r.alwaysConsumeMouseWheel,horizontal:1,vertical:(N=I.verticalScrollMode)!==null&&N!==void 0?N:r.verticalScrollMode,useShadows:(F=I.useShadows)!==null&&F!==void 0?F:r.useShadows,mouseWheelScrollSensitivity:I.mouseWheelScrollSensitivity,fastScrollSensitivity:I.fastScrollSensitivity,scrollByPage:I.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),b.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add((0,k.addDisposableListener)(this.rowsContainer,D.EventType.Change,Z=>this.onTouchChange(Z))),this.disposables.add((0,k.addDisposableListener)(this.scrollableElement.getDomNode(),"scroll",Z=>Z.target.scrollTop=0)),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragover",Z=>this.onDragOver(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"drop",Z=>this.onDrop(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragleave",Z=>this.onDragLeave(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragend",Z=>this.onDragEnd(Z))),this.setRowLineHeight=(O=I.setRowLineHeight)!==null&&O!==void 0?O:r.setRowLineHeight,this.setRowHeight=(W=I.setRowHeight)!==null&&W!==void 0?W:r.setRowHeight,this.supportDynamicHeights=(U=I.supportDynamicHeights)!==null&&U!==void 0?U:r.supportDynamicHeights,this.dnd=(j=I.dnd)!==null&&j!==void 0?j:r.dnd,this.layout((R=I.initialSize)===null||R===void 0?void 0:R.height,(K=I.initialSize)===null||K===void 0?void 0:K.width)}updateOptions(b){b.paddingBottom!==void 0&&(this.paddingBottom=b.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),b.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(b.smoothScrolling?125:0),b.horizontalScrolling!==void 0&&(this.horizontalScrolling=b.horizontalScrolling);let w;if(b.scrollByPage!==void 0&&(w=Object.assign(Object.assign({},w??{}),{scrollByPage:b.scrollByPage})),b.mouseWheelScrollSensitivity!==void 0&&(w=Object.assign(Object.assign({},w??{}),{mouseWheelScrollSensitivity:b.mouseWheelScrollSensitivity})),b.fastScrollSensitivity!==void 0&&(w=Object.assign(Object.assign({},w??{}),{fastScrollSensitivity:b.fastScrollSensitivity})),w&&this.scrollableElement.updateOptions(w),b.paddingTop!==void 0&&b.paddingTop!==this.rangeMap.paddingTop){const E=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),I=b.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=b.paddingTop,this.render(E,Math.max(0,this.lastRenderTop+I),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}splice(b,w,E=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(b,w,E)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(b,w,E=[]){const I=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),M={start:b,end:b+w},P=i.Range.intersect(I,M),x=new Map;for(let H=P.end-1;H>=P.start;H--){const B=this.items[H];if(B.dragStartDisposable.dispose(),B.checkedDisposable.dispose(),B.row){let V=x.get(B.templateId);V||(V=[],x.set(B.templateId,V));const Y=this.renderers.get(B.templateId);Y&&Y.disposeElement&&Y.disposeElement(B.element,H,B.row.templateData,B.size),V.push(B.row)}B.row=null}const T={start:b+w,end:this.items.length},A=i.Range.intersect(T,I),N=i.Range.relativeComplement(T,I),F=E.map(H=>({id:String(this.itemId++),element:H,templateId:this.virtualDelegate.getTemplateId(H),size:this.virtualDelegate.getHeight(H),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(H),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:s.Disposable.None,checkedDisposable:s.Disposable.None}));let O;b===0&&w>=this.items.length?(this.rangeMap=new t.RangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,F),O=this.items,this.items=F):(this.rangeMap.splice(b,w,F),O=this.items.splice(b,w,...F));const W=E.length-w,U=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),j=(0,t.shift)(A,W),R=i.Range.intersect(U,j);for(let H=R.start;H(0,t.shift)(H,W)),J=[{start:b,end:b+E.length},...G].map(H=>i.Range.intersect(U,H)),X=this.getNextToLastElement(J);for(const H of J)for(let B=H.start;BH.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=(0,k.scheduleAtNextAnimationFrame)(()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let b=0;for(const w of this.items)typeof w.width<"u"&&(b=Math.max(b,w.width));this.scrollWidth=b,this.scrollableElement.setScrollDimensions({scrollWidth:b===0?0:b+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const b of this.items)b.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){const b=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),w=this.rangeMap.positionAt(b.start),E=this.rangeMap.positionAt(b.start+1);return E!==-1&&(E-w)/2+w{for(const F of A)for(let O=F.start;OI.row.domNode.setAttribute("aria-checked",String(!!F));N(x.value),I.checkedDisposable=x.onDidChange(N)}(M||!I.row.domNode.parentElement)&&(w?this.rowsContainer.insertBefore(I.row.domNode,w):this.rowsContainer.appendChild(I.row.domNode)),this.updateItemInDOM(I,b);const T=this.renderers.get(I.templateId);if(!T)throw new Error(`No renderer found for template id ${I.templateId}`);T?.renderElement(I.element,b,I.row.templateData,I.size);const A=this.dnd.getDragURI(I.element);I.dragStartDisposable.dispose(),I.row.domNode.draggable=!!A,A&&(I.dragStartDisposable=(0,k.addDisposableListener)(I.row.domNode,"dragstart",N=>this.onDragStart(I.element,A,N))),this.horizontalScrolling&&(this.measureItemWidth(I),this.eventuallyUpdateScrollWidth())}measureItemWidth(b){if(!b.row||!b.row.domNode)return;b.row.domNode.style.width="fit-content",b.width=(0,k.getContentWidth)(b.row.domNode);const w=window.getComputedStyle(b.row.domNode);w.paddingLeft&&(b.width+=parseFloat(w.paddingLeft)),w.paddingRight&&(b.width+=parseFloat(w.paddingRight)),b.row.domNode.style.width=""}updateItemInDOM(b,w){b.row.domNode.style.top=`${this.elementTop(w)}px`,this.setRowHeight&&(b.row.domNode.style.height=`${b.size}px`),this.setRowLineHeight&&(b.row.domNode.style.lineHeight=`${b.size}px`),b.row.domNode.setAttribute("data-index",`${w}`),b.row.domNode.setAttribute("data-last-element",w===this.length-1?"true":"false"),b.row.domNode.setAttribute("data-parity",w%2===0?"even":"odd"),b.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(b.element,w,this.length))),b.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(b.element,w))),b.row.domNode.setAttribute("id",this.getElementDomId(w)),b.row.domNode.classList.toggle("drop-target",b.dropTarget)}removeItemFromDOM(b){const w=this.items[b];if(w.dragStartDisposable.dispose(),w.checkedDisposable.dispose(),w.row){const E=this.renderers.get(w.templateId);E&&E.disposeElement&&E.disposeElement(w.element,b,w.row.templateData,w.size),this.cache.release(w.row),w.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(b,w){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:b,reuseAnimation:w})}get scrollTop(){return this.getScrollTop()}set scrollTop(b){this.setScrollTop(b)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"click")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseDblClick(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"dblclick")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseMiddleClick(){return C.Event.filter(C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"auxclick")).event,b=>this.toMouseEvent(b),this.disposables),b=>b.browserEvent.button===1,this.disposables)}get onMouseDown(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mousedown")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseOver(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mouseover")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseOut(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mouseout")).event,b=>this.toMouseEvent(b),this.disposables)}get onContextMenu(){return C.Event.any(C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"contextmenu")).event,b=>this.toMouseEvent(b),this.disposables),C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,D.EventType.Contextmenu)).event,b=>this.toGestureEvent(b),this.disposables))}get onTouchStart(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"touchstart")).event,b=>this.toTouchEvent(b),this.disposables)}get onTap(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.rowsContainer,D.EventType.Tap)).event,b=>this.toGestureEvent(b),this.disposables)}toMouseEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>"u"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toTouchEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>"u"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toGestureEvent(b){const w=this.getItemIndexFromEventTarget(b.initialTarget||null),E=typeof w>"u"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toDragEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>"u"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}onScroll(b){try{const w=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(w,b.scrollTop,b.height,b.scrollLeft,b.scrollWidth),this.supportDynamicHeights&&this._rerender(b.scrollTop,b.height,b.inSmoothScrolling)}catch(w){throw console.error("Got bad scroll event:",b),w}}onTouchChange(b){b.preventDefault(),b.stopPropagation(),this.scrollTop-=b.translationY}onDragStart(b,w,E){var I,M;if(!E.dataTransfer)return;const P=this.dnd.getDragElements(b);if(E.dataTransfer.effectAllowed="copyMove",E.dataTransfer.setData(L.DataTransfers.TEXT,w),E.dataTransfer.setDragImage){let x;this.dnd.getDragLabel&&(x=this.dnd.getDragLabel(P,E)),typeof x>"u"&&(x=String(P.length));const T=(0,k.$)(".monaco-drag-image");T.textContent=x;const N=(F=>{for(;F&&!F.classList.contains("monaco-workbench");)F=F.parentElement;return F||document.body})(this.domNode);N.appendChild(T),E.dataTransfer.setDragImage(T,-10,-10),setTimeout(()=>N.removeChild(T),0)}this.domNode.classList.add("dragging"),this.currentDragData=new c(P),h.CurrentDragAndDropData=new o(P),(M=(I=this.dnd).onDragStart)===null||M===void 0||M.call(I,this.currentDragData,E)}onDragOver(b){var w;if(b.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),h.CurrentDragAndDropData&&h.CurrentDragAndDropData.getData()==="vscode-ui"||(this.setupDragAndDropScrollTopAnimation(b.browserEvent),!b.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(h.CurrentDragAndDropData)this.currentDragData=h.CurrentDragAndDropData;else{if(!b.browserEvent.dataTransfer.types)return!1;this.currentDragData=new d}const E=this.dnd.onDragOver(this.currentDragData,b.element,b.index,b.browserEvent);if(this.canDrop=typeof E=="boolean"?E:E.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;b.browserEvent.dataTransfer.dropEffect=typeof E!="boolean"&&E.effect===0?"copy":"move";let I;if(typeof E!="boolean"&&E.feedback?I=E.feedback:typeof b.index>"u"?I=[-1]:I=[b.index],I=(0,f.distinct)(I).filter(M=>M>=-1&&MM-P),I=I[0]===-1?[-1]:I,l(this.currentDragFeedback,I))return!0;if(this.currentDragFeedback=I,this.currentDragFeedbackDisposable.dispose(),I[0]===-1)this.domNode.classList.add("drop-target"),this.rowsContainer.classList.add("drop-target"),this.currentDragFeedbackDisposable=(0,s.toDisposable)(()=>{this.domNode.classList.remove("drop-target"),this.rowsContainer.classList.remove("drop-target")});else{for(const M of I){const P=this.items[M];P.dropTarget=!0,(w=P.row)===null||w===void 0||w.domNode.classList.add("drop-target")}this.currentDragFeedbackDisposable=(0,s.toDisposable)(()=>{var M;for(const P of I){const x=this.items[P];x.dropTarget=!1,(M=x.row)===null||M===void 0||M.domNode.classList.remove("drop-target")}})}return!0}onDragLeave(b){var w,E;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,_.disposableTimeout)(()=>this.clearDragOverFeedback(),100),this.currentDragData&&((E=(w=this.dnd).onDragLeave)===null||E===void 0||E.call(w,this.currentDragData,b.element,b.index,b.browserEvent))}onDrop(b){if(!this.canDrop)return;const w=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,h.CurrentDragAndDropData=void 0,!(!w||!b.browserEvent.dataTransfer)&&(b.browserEvent.preventDefault(),w.update(b.browserEvent.dataTransfer),this.dnd.drop(w,b.element,b.index,b.browserEvent))}onDragEnd(b){var w,E;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,h.CurrentDragAndDropData=void 0,(E=(w=this.dnd).onDragEnd)===null||E===void 0||E.call(w,b)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=s.Disposable.None}setupDragAndDropScrollTopAnimation(b){if(!this.dragOverAnimationDisposable){const w=(0,k.getTopLeftOffset)(this.domNode).top;this.dragOverAnimationDisposable=(0,k.animate)(this.animateDragAndDropScrollTop.bind(this,w))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,_.disposableTimeout)(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3),this.dragOverMouseY=b.pageY}animateDragAndDropScrollTop(b){if(this.dragOverMouseY===void 0)return;const w=this.dragOverMouseY-b,E=this.renderHeight-35;w<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(w-35))):w>E&&(this.scrollTop+=Math.min(14,Math.floor(.3*(w-E))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getItemIndexFromEventTarget(b){const w=this.scrollableElement.getDomNode();let E=b;for(;E instanceof HTMLElement&&E!==this.rowsContainer&&w.contains(E);){const I=E.getAttribute("data-index");if(I){const M=Number(I);if(!isNaN(M))return M}E=E.parentElement}}getRenderRange(b,w){return{start:this.rangeMap.indexAt(b),end:this.rangeMap.indexAfter(b+w-1)}}_rerender(b,w,E){const I=this.getRenderRange(b,w);let M,P;b===this.elementTop(I.start)?(M=I.start,P=0):I.end-I.start>1&&(M=I.start+1,P=this.elementTop(M)-b);let x=0;for(;;){const T=this.getRenderRange(b,w);let A=!1;for(let N=T.start;Nce.templateData===ie);if(ae>=0){const ce=this.renderedElements[ae];this.trait.unrender(ie),ce.index=Y}else{const ce={index:Y,templateData:ie};this.renderedElements.push(ce)}this.trait.renderIndex(Y,ie)}splice(V,Y,ie){const ae=[];for(const ce of this.renderedElements)ce.index=V+Y&&ae.push({index:ce.index+ie-Y,templateData:ce.templateData});this.renderedElements=ae}renderIndexes(V){for(const{index:Y,templateData:ie}of this.renderedElements)V.indexOf(Y)>-1&&this.trait.renderIndex(Y,ie)}disposeTemplate(V){const Y=this.renderedElements.findIndex(ie=>ie.templateData===V);Y<0||this.renderedElements.splice(Y,1)}}class l{get name(){return this._trait}get renderer(){return new d(this)}constructor(V){this._trait=V,this.length=0,this.indexes=[],this.sortedIndexes=[],this._onChange=new i.Emitter,this.onChange=this._onChange.event}splice(V,Y,ie){var ae;Y=Math.max(0,Math.min(Y,this.length-V));const ce=ie.length-Y,de=V+Y,he=[];let ue=0;for(;ue=de;)he.push(this.sortedIndexes[ue++]+ce);const te=this.length+ce;if(this.sortedIndexes.length>0&&he.length===0&&te>0){const q=(ae=this.sortedIndexes.find(z=>z>=V))!==null&&ae!==void 0?ae:te-1;he.push(Math.min(q,te-1))}this.renderer.splice(V,Y,ie.length),this._set(he,he),this.length=te}renderIndex(V,Y){Y.classList.toggle(this._trait,this.contains(V))}unrender(V){V.classList.remove(this._trait)}set(V,Y){return this._set(V,[...V].sort(G),Y)}_set(V,Y,ie){const ae=this.indexes,ce=this.sortedIndexes;this.indexes=V,this.sortedIndexes=Y;const de=R(ce,V);return this.renderer.renderIndexes(de),this._onChange.fire({indexes:V,browserEvent:ie}),ae}get(){return this.indexes}contains(V){return(0,_.binarySearch)(this.sortedIndexes,V,G)>=0}dispose(){(0,t.dispose)(this._onChange)}}ke([s.memoize],l.prototype,"renderer",null);class p extends l{constructor(V){super("selected"),this.setAriaSelected=V}renderIndex(V,Y){super.renderIndex(V,Y),this.setAriaSelected&&(this.contains(V)?Y.setAttribute("aria-selected","true"):Y.setAttribute("aria-selected","false"))}}class m{constructor(V,Y,ie){this.trait=V,this.view=Y,this.identityProvider=ie}splice(V,Y,ie){if(!this.identityProvider)return this.trait.splice(V,Y,new Array(ie.length).fill(!1));const ae=this.trait.get().map(he=>this.identityProvider.getId(this.view.element(he)).toString());if(ae.length===0)return this.trait.splice(V,Y,new Array(ie.length).fill(!1));const ce=new Set(ae),de=ie.map(he=>ce.has(this.identityProvider.getId(he).toString()));this.trait.splice(V,Y,de)}}function v(B){return B.tagName==="INPUT"||B.tagName==="TEXTAREA"}e.isInputElement=v;function b(B){return B.classList.contains("monaco-editor")?!0:B.classList.contains("monaco-list")||!B.parentElement?!1:b(B.parentElement)}e.isMonacoEditor=b;function w(B){return B.tagName==="A"&&B.classList.contains("monaco-button")||B.tagName==="DIV"&&B.classList.contains("monaco-button-dropdown")?!0:B.classList.contains("monaco-list")||!B.parentElement?!1:w(B.parentElement)}e.isButton=w;class E{get onKeyDown(){return this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event).filter(V=>!v(V.target)).map(V=>new y.StandardKeyboardEvent(V)))}constructor(V,Y,ie){this.list=V,this.view=Y,this.disposables=new t.DisposableStore,this.multipleSelectionDisposables=new t.DisposableStore,this.onKeyDown.filter(ae=>ae.keyCode===3).on(this.onEnter,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===16).on(this.onUpArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===18).on(this.onDownArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===11).on(this.onPageUpArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===12).on(this.onPageDownArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===9).on(this.onEscape,this,this.disposables),ie.multipleSelectionSupport!==!1&&this.onKeyDown.filter(ae=>(u.isMacintosh?ae.metaKey:ae.ctrlKey)&&ae.keyCode===31).on(this.onCtrlA,this,this.multipleSelectionDisposables)}updateOptions(V){V.multipleSelectionSupport!==void 0&&(this.multipleSelectionDisposables.clear(),V.multipleSelectionSupport&&this.onKeyDown.filter(Y=>(u.isMacintosh?Y.metaKey:Y.ctrlKey)&&Y.keyCode===31).on(this.onCtrlA,this,this.multipleSelectionDisposables))}onEnter(V){V.preventDefault(),V.stopPropagation(),this.list.setSelection(this.list.getFocus(),V.browserEvent)}onUpArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusPrevious(1,!1,V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onDownArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusNext(1,!1,V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onPageUpArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusPreviousPage(V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onPageDownArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusNextPage(V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onCtrlA(V){V.preventDefault(),V.stopPropagation(),this.list.setSelection((0,_.range)(this.list.length),V.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(V){this.list.getSelection().length&&(V.preventDefault(),V.stopPropagation(),this.list.setSelection([],V.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}ke([s.memoize],E.prototype,"onKeyDown",null);var I;(function(B){B[B.Automatic=0]="Automatic",B[B.Trigger=1]="Trigger"})(I||(e.TypeNavigationMode=I={}));var M;(function(B){B[B.Idle=0]="Idle",B[B.Typing=1]="Typing"})(M||(M={})),e.DefaultKeyboardNavigationDelegate=new class{mightProducePrintableCharacter(B){return B.ctrlKey||B.metaKey||B.altKey?!1:B.keyCode>=31&&B.keyCode<=56||B.keyCode>=21&&B.keyCode<=30||B.keyCode>=98&&B.keyCode<=107||B.keyCode>=85&&B.keyCode<=95}};class P{constructor(V,Y,ie,ae,ce){this.list=V,this.view=Y,this.keyboardNavigationLabelProvider=ie,this.keyboardNavigationEventFilter=ae,this.delegate=ce,this.enabled=!1,this.state=M.Idle,this.mode=I.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new t.DisposableStore,this.disposables=new t.DisposableStore,this.updateOptions(V.options)}updateOptions(V){var Y,ie;!((Y=V.typeNavigationEnabled)!==null&&Y!==void 0)||Y?this.enable():this.disable(),this.mode=(ie=V.typeNavigationMode)!==null&&ie!==void 0?ie:I.Automatic}enable(){if(this.enabled)return;let V=!1;const Y=this.enabledDisposables.add(i.Event.chain(this.enabledDisposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event)).filter(ce=>!v(ce.target)).filter(()=>this.mode===I.Automatic||this.triggered).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>V||this.keyboardNavigationEventFilter(ce)).filter(ce=>this.delegate.mightProducePrintableCharacter(ce)).forEach(ce=>L.EventHelper.stop(ce,!0)).map(ce=>ce.browserEvent.key).event,ie=i.Event.debounce(Y,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);i.Event.reduce(i.Event.any(Y,ie),(ce,de)=>de===null?null:(ce||"")+de,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),ie(this.onClear,this,this.enabledDisposables),Y(()=>V=!0,void 0,this.enabledDisposables),ie(()=>V=!1,void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var V;const Y=this.list.getFocus();if(Y.length>0&&Y[0]===this.previouslyFocused){const ie=(V=this.list.options.accessibilityProvider)===null||V===void 0?void 0:V.getAriaLabel(this.list.element(Y[0]));ie&&(0,S.alert)(ie)}this.previouslyFocused=-1}onInput(V){if(!V){this.state=M.Idle,this.triggered=!1;return}const Y=this.list.getFocus(),ie=Y.length>0?Y[0]:0,ae=this.state===M.Idle?1:0;this.state=M.Typing;for(let ce=0;ce1&&q.length===1){this.previouslyFocused=ie,this.list.setFocus([de]),this.list.reveal(de);return}}}}else if(typeof ue>"u"||(0,n.matchesPrefix)(V,ue)){this.previouslyFocused=ie,this.list.setFocus([de]),this.list.reveal(de);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class x{constructor(V,Y){this.list=V,this.view=Y,this.disposables=new t.DisposableStore,this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(Y.domNode,"keydown")).event)).filter(ae=>!v(ae.target)).map(ae=>new y.StandardKeyboardEvent(ae)).filter(ae=>ae.keyCode===2&&!ae.ctrlKey&&!ae.metaKey&&!ae.shiftKey&&!ae.altKey).on(this.onTab,this,this.disposables)}onTab(V){if(V.target!==this.view.domNode)return;const Y=this.list.getFocus();if(Y.length===0)return;const ie=this.view.domElement(Y[0]);if(!ie)return;const ae=ie.querySelector("[tabIndex]");if(!ae||!(ae instanceof HTMLElement)||ae.tabIndex===-1)return;const ce=window.getComputedStyle(ae);ce.visibility==="hidden"||ce.display==="none"||(V.preventDefault(),V.stopPropagation(),ae.focus())}dispose(){this.disposables.dispose()}}function T(B){return u.isMacintosh?B.browserEvent.metaKey:B.browserEvent.ctrlKey}e.isSelectionSingleChangeEvent=T;function A(B){return B.browserEvent.shiftKey}e.isSelectionRangeChangeEvent=A;function N(B){return B instanceof MouseEvent&&B.button===2}const F={isSelectionSingleChangeEvent:T,isSelectionRangeChangeEvent:A};class O{constructor(V){this.list=V,this.disposables=new t.DisposableStore,this._onPointer=new i.Emitter,this.onPointer=this._onPointer.event,V.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||F),this.mouseSupport=typeof V.options.mouseSupport>"u"||!!V.options.mouseSupport,this.mouseSupport&&(V.onMouseDown(this.onMouseDown,this,this.disposables),V.onContextMenu(this.onContextMenu,this,this.disposables),V.onMouseDblClick(this.onDoubleClick,this,this.disposables),V.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(D.Gesture.addTarget(V.getHTMLElement()))),i.Event.any(V.onMouseClick,V.onMouseMiddleClick,V.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(V){V.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,V.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||F))}isSelectionSingleChangeEvent(V){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(V):!1}isSelectionRangeChangeEvent(V){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(V):!1}isSelectionChangeEvent(V){return this.isSelectionSingleChangeEvent(V)||this.isSelectionRangeChangeEvent(V)}onMouseDown(V){b(V.browserEvent.target)||document.activeElement!==V.browserEvent.target&&this.list.domFocus()}onContextMenu(V){if(v(V.browserEvent.target)||b(V.browserEvent.target))return;const Y=typeof V.index>"u"?[]:[V.index];this.list.setFocus(Y,V.browserEvent)}onViewPointer(V){if(!this.mouseSupport||v(V.browserEvent.target)||b(V.browserEvent.target)||V.browserEvent.isHandledByList)return;V.browserEvent.isHandledByList=!0;const Y=V.index;if(typeof Y>"u"){this.list.setFocus([],V.browserEvent),this.list.setSelection([],V.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(V))return this.changeSelection(V);this.list.setFocus([Y],V.browserEvent),this.list.setAnchor(Y),N(V.browserEvent)||this.list.setSelection([Y],V.browserEvent),this._onPointer.fire(V)}onDoubleClick(V){if(v(V.browserEvent.target)||b(V.browserEvent.target)||this.isSelectionChangeEvent(V)||V.browserEvent.isHandledByList)return;V.browserEvent.isHandledByList=!0;const Y=this.list.getFocus();this.list.setSelection(Y,V.browserEvent)}changeSelection(V){const Y=V.index;let ie=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(V)){if(typeof ie>"u"){const q=this.list.getFocus()[0];ie=q??Y,this.list.setAnchor(ie)}const ae=Math.min(ie,Y),ce=Math.max(ie,Y),de=(0,_.range)(ae,ce+1),he=this.list.getSelection(),ue=j(R(he,[ie]),ie);if(ue.length===0)return;const te=R(de,K(he,ue));this.list.setSelection(te,V.browserEvent),this.list.setFocus([Y],V.browserEvent)}else if(this.isSelectionSingleChangeEvent(V)){const ae=this.list.getSelection(),ce=ae.filter(de=>de!==Y);this.list.setFocus([Y]),this.list.setAnchor(Y),ae.length===ce.length?this.list.setSelection([...ce,Y],V.browserEvent):this.list.setSelection(ce,V.browserEvent)}}dispose(){this.disposables.dispose()}}e.MouseController=O;class W{constructor(V,Y){this.styleElement=V,this.selectorSuffix=Y}style(V){var Y,ie;const ae=this.selectorSuffix&&`.${this.selectorSuffix}`,ce=[];V.listBackground&&ce.push(`.monaco-list${ae} .monaco-list-rows { background: ${V.listBackground}; }`),V.listFocusBackground&&(ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused { background-color: ${V.listFocusBackground}; }`),ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused:hover { background-color: ${V.listFocusBackground}; }`)),V.listFocusForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused { color: ${V.listFocusForeground}; }`),V.listActiveSelectionBackground&&(ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected { background-color: ${V.listActiveSelectionBackground}; }`),ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected:hover { background-color: ${V.listActiveSelectionBackground}; }`)),V.listActiveSelectionForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected { color: ${V.listActiveSelectionForeground}; }`),V.listActiveSelectionIconForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected .codicon { color: ${V.listActiveSelectionIconForeground}; }`),V.listFocusAndSelectionBackground&&ce.push(` - .monaco-drag-image, - .monaco-list${ae}:focus .monaco-list-row.selected.focused { background-color: ${V.listFocusAndSelectionBackground}; } - `),V.listFocusAndSelectionForeground&&ce.push(` - .monaco-drag-image, - .monaco-list${ae}:focus .monaco-list-row.selected.focused { color: ${V.listFocusAndSelectionForeground}; } - `),V.listInactiveFocusForeground&&(ce.push(`.monaco-list${ae} .monaco-list-row.focused { color: ${V.listInactiveFocusForeground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.focused:hover { color: ${V.listInactiveFocusForeground}; }`)),V.listInactiveSelectionIconForeground&&ce.push(`.monaco-list${ae} .monaco-list-row.focused .codicon { color: ${V.listInactiveSelectionIconForeground}; }`),V.listInactiveFocusBackground&&(ce.push(`.monaco-list${ae} .monaco-list-row.focused { background-color: ${V.listInactiveFocusBackground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.focused:hover { background-color: ${V.listInactiveFocusBackground}; }`)),V.listInactiveSelectionBackground&&(ce.push(`.monaco-list${ae} .monaco-list-row.selected { background-color: ${V.listInactiveSelectionBackground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.selected:hover { background-color: ${V.listInactiveSelectionBackground}; }`)),V.listInactiveSelectionForeground&&ce.push(`.monaco-list${ae} .monaco-list-row.selected { color: ${V.listInactiveSelectionForeground}; }`),V.listHoverBackground&&ce.push(`.monaco-list${ae}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${V.listHoverBackground}; }`),V.listHoverForeground&&ce.push(`.monaco-list${ae}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${V.listHoverForeground}; }`);const de=(0,L.asCssValueWithDefault)(V.listFocusAndSelectionOutline,(0,L.asCssValueWithDefault)(V.listSelectionOutline,(Y=V.listFocusOutline)!==null&&Y!==void 0?Y:""));de&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused.selected { outline: 1px solid ${de}; outline-offset: -1px;}`),V.listFocusOutline&&ce.push(` - .monaco-drag-image, - .monaco-list${ae}:focus .monaco-list-row.focused { outline: 1px solid ${V.listFocusOutline}; outline-offset: -1px; } - .monaco-workbench.context-menu-visible .monaco-list${ae}.last-focused .monaco-list-row.focused { outline: 1px solid ${V.listFocusOutline}; outline-offset: -1px; } - `);const he=(0,L.asCssValueWithDefault)(V.listSelectionOutline,(ie=V.listInactiveFocusOutline)!==null&&ie!==void 0?ie:"");he&&ce.push(`.monaco-list${ae} .monaco-list-row.focused.selected { outline: 1px dotted ${he}; outline-offset: -1px; }`),V.listSelectionOutline&&ce.push(`.monaco-list${ae} .monaco-list-row.selected { outline: 1px dotted ${V.listSelectionOutline}; outline-offset: -1px; }`),V.listInactiveFocusOutline&&ce.push(`.monaco-list${ae} .monaco-list-row.focused { outline: 1px dotted ${V.listInactiveFocusOutline}; outline-offset: -1px; }`),V.listHoverOutline&&ce.push(`.monaco-list${ae} .monaco-list-row:hover { outline: 1px dashed ${V.listHoverOutline}; outline-offset: -1px; }`),V.listDropBackground&&ce.push(` - .monaco-list${ae}.drop-target, - .monaco-list${ae} .monaco-list-rows.drop-target, - .monaco-list${ae} .monaco-list-row.drop-target { background-color: ${V.listDropBackground} !important; color: inherit !important; } - `),V.tableColumnsBorder&&ce.push(` - .monaco-table > .monaco-split-view2, - .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before, - .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2, - .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before { - border-color: ${V.tableColumnsBorder}; - } - - .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2, - .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before { - border-color: transparent; - } - `),V.tableOddRowsBackgroundColor&&ce.push(` - .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr, - .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr, - .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr { - background-color: ${V.tableOddRowsBackgroundColor}; - } - `),this.styleElement.textContent=ce.join(` -`)}}e.DefaultStyleController=W,e.unthemedListStyles={listFocusBackground:"#7FB0D0",listActiveSelectionBackground:"#0E639C",listActiveSelectionForeground:"#FFFFFF",listActiveSelectionIconForeground:"#FFFFFF",listFocusAndSelectionOutline:"#90C2F9",listFocusAndSelectionBackground:"#094771",listFocusAndSelectionForeground:"#FFFFFF",listInactiveSelectionBackground:"#3F3F46",listInactiveSelectionIconForeground:"#FFFFFF",listHoverBackground:"#2A2D2E",listDropBackground:"#383B3D",treeIndentGuidesStroke:"#a9a9a9",treeInactiveIndentGuidesStroke:C.Color.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:C.Color.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:C.Color.fromHex("#cccccc").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0};const U={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){}}};function j(B,V){const Y=B.indexOf(V);if(Y===-1)return[];const ie=[];let ae=Y-1;for(;ae>=0&&B[ae]===V-(Y-ae);)ie.push(B[ae--]);for(ie.reverse(),ae=Y;ae=B.length)Y.push(V[ae++]);else if(ae>=V.length)Y.push(B[ie++]);else if(B[ie]===V[ae]){Y.push(B[ie]),ie++,ae++;continue}else B[ie]=B.length)Y.push(V[ae++]);else if(ae>=V.length)Y.push(B[ie++]);else if(B[ie]===V[ae]){ie++,ae++;continue}else B[ie]B-V;class Z{constructor(V,Y){this._templateId=V,this.renderers=Y}get templateId(){return this._templateId}renderTemplate(V){return this.renderers.map(Y=>Y.renderTemplate(V))}renderElement(V,Y,ie,ae){let ce=0;for(const de of this.renderers)de.renderElement(V,Y,ie[ce++],ae)}disposeElement(V,Y,ie,ae){var ce;let de=0;for(const he of this.renderers)(ce=he.disposeElement)===null||ce===void 0||ce.call(he,V,Y,ie[de],ae),de+=1}disposeTemplate(V){let Y=0;for(const ie of this.renderers)ie.disposeTemplate(V[Y++])}}class J{constructor(V){this.accessibilityProvider=V,this.templateId="a18n"}renderTemplate(V){return V}renderElement(V,Y,ie){const ae=this.accessibilityProvider.getAriaLabel(V);ae?ie.setAttribute("aria-label",ae):ie.removeAttribute("aria-label");const ce=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(V);typeof ce=="number"?ie.setAttribute("aria-level",`${ce}`):ie.removeAttribute("aria-level")}disposeTemplate(V){}}class X{constructor(V,Y){this.list=V,this.dnd=Y}getDragElements(V){const Y=this.list.getSelectedElements();return Y.indexOf(V)>-1?Y:[V]}getDragURI(V){return this.dnd.getDragURI(V)}getDragLabel(V,Y){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(V,Y)}onDragStart(V,Y){var ie,ae;(ae=(ie=this.dnd).onDragStart)===null||ae===void 0||ae.call(ie,V,Y)}onDragOver(V,Y,ie,ae){return this.dnd.onDragOver(V,Y,ie,ae)}onDragLeave(V,Y,ie,ae){var ce,de;(de=(ce=this.dnd).onDragLeave)===null||de===void 0||de.call(ce,V,Y,ie,ae)}onDragEnd(V){var Y,ie;(ie=(Y=this.dnd).onDragEnd)===null||ie===void 0||ie.call(Y,V)}drop(V,Y,ie,ae){this.dnd.drop(V,Y,ie,ae)}}class H{get onDidChangeFocus(){return i.Event.map(this.eventBufferer.wrapEvent(this.focus.onChange),V=>this.toListEvent(V),this.disposables)}get onDidChangeSelection(){return i.Event.map(this.eventBufferer.wrapEvent(this.selection.onChange),V=>this.toListEvent(V),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let V=!1;const Y=this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event)).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>V=ce.keyCode===58||ce.shiftKey&&ce.keyCode===68).map(ce=>L.EventHelper.stop(ce,!0)).filter(()=>!1).event,ie=this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keyup")).event)).forEach(()=>V=!1).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>ce.keyCode===58||ce.shiftKey&&ce.keyCode===68).map(ce=>L.EventHelper.stop(ce,!0)).map(({browserEvent:ce})=>{const de=this.getFocus(),he=de.length?de[0]:void 0,ue=typeof he<"u"?this.view.element(he):void 0,te=typeof he<"u"?this.view.domElement(he):this.view.domNode;return{index:he,element:ue,anchor:te,browserEvent:ce}}).event,ae=this.disposables.add(i.Event.chain(this.view.onContextMenu)).filter(ce=>!V).map(({element:ce,index:de,browserEvent:he})=>({element:ce,index:de,anchor:new o.StandardMouseEvent(he),browserEvent:he})).event;return i.Event.any(Y,ie,ae)}get onKeyDown(){return this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event}get onDidFocus(){return i.Event.signal(this.disposables.add(new k.DomEmitter(this.view.domNode,"focus",!0)).event)}constructor(V,Y,ie,ae,ce=U){var de,he,ue,te;this.user=V,this._options=ce,this.focus=new l("focused"),this.anchor=new l("anchor"),this.eventBufferer=new i.EventBufferer,this._ariaLabel="",this.disposables=new t.DisposableStore,this._onDidDispose=new i.Emitter,this.onDidDispose=this._onDidDispose.event;const q=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(de=this._options.accessibilityProvider)===null||de===void 0?void 0:de.getWidgetRole():"list";this.selection=new p(q!=="listbox");const z=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=ce.accessibilityProvider,this.accessibilityProvider&&(z.push(new J(this.accessibilityProvider)),(ue=(he=this.accessibilityProvider).onDidChangeActiveDescendant)===null||ue===void 0||ue.call(he,this.onDidChangeActiveDescendant,this,this.disposables)),ae=ae.map($=>new Z($.templateId,[...z,$]));const ee=Object.assign(Object.assign({},ce),{dnd:ce.dnd&&new X(this,ce.dnd)});if(this.view=this.createListView(Y,ie,ae,ee),this.view.domNode.setAttribute("role",q),ce.styleController)this.styleController=ce.styleController(this.view.domId);else{const $=(0,L.createStyleSheet)(this.view.domNode);this.styleController=new W($,this.view.domId)}if(this.spliceable=new f.CombinedSpliceable([new m(this.focus,this.view,ce.identityProvider),new m(this.selection,this.view,ce.identityProvider),new m(this.anchor,this.view,ce.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new x(this,this.view)),(typeof ce.keyboardSupport!="boolean"||ce.keyboardSupport)&&(this.keyboardController=new E(this,this.view,ce),this.disposables.add(this.keyboardController)),ce.keyboardNavigationLabelProvider){const $=ce.keyboardNavigationDelegate||e.DefaultKeyboardNavigationDelegate;this.typeNavigationController=new P(this,this.view,ce.keyboardNavigationLabelProvider,(te=ce.keyboardNavigationEventFilter)!==null&&te!==void 0?te:()=>!0,$),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(ce),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(V,Y,ie,ae){return new c.ListView(V,Y,ie,ae)}createMouseController(V){return new O(this)}updateOptions(V={}){var Y,ie;this._options=Object.assign(Object.assign({},this._options),V),(Y=this.typeNavigationController)===null||Y===void 0||Y.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(V),(ie=this.keyboardController)===null||ie===void 0||ie.updateOptions(V),this.view.updateOptions(V)}get options(){return this._options}splice(V,Y,ie=[]){if(V<0||V>this.view.length)throw new r.ListError(this.user,`Invalid start index: ${V}`);if(Y<0)throw new r.ListError(this.user,`Invalid delete count: ${Y}`);Y===0&&ie.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(V,Y,ie))}rerender(){this.view.rerender()}element(V){return this.view.element(V)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(V){this.view.setScrollTop(V)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(V){this._ariaLabel=V,this.view.domNode.setAttribute("aria-label",V)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(V,Y){this.view.layout(V,Y)}setSelection(V,Y){for(const ie of V)if(ie<0||ie>=this.length)throw new r.ListError(this.user,`Invalid index ${ie}`);this.selection.set(V,Y)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(V=>this.view.element(V))}setAnchor(V){if(typeof V>"u"){this.anchor.set([]);return}if(V<0||V>=this.length)throw new r.ListError(this.user,`Invalid index ${V}`);this.anchor.set([V])}getAnchor(){return(0,_.firstOrDefault)(this.anchor.get(),void 0)}getAnchorElement(){const V=this.getAnchor();return typeof V>"u"?void 0:this.element(V)}setFocus(V,Y){for(const ie of V)if(ie<0||ie>=this.length)throw new r.ListError(this.user,`Invalid index ${ie}`);this.focus.set(V,Y)}focusNext(V=1,Y=!1,ie,ae){if(this.length===0)return;const ce=this.focus.get(),de=this.findNextIndex(ce.length>0?ce[0]+V:0,Y,ae);de>-1&&this.setFocus([de],ie)}focusPrevious(V=1,Y=!1,ie,ae){if(this.length===0)return;const ce=this.focus.get(),de=this.findPreviousIndex(ce.length>0?ce[0]-V:0,Y,ae);de>-1&&this.setFocus([de],ie)}focusNextPage(V,Y){return we(this,void 0,void 0,function*(){let ie=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);ie=ie===0?0:ie-1;const ae=this.getFocus()[0];if(ae!==ie&&(ae===void 0||ie>ae)){const ce=this.findPreviousIndex(ie,!1,Y);ce>-1&&ae!==ce?this.setFocus([ce],V):this.setFocus([ie],V)}else{const ce=this.view.getScrollTop();let de=ce+this.view.renderHeight;ie>ae&&(de-=this.view.elementHeight(ie)),this.view.setScrollTop(de),this.view.getScrollTop()!==ce&&(this.setFocus([]),yield(0,g.timeout)(0),yield this.focusNextPage(V,Y))}})}focusPreviousPage(V,Y){return we(this,void 0,void 0,function*(){let ie;const ae=this.view.getScrollTop();ae===0?ie=this.view.indexAt(ae):ie=this.view.indexAfter(ae-1);const ce=this.getFocus()[0];if(ce!==ie&&(ce===void 0||ce>=ie)){const de=this.findNextIndex(ie,!1,Y);de>-1&&ce!==de?this.setFocus([de],V):this.setFocus([ie],V)}else{const de=ae;this.view.setScrollTop(ae-this.view.renderHeight),this.view.getScrollTop()!==de&&(this.setFocus([]),yield(0,g.timeout)(0),yield this.focusPreviousPage(V,Y))}})}focusLast(V,Y){if(this.length===0)return;const ie=this.findPreviousIndex(this.length-1,!1,Y);ie>-1&&this.setFocus([ie],V)}focusFirst(V,Y){this.focusNth(0,V,Y)}focusNth(V,Y,ie){if(this.length===0)return;const ae=this.findNextIndex(V,!1,ie);ae>-1&&this.setFocus([ae],Y)}findNextIndex(V,Y=!1,ie){for(let ae=0;ae=this.length&&!Y)return-1;if(V=V%this.length,!ie||ie(this.element(V)))return V;V++}return-1}findPreviousIndex(V,Y=!1,ie){for(let ae=0;aethis.view.element(V))}reveal(V,Y){if(V<0||V>=this.length)throw new r.ListError(this.user,`Invalid index ${V}`);const ie=this.view.getScrollTop(),ae=this.view.elementTop(V),ce=this.view.elementHeight(V);if((0,h.isNumber)(Y)){const de=ce-this.view.renderHeight;this.view.setScrollTop(de*(0,a.clamp)(Y,0,1)+ae)}else{const de=ae+ce,he=ie+this.view.renderHeight;ae=he||(ae=he&&ce>=this.view.renderHeight?this.view.setScrollTop(ae):de>=he&&this.view.setScrollTop(de-this.view.renderHeight))}}getHTMLElement(){return this.view.domNode}getElementID(V){return this.view.getElementDomId(V)}style(V){this.styleController.style(V)}toListEvent({indexes:V,browserEvent:Y}){return{indexes:V,elements:V.map(ie=>this.view.element(ie)),browserEvent:Y}}_onFocusChange(){const V=this.focus.get();this.view.domNode.classList.toggle("element-focused",V.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var V;const Y=this.focus.get();if(Y.length>0){let ie;!((V=this.accessibilityProvider)===null||V===void 0)&&V.getActiveDescendantId&&(ie=this.accessibilityProvider.getActiveDescendantId(this.view.element(Y[0]))),this.view.domNode.setAttribute("aria-activedescendant",ie||this.view.getElementDomId(Y[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const V=this.selection.get();this.view.domNode.classList.toggle("selection-none",V.length===0),this.view.domNode.classList.toggle("selection-single",V.length===1),this.view.domNode.classList.toggle("selection-multiple",V.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}e.List=H,ke([s.memoize],H.prototype,"onDidChangeFocus",null),ke([s.memoize],H.prototype,"onDidChangeSelection",null),ke([s.memoize],H.prototype,"onContextMenu",null),ke([s.memoize],H.prototype,"onKeyDown",null),ke([s.memoize],H.prototype,"onDidFocus",null)}),define(ne[578],se([1,0,14,19,6,2,114,268]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PagedList=void 0;class f{get templateId(){return this.renderer.templateId}constructor(i,n){this.renderer=i,this.modelProvider=n}renderTemplate(i){return{data:this.renderer.renderTemplate(i),disposable:D.Disposable.None}}renderElement(i,n,t,a){var u;if((u=t.disposable)===null||u===void 0||u.dispose(),!t.data)return;const h=this.modelProvider();if(h.isResolved(i))return this.renderer.renderElement(h.get(i),i,t.data,a);const r=new k.CancellationTokenSource,c=h.resolve(i,r.token);t.disposable={dispose:()=>r.cancel()},this.renderer.renderPlaceholder(i,t.data),c.then(o=>this.renderer.renderElement(o,i,t.data,a))}disposeTemplate(i){i.disposable&&(i.disposable.dispose(),i.disposable=void 0),i.data&&(this.renderer.disposeTemplate(i.data),i.data=void 0)}}class _{constructor(i,n){this.modelProvider=i,this.accessibilityProvider=n}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(i){const n=this.modelProvider();return n.isResolved(i)?this.accessibilityProvider.getAriaLabel(n.get(i)):null}}function g(s,i){return Object.assign(Object.assign({},i),{accessibilityProvider:i.accessibilityProvider&&new _(s,i.accessibilityProvider)})}class C{constructor(i,n,t,a,u={}){const h=()=>this.model,r=a.map(c=>new f(c,h));this.list=new S.List(i,n,t,r,g(h,u))}updateOptions(i){this.list.updateOptions(i)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return y.Event.map(this.list.onMouseDblClick,({element:i,index:n,browserEvent:t})=>({element:i===void 0?void 0:this._model.get(i),index:n,browserEvent:t}))}get onPointer(){return y.Event.map(this.list.onPointer,({element:i,index:n,browserEvent:t})=>({element:i===void 0?void 0:this._model.get(i),index:n,browserEvent:t}))}get onDidChangeSelection(){return y.Event.map(this.list.onDidChangeSelection,({elements:i,indexes:n,browserEvent:t})=>({elements:i.map(a=>this._model.get(a)),indexes:n,browserEvent:t}))}get model(){return this._model}set model(i){this._model=i,this.list.splice(0,this.list.length,(0,L.range)(i.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(i=>this.model.get(i))}style(i){this.list.style(i)}dispose(){this.list.dispose()}}e.PagedList=C}),define(ne[311],se([1,0,7,81,130,75,14,38,6,2,141,167,20,409]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SplitView=e.Sizing=void 0;const n={separatorBorder:f.Color.transparent};class t{set size(d){this._size=d}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>"u"}setVisible(d,l){var p,m;d!==this.visible&&(d?(this.size=(0,C.clamp)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof l=="number"?l:this.size,this.size=0),this.container.classList.toggle("visible",d),(m=(p=this.view).setVisible)===null||m===void 0||m.call(p,d))}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){var d;return(d=this.view.proportionalLayout)!==null&&d!==void 0?d:!0}get snap(){return!!this.view.snap}set enabled(d){this.container.style.pointerEvents=d?"":"none"}constructor(d,l,p,m){this.container=d,this.view=l,this.disposable=m,this._cachedVisibleSize=void 0,typeof p=="number"?(this._size=p,this._cachedVisibleSize=void 0,d.classList.add("visible")):(this._size=0,this._cachedVisibleSize=p.cachedVisibleSize)}layout(d,l){this.layoutContainer(d),this.view.layout(this.size,d,l)}dispose(){this.disposable.dispose()}}class a extends t{layoutContainer(d){this.container.style.top=`${d}px`,this.container.style.height=`${this.size}px`}}class u extends t{layoutContainer(d){this.container.style.left=`${d}px`,this.container.style.width=`${this.size}px`}}var h;(function(o){o[o.Idle=0]="Idle",o[o.Busy=1]="Busy"})(h||(h={}));var r;(function(o){o.Distribute={type:"distribute"};function d(m){return{type:"split",index:m}}o.Split=d;function l(m){return{type:"auto",index:m}}o.Auto=l;function p(m){return{type:"invisible",cachedVisibleSize:m}}o.Invisible=p})(r||(e.Sizing=r={}));class c extends g.Disposable{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(d){for(const l of this.sashItems)l.sash.orthogonalStartSash=d;this._orthogonalStartSash=d}set orthogonalEndSash(d){for(const l of this.sashItems)l.sash.orthogonalEndSash=d;this._orthogonalEndSash=d}set startSnappingEnabled(d){this._startSnappingEnabled!==d&&(this._startSnappingEnabled=d,this.updateSashEnablement())}set endSnappingEnabled(d){this._endSnappingEnabled!==d&&(this._endSnappingEnabled=d,this.updateSashEnablement())}constructor(d,l={}){var p,m,v,b,w;super(),this.size=0,this.contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=h.Idle,this._onDidSashChange=this._register(new _.Emitter),this._onDidSashReset=this._register(new _.Emitter),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=(p=l.orientation)!==null&&p!==void 0?p:0,this.inverseAltBehavior=(m=l.inverseAltBehavior)!==null&&m!==void 0?m:!1,this.proportionalLayout=(v=l.proportionalLayout)!==null&&v!==void 0?v:!0,this.getSashOrthogonalSize=l.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(this.orientation===0?"vertical":"horizontal"),d.appendChild(this.el),this.sashContainer=(0,L.append)(this.el,(0,L.$)(".sash-container")),this.viewContainer=(0,L.$)(".split-view-container"),this.scrollable=this._register(new s.Scrollable({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:L.scheduleAtNextAnimationFrame})),this.scrollableElement=this._register(new D.SmoothScrollableElement(this.viewContainer,{vertical:this.orientation===0?(b=l.scrollbarVisibility)!==null&&b!==void 0?b:1:2,horizontal:this.orientation===1?(w=l.scrollbarVisibility)!==null&&w!==void 0?w:1:2},this.scrollable));const E=this._register(new k.DomEmitter(this.viewContainer,"scroll")).event;this._register(E(I=>{const M=this.scrollableElement.getScrollPosition(),P=Math.abs(this.viewContainer.scrollLeft-M.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,x=Math.abs(this.viewContainer.scrollTop-M.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(P!==void 0||x!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:P,scrollTop:x})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(I=>{I.scrollTopChanged&&(this.viewContainer.scrollTop=I.scrollTop),I.scrollLeftChanged&&(this.viewContainer.scrollLeft=I.scrollLeft)})),(0,L.append)(this.el,this.scrollableElement.getDomNode()),this.style(l.styles||n),l.descriptor&&(this.size=l.descriptor.size,l.descriptor.views.forEach((I,M)=>{const P=i.isUndefined(I.visible)||I.visible?I.size:{type:"invisible",cachedVisibleSize:I.size},x=I.view;this.doAddView(x,P,M,!0)}),this.contentSize=this.viewItems.reduce((I,M)=>I+M.size,0),this.saveProportions())}style(d){d.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",d.separatorBorder.toString()))}addView(d,l,p=this.viewItems.length,m){this.doAddView(d,l,p,m)}layout(d,l){const p=Math.max(this.size,this.contentSize);if(this.size=d,this.layoutContext=l,this.proportions){let m=0;for(let v=0;vthis.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);this.resize(this.viewItems.length-1,d-p,void 0,v,b)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this.contentSize>0&&(this.proportions=this.viewItems.map(d=>d.proportionalLayout?d.size/this.contentSize:void 0))}onSashStart({sash:d,start:l,alt:p}){for(const w of this.viewItems)w.enabled=!1;const m=this.sashItems.findIndex(w=>w.sash===d),v=(0,g.combinedDisposable)((0,L.addDisposableListener)(document.body,"keydown",w=>b(this.sashDragState.current,w.altKey)),(0,L.addDisposableListener)(document.body,"keyup",()=>b(this.sashDragState.current,!1))),b=(w,E)=>{const I=this.viewItems.map(A=>A.size);let M=Number.NEGATIVE_INFINITY,P=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(E=!E),E)if(m===this.sashItems.length-1){const N=this.viewItems[m];M=(N.minimumSize-N.size)/2,P=(N.maximumSize-N.size)/2}else{const N=this.viewItems[m+1];M=(N.size-N.maximumSize)/2,P=(N.size-N.minimumSize)/2}let x,T;if(!E){const A=(0,S.range)(m,-1),N=(0,S.range)(m+1,this.viewItems.length),F=A.reduce((Z,J)=>Z+(this.viewItems[J].minimumSize-I[J]),0),O=A.reduce((Z,J)=>Z+(this.viewItems[J].viewMaximumSize-I[J]),0),W=N.length===0?Number.POSITIVE_INFINITY:N.reduce((Z,J)=>Z+(I[J]-this.viewItems[J].minimumSize),0),U=N.length===0?Number.NEGATIVE_INFINITY:N.reduce((Z,J)=>Z+(I[J]-this.viewItems[J].viewMaximumSize),0),j=Math.max(F,U),R=Math.min(W,O),K=this.findFirstSnapIndex(A),G=this.findFirstSnapIndex(N);if(typeof K=="number"){const Z=this.viewItems[K],J=Math.floor(Z.viewMinimumSize/2);x={index:K,limitDelta:Z.visible?j-J:j+J,size:Z.size}}if(typeof G=="number"){const Z=this.viewItems[G],J=Math.floor(Z.viewMinimumSize/2);T={index:G,limitDelta:Z.visible?R+J:R-J,size:Z.size}}}this.sashDragState={start:w,current:w,index:m,sizes:I,minDelta:M,maxDelta:P,alt:E,snapBefore:x,snapAfter:T,disposable:v}};b(l,p)}onSashChange({current:d}){const{index:l,start:p,sizes:m,alt:v,minDelta:b,maxDelta:w,snapBefore:E,snapAfter:I}=this.sashDragState;this.sashDragState.current=d;const M=d-p,P=this.resize(l,M,m,void 0,void 0,b,w,E,I);if(v){const x=l===this.sashItems.length-1,T=this.viewItems.map(U=>U.size),A=x?l:l+1,N=this.viewItems[A],F=N.size-N.maximumSize,O=N.size-N.minimumSize,W=x?l-1:l+1;this.resize(W,-P,T,void 0,void 0,F,O)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(d){this._onDidSashChange.fire(d),this.sashDragState.disposable.dispose(),this.saveProportions();for(const l of this.viewItems)l.enabled=!0}onViewChange(d,l){const p=this.viewItems.indexOf(d);p<0||p>=this.viewItems.length||(l=typeof l=="number"?l:d.size,l=(0,C.clamp)(l,d.minimumSize,d.maximumSize),this.inverseAltBehavior&&p>0?(this.resize(p-1,Math.floor((d.size-l)/2)),this.distributeEmptySpace(),this.layoutViews()):(d.size=l,this.relayout([p],void 0)))}resizeView(d,l){if(this.state!==h.Idle)throw new Error("Cant modify splitview");if(this.state=h.Busy,d<0||d>=this.viewItems.length)return;const p=(0,S.range)(this.viewItems.length).filter(w=>w!==d),m=[...p.filter(w=>this.viewItems[w].priority===1),d],v=p.filter(w=>this.viewItems[w].priority===2),b=this.viewItems[d];l=Math.round(l),l=(0,C.clamp)(l,b.minimumSize,Math.min(b.maximumSize,this.size)),b.size=l,this.relayout(m,v),this.state=h.Idle}distributeViewSizes(){const d=[];let l=0;for(const w of this.viewItems)w.maximumSize-w.minimumSize>0&&(d.push(w),l+=w.size);const p=Math.floor(l/d.length);for(const w of d)w.size=(0,C.clamp)(p,w.minimumSize,w.maximumSize);const m=(0,S.range)(this.viewItems.length),v=m.filter(w=>this.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);this.relayout(v,b)}getViewSize(d){return d<0||d>=this.viewItems.length?-1:this.viewItems[d].size}doAddView(d,l,p=this.viewItems.length,m){if(this.state!==h.Idle)throw new Error("Cant modify splitview");this.state=h.Busy;const v=(0,L.$)(".split-view-view");p===this.viewItems.length?this.viewContainer.appendChild(v):this.viewContainer.insertBefore(v,this.viewContainer.children.item(p));const b=d.onDidChange(x=>this.onViewChange(M,x)),w=(0,g.toDisposable)(()=>this.viewContainer.removeChild(v)),E=(0,g.combinedDisposable)(b,w);let I;typeof l=="number"?I=l:(l.type==="auto"&&(this.areViewsDistributed()?l={type:"distribute"}:l={type:"split",index:l.index}),l.type==="split"?I=this.getViewSize(l.index)/2:l.type==="invisible"?I={cachedVisibleSize:l.cachedVisibleSize}:I=d.minimumSize);const M=this.orientation===0?new a(v,d,I,E):new u(v,d,I,E);if(this.viewItems.splice(p,0,M),this.viewItems.length>1){const x={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},T=this.orientation===0?new y.Sash(this.sashContainer,{getHorizontalSashTop:Z=>this.getSashPosition(Z),getHorizontalSashWidth:this.getSashOrthogonalSize},Object.assign(Object.assign({},x),{orientation:1})):new y.Sash(this.sashContainer,{getVerticalSashLeft:Z=>this.getSashPosition(Z),getVerticalSashHeight:this.getSashOrthogonalSize},Object.assign(Object.assign({},x),{orientation:0})),A=this.orientation===0?Z=>({sash:T,start:Z.startY,current:Z.currentY,alt:Z.altKey}):Z=>({sash:T,start:Z.startX,current:Z.currentX,alt:Z.altKey}),F=_.Event.map(T.onDidStart,A)(this.onSashStart,this),W=_.Event.map(T.onDidChange,A)(this.onSashChange,this),j=_.Event.map(T.onDidEnd,()=>this.sashItems.findIndex(Z=>Z.sash===T))(this.onSashEnd,this),R=T.onDidReset(()=>{const Z=this.sashItems.findIndex(V=>V.sash===T),J=(0,S.range)(Z,-1),X=(0,S.range)(Z+1,this.viewItems.length),H=this.findFirstSnapIndex(J),B=this.findFirstSnapIndex(X);typeof H=="number"&&!this.viewItems[H].visible||typeof B=="number"&&!this.viewItems[B].visible||this._onDidSashReset.fire(Z)}),K=(0,g.combinedDisposable)(F,W,j,R,T),G={sash:T,disposable:K};this.sashItems.splice(p-1,0,G)}v.appendChild(d.element);let P;typeof l!="number"&&l.type==="split"&&(P=[l.index]),m||this.relayout([p],P),this.state=h.Idle,!m&&typeof l!="number"&&l.type==="distribute"&&this.distributeViewSizes()}relayout(d,l){const p=this.viewItems.reduce((m,v)=>m+v.size,0);this.resize(this.viewItems.length-1,this.size-p,void 0,d,l),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(d,l,p=this.viewItems.map(M=>M.size),m,v,b=Number.NEGATIVE_INFINITY,w=Number.POSITIVE_INFINITY,E,I){if(d<0||d>=this.viewItems.length)return 0;const M=(0,S.range)(d,-1),P=(0,S.range)(d+1,this.viewItems.length);if(v)for(const G of v)(0,S.pushToStart)(M,G),(0,S.pushToStart)(P,G);if(m)for(const G of m)(0,S.pushToEnd)(M,G),(0,S.pushToEnd)(P,G);const x=M.map(G=>this.viewItems[G]),T=M.map(G=>p[G]),A=P.map(G=>this.viewItems[G]),N=P.map(G=>p[G]),F=M.reduce((G,Z)=>G+(this.viewItems[Z].minimumSize-p[Z]),0),O=M.reduce((G,Z)=>G+(this.viewItems[Z].maximumSize-p[Z]),0),W=P.length===0?Number.POSITIVE_INFINITY:P.reduce((G,Z)=>G+(p[Z]-this.viewItems[Z].minimumSize),0),U=P.length===0?Number.NEGATIVE_INFINITY:P.reduce((G,Z)=>G+(p[Z]-this.viewItems[Z].maximumSize),0),j=Math.max(F,U,b),R=Math.min(W,O,w);let K=!1;if(E){const G=this.viewItems[E.index],Z=l>=E.limitDelta;K=Z!==G.visible,G.setVisible(Z,E.size)}if(!K&&I){const G=this.viewItems[I.index],Z=lw+E.size,0);let p=this.size-l;const m=(0,S.range)(this.viewItems.length-1,-1),v=m.filter(w=>this.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);for(const w of b)(0,S.pushToStart)(m,w);for(const w of v)(0,S.pushToEnd)(m,w);typeof d=="number"&&(0,S.pushToEnd)(m,d);for(let w=0;p!==0&&wl+p.size,0);let d=0;for(const l of this.viewItems)l.layout(d,this.layoutContext),d+=l.size;this.sashItems.forEach(l=>l.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this.contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this.contentSize})}updateSashEnablement(){let d=!1;const l=this.viewItems.map(E=>d=E.size-E.minimumSize>0||d);d=!1;const p=this.viewItems.map(E=>d=E.maximumSize-E.size>0||d),m=[...this.viewItems].reverse();d=!1;const v=m.map(E=>d=E.size-E.minimumSize>0||d).reverse();d=!1;const b=m.map(E=>d=E.maximumSize-E.size>0||d).reverse();let w=0;for(let E=0;E0||this.startSnappingEnabled)?I.state=1:W&&l[E]&&(w0)return;if(!p.visible&&p.snap)return l}}areViewsDistributed(){let d,l;for(const p of this.viewItems)if(d=d===void 0?p.size:Math.min(d,p.size),l=l===void 0?p.size:Math.max(l,p.size),l-d>2)return!1;return!0}dispose(){var d;(d=this.sashDragState)===null||d===void 0||d.disposable.dispose(),(0,g.dispose)(this.viewItems),this.viewItems=[],this.sashItems.forEach(l=>l.disposable.dispose()),this.sashItems=[],super.dispose()}}e.SplitView=c}),define(ne[579],se([1,0,7,114,311,6,2,410]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Table=void 0;class f{constructor(i,n,t){this.columns=i,this.getColumnSize=t,this.templateId=f.TemplateId,this.renderedTemplates=new Set;const a=new Map(n.map(u=>[u.templateId,u]));this.renderers=[];for(const u of i){const h=a.get(u.templateId);if(!h)throw new Error(`Table cell renderer for template id ${u.templateId} not found.`);this.renderers.push(h)}}renderTemplate(i){const n=(0,L.append)(i,(0,L.$)(".monaco-table-tr")),t=[],a=[];for(let h=0;hnew g(d,l)),c={size:r.reduce((d,l)=>d+l.column.weight,0),views:r.map(d=>({size:d.column.weight,view:d}))};this.splitview=this.disposables.add(new y.SplitView(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:c})),this.splitview.el.style.height=`${t.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${t.headerRowHeight}px`;const o=new f(a,u,d=>this.splitview.getViewSize(d));this.list=this.disposables.add(new k.List(i,this.domNode,_(t),[o],h)),D.Event.any(...r.map(d=>d.onDidLayout))(([d,l])=>o.layoutColumn(d,l),null,this.disposables),this.splitview.onDidSashReset(d=>{const l=a.reduce((m,v)=>m+v.weight,0),p=a[d].weight/l*this.cachedWidth;this.splitview.resizeView(d,p)},null,this.disposables),this.styleElement=(0,L.createStyleSheet)(this.domNode),this.style(k.unthemedListStyles)}updateOptions(i){this.list.updateOptions(i)}splice(i,n,t=[]){this.list.splice(i,n,t)}getHTMLElement(){return this.domNode}style(i){const n=[];n.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before { - top: ${this.virtualDelegate.headerRowHeight+1}px; - height: calc(100% - ${this.virtualDelegate.headerRowHeight}px); - }`),this.styleElement.textContent=n.join(` -`),this.list.style(i)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}}e.Table=C,C.InstanceCount=0}),define(ne[153],se([1,0,83,26,6,411]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Toggle=e.unthemedToggleStyles=void 0,e.unthemedToggleStyles={inputActiveOptionBorder:"#007ACC00",inputActiveOptionForeground:"#FFFFFF",inputActiveOptionBackground:"#0E639C50"};class D extends L.Widget{constructor(f){super(),this._onChange=this._register(new y.Emitter),this.onChange=this._onChange.event,this._onKeyDown=this._register(new y.Emitter),this.onKeyDown=this._onKeyDown.event,this._opts=f,this._checked=this._opts.isChecked;const _=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,_.push(...k.ThemeIcon.asClassNameArray(this._icon))),this._opts.actionClassName&&_.push(...this._opts.actionClassName.split(" ")),this._checked&&_.push("checked"),this.domNode=document.createElement("div"),this.domNode.title=this._opts.title,this.domNode.classList.add(..._),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,g=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),g.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,g=>{if(g.keyCode===10||g.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),g.preventDefault(),g.stopPropagation();return}this._onKeyDown.fire(g)})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(f){this._checked=f,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}width(){return 2+2+2+16}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1))}disable(){this.domNode.setAttribute("aria-disabled",String(!0))}}e.Toggle=D}),define(ne[312],se([1,0,153,25,553]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RegexToggle=e.WholeWordsToggle=e.CaseSensitiveToggle=void 0;const D=y.localize(0,null),S=y.localize(1,null),f=y.localize(2,null);class _ extends L.Toggle{constructor(i){super({icon:k.Codicon.caseSensitive,title:D+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.CaseSensitiveToggle=_;class g extends L.Toggle{constructor(i){super({icon:k.Codicon.wholeWord,title:S+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.WholeWordsToggle=g;class C extends L.Toggle{constructor(i){super({icon:k.Codicon.regex,title:f+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.RegexToggle=C}),define(ne[45],se([1,0,220,54,92,17,11,22]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataUri=e.addTrailingPathSeparator=e.removeTrailingPathSeparator=e.hasTrailingPathSeparator=e.isEqualAuthority=e.isAbsolutePath=e.resolvePath=e.relativePath=e.normalizePath=e.joinPath=e.dirname=e.extname=e.basename=e.basenameOrAuthority=e.getComparisonKey=e.isEqualOrParent=e.isEqual=e.extUriIgnorePathCase=e.extUriBiasedIgnorePathCase=e.extUri=e.ExtUri=e.originalFSPath=void 0;function _(s){return(0,f.uriToFsPath)(s,!0)}e.originalFSPath=_;class g{constructor(i){this._ignorePathCasing=i}compare(i,n,t=!1){return i===n?0:(0,S.compare)(this.getComparisonKey(i,t),this.getComparisonKey(n,t))}isEqual(i,n,t=!1){return i===n?!0:!i||!n?!1:this.getComparisonKey(i,t)===this.getComparisonKey(n,t)}getComparisonKey(i,n=!1){return i.with({path:this._ignorePathCasing(i)?i.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}isEqualOrParent(i,n,t=!1){if(i.scheme===n.scheme){if(i.scheme===k.Schemas.file)return L.isEqualOrParent(_(i),_(n),this._ignorePathCasing(i))&&i.query===n.query&&(t||i.fragment===n.fragment);if((0,e.isEqualAuthority)(i.authority,n.authority))return L.isEqualOrParent(i.path,n.path,this._ignorePathCasing(i),"/")&&i.query===n.query&&(t||i.fragment===n.fragment)}return!1}joinPath(i,...n){return f.URI.joinPath(i,...n)}basenameOrAuthority(i){return(0,e.basename)(i)||i.authority}basename(i){return y.posix.basename(i.path)}extname(i){return y.posix.extname(i.path)}dirname(i){if(i.path.length===0)return i;let n;return i.scheme===k.Schemas.file?n=f.URI.file(y.dirname(_(i))).path:(n=y.posix.dirname(i.path),i.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname("${i.toString})) resulted in a relative path`),n="/")),i.with({path:n})}normalizePath(i){if(!i.path.length)return i;let n;return i.scheme===k.Schemas.file?n=f.URI.file(y.normalize(_(i))).path:n=y.posix.normalize(i.path),i.with({path:n})}relativePath(i,n){if(i.scheme!==n.scheme||!(0,e.isEqualAuthority)(i.authority,n.authority))return;if(i.scheme===k.Schemas.file){const u=y.relative(_(i),_(n));return D.isWindows?L.toSlashes(u):u}let t=i.path||"/";const a=n.path||"/";if(this._ignorePathCasing(i)){let u=0;for(const h=Math.min(t.length,a.length);uL.getRoot(t).length&&t[t.length-1]===n}else{const t=i.path;return t.length>1&&t.charCodeAt(t.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(i.fsPath)}}removeTrailingPathSeparator(i,n=y.sep){return(0,e.hasTrailingPathSeparator)(i,n)?i.with({path:i.path.substr(0,i.path.length-1)}):i}addTrailingPathSeparator(i,n=y.sep){let t=!1;if(i.scheme===k.Schemas.file){const a=_(i);t=a!==void 0&&a.length===L.getRoot(a).length&&a[a.length-1]===n}else{n="/";const a=i.path;t=a.length===1&&a.charCodeAt(a.length-1)===47}return!t&&!(0,e.hasTrailingPathSeparator)(i,n)?i.with({path:i.path+"/"}):i}}e.ExtUri=g,e.extUri=new g(()=>!1),e.extUriBiasedIgnorePathCase=new g(s=>s.scheme===k.Schemas.file?!D.isLinux:!0),e.extUriIgnorePathCase=new g(s=>!0),e.isEqual=e.extUri.isEqual.bind(e.extUri),e.isEqualOrParent=e.extUri.isEqualOrParent.bind(e.extUri),e.getComparisonKey=e.extUri.getComparisonKey.bind(e.extUri),e.basenameOrAuthority=e.extUri.basenameOrAuthority.bind(e.extUri),e.basename=e.extUri.basename.bind(e.extUri),e.extname=e.extUri.extname.bind(e.extUri),e.dirname=e.extUri.dirname.bind(e.extUri),e.joinPath=e.extUri.joinPath.bind(e.extUri),e.normalizePath=e.extUri.normalizePath.bind(e.extUri),e.relativePath=e.extUri.relativePath.bind(e.extUri),e.resolvePath=e.extUri.resolvePath.bind(e.extUri),e.isAbsolutePath=e.extUri.isAbsolutePath.bind(e.extUri),e.isEqualAuthority=e.extUri.isEqualAuthority.bind(e.extUri),e.hasTrailingPathSeparator=e.extUri.hasTrailingPathSeparator.bind(e.extUri),e.removeTrailingPathSeparator=e.extUri.removeTrailingPathSeparator.bind(e.extUri),e.addTrailingPathSeparator=e.extUri.addTrailingPathSeparator.bind(e.extUri);var C;(function(s){s.META_DATA_LABEL="label",s.META_DATA_DESCRIPTION="description",s.META_DATA_SIZE="size",s.META_DATA_MIME="mime";function i(n){const t=new Map;n.path.substring(n.path.indexOf(";")+1,n.path.lastIndexOf(";")).split(";").forEach(h=>{const[r,c]=h.split(":");r&&c&&t.set(r,c)});const u=n.path.substring(0,n.path.indexOf(";"));return u&&t.set(s.META_DATA_MIME,u),t}s.parseMetaData=i})(C||(e.DataUri=C={}))}),define(ne[55],se([1,0,9,120,45,11,22]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseHrefAndDimensions=e.removeMarkdownEscapes=e.escapeDoubleQuotes=e.escapeMarkdownSyntaxTokens=e.markdownStringEqual=e.isMarkdownString=e.isEmptyMarkdownString=e.MarkdownString=void 0;class f{constructor(u="",h=!1){var r,c,o;if(this.value=u,typeof this.value!="string")throw(0,L.illegalArgument)("value");typeof h=="boolean"?(this.isTrusted=h,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=(r=h.isTrusted)!==null&&r!==void 0?r:void 0,this.supportThemeIcons=(c=h.supportThemeIcons)!==null&&c!==void 0?c:!1,this.supportHtml=(o=h.supportHtml)!==null&&o!==void 0?o:!1)}appendText(u,h=0){return this.value+=s(this.supportThemeIcons?(0,k.escapeIcons)(u):u).replace(/([ \t]+)/g,(r,c)=>" ".repeat(c.length)).replace(/\>/gm,"\\>").replace(/\n/g,h===1?`\\ -`:` - -`),this}appendMarkdown(u){return this.value+=u,this}appendCodeblock(u,h){return this.value+="\n```",this.value+=u,this.value+=` -`,this.value+=h,this.value+="\n```\n",this}appendLink(u,h,r){return this.value+="[",this.value+=this._escape(h,"]"),this.value+="](",this.value+=this._escape(String(u),")"),r&&(this.value+=` "${this._escape(this._escape(r,'"'),")")}"`),this.value+=")",this}_escape(u,h){const r=new RegExp((0,D.escapeRegExpCharacters)(h),"g");return u.replace(r,(c,o)=>u.charAt(o-1)!=="\\"?`\\${c}`:c)}}e.MarkdownString=f;function _(a){return g(a)?!a.value:Array.isArray(a)?a.every(_):!0}e.isEmptyMarkdownString=_;function g(a){return a instanceof f?!0:a&&typeof a=="object"?typeof a.value=="string"&&(typeof a.isTrusted=="boolean"||typeof a.isTrusted=="object"||a.isTrusted===void 0)&&(typeof a.supportThemeIcons=="boolean"||a.supportThemeIcons===void 0):!1}e.isMarkdownString=g;function C(a,u){return a===u?!0:!a||!u?!1:a.value===u.value&&a.isTrusted===u.isTrusted&&a.supportThemeIcons===u.supportThemeIcons&&a.supportHtml===u.supportHtml&&(a.baseUri===u.baseUri||!!a.baseUri&&!!u.baseUri&&(0,y.isEqual)(S.URI.from(a.baseUri),S.URI.from(u.baseUri)))}e.markdownStringEqual=C;function s(a){return a.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")}e.escapeMarkdownSyntaxTokens=s;function i(a){return a.replace(/"/g,""")}e.escapeDoubleQuotes=i;function n(a){return a&&a.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")}e.removeMarkdownEscapes=n;function t(a){const u=[],h=a.split("|").map(c=>c.trim());a=h[0];const r=h[1];if(r){const c=/height=(\d+)/.exec(r),o=/width=(\d+)/.exec(r),d=c?c[1]:"",l=o?o[1]:"",p=isFinite(parseInt(l)),m=isFinite(parseInt(d));p&&u.push(`width="${l}"`),m&&u.push(`height="${d}"`)}return{href:a,dimensions:u}}e.parseHrefAndDimensions=t}),define(ne[183],se([1,0,7,304,81,305,44,60,129,9,6,55,120,164,100,2,386,221,54,47,45,11,22]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fillInIncompleteTokens=e.renderMarkdownAsPlaintext=e.renderStringAsPlaintext=e.allowedMarkdownAttr=e.renderMarkdown=void 0;const p=Object.freeze({image:(X,H,B)=>{let V=[],Y=[];return X&&({href:X,dimensions:V}=(0,s.parseHrefAndDimensions)(X),Y.push(`src="${(0,s.escapeDoubleQuotes)(X)}"`)),B&&Y.push(`alt="${(0,s.escapeDoubleQuotes)(B)}"`),H&&Y.push(`title="${(0,s.escapeDoubleQuotes)(H)}"`),V.length&&(Y=Y.concat(V)),""},paragraph:X=>`

    ${X}

    `,link:(X,H,B)=>typeof X!="string"?"":(X===B&&(B=(0,s.removeMarkdownEscapes)(B)),H=typeof H=="string"?(0,s.escapeDoubleQuotes)((0,s.removeMarkdownEscapes)(H)):"",X=(0,s.removeMarkdownEscapes)(X),X=X.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),`
    ${B}`)});function m(X,H={},B={}){var V,Y;const ie=new a.DisposableStore;let ae=!1;const ce=(0,D.createElement)(H),de=function(oe){let ge;try{ge=(0,h.parse)(decodeURIComponent(oe))}catch{}return ge?(ge=(0,c.cloneAndChange)(ge,ve=>{if(X.uris&&X.uris[ve])return l.URI.revive(X.uris[ve])}),encodeURIComponent(JSON.stringify(ge))):oe},he=function(oe,ge){const ve=X.uris&&X.uris[oe];let Se=l.URI.revive(ve);return ge?oe.startsWith(r.Schemas.data+":")?oe:(Se||(Se=l.URI.parse(oe)),r.FileAccess.uriToBrowserUri(Se).toString(!0)):!Se||l.URI.parse(oe).toString()===Se.toString()?oe:(Se.query&&(Se=Se.with({query:de(Se.query)})),Se.toString())},ue=new u.marked.Renderer;ue.image=p.image,ue.link=p.link,ue.paragraph=p.paragraph;const te=[],q=[];if(H.codeBlockRendererSync?ue.code=(oe,ge)=>{const ve=n.defaultGenerator.nextId(),Se=H.codeBlockRendererSync(v(ge),oe);return q.push([ve,Se]),`
    ${(0,d.escape)(oe)}
    `}:H.codeBlockRenderer&&(ue.code=(oe,ge)=>{const ve=n.defaultGenerator.nextId(),Se=H.codeBlockRenderer(v(ge),oe);return te.push(Se.then(Le=>[ve,Le])),`
    ${(0,d.escape)(oe)}
    `}),H.actionHandler){const oe=function(Se){let Le=Se.target;if(!(Le.tagName!=="A"&&(Le=Le.parentElement,!Le||Le.tagName!=="A")))try{let De=Le.dataset.href;De&&(X.baseUri&&(De=b(l.URI.from(X.baseUri),De)),H.actionHandler.callback(De,Se))}catch(De){(0,g.onUnexpectedError)(De)}finally{Se.preventDefault()}},ge=H.actionHandler.disposables.add(new y.DomEmitter(ce,"click")),ve=H.actionHandler.disposables.add(new y.DomEmitter(ce,"auxclick"));H.actionHandler.disposables.add(C.Event.any(ge.event,ve.event)(Se=>{const Le=new f.StandardMouseEvent(Se);!Le.leftButton&&!Le.middleButton||oe(Le)})),H.actionHandler.disposables.add(L.addDisposableListener(ce,"keydown",Se=>{const Le=new S.StandardKeyboardEvent(Se);!Le.equals(10)&&!Le.equals(3)||oe(Le)}))}X.supportHtml||(B.sanitizer=oe=>(X.isTrusted?oe.match(/^(]+>)|(<\/\s*span>)$/):void 0)?oe:"",B.sanitize=!0,B.silent=!0),B.renderer=ue;let z=(V=X.value)!==null&&V!==void 0?V:"";z.length>1e5&&(z=`${z.substr(0,1e5)}\u2026`),X.supportThemeIcons&&(z=(0,i.markdownEscapeEscapedIcons)(z));let ee;if(H.fillInIncompleteTokens){const oe=Object.assign(Object.assign({},u.marked.defaults),B),ge=u.marked.lexer(z,oe),ve=N(ge);ee=u.marked.parser(ve,oe)}else ee=u.marked.parse(z,B);X.supportThemeIcons&&(ee=(0,_.renderLabelWithIcons)(ee).map(ge=>typeof ge=="string"?ge:ge.outerHTML).join(""));const re=new DOMParser().parseFromString(w(X,ee),"text/html");if(re.body.querySelectorAll("img").forEach(oe=>{const ge=oe.getAttribute("src");if(ge){let ve=ge;try{X.baseUri&&(ve=b(l.URI.from(X.baseUri),ve))}catch{}oe.src=he(ve,!0)}}),re.body.querySelectorAll("a").forEach(oe=>{const ge=oe.getAttribute("href");if(oe.setAttribute("href",""),!ge||/^data:|javascript:/i.test(ge)||/^command:/i.test(ge)&&!X.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(ge))oe.replaceWith(...oe.childNodes);else{let ve=he(ge,!1);X.baseUri&&(ve=b(l.URI.from(X.baseUri),ge)),oe.dataset.href=ve}}),ce.innerHTML=w(X,re.body.innerHTML),te.length>0)Promise.all(te).then(oe=>{var ge,ve;if(ae)return;const Se=new Map(oe),Le=ce.querySelectorAll("div[data-code]");for(const De of Le){const ye=Se.get((ge=De.dataset.code)!==null&&ge!==void 0?ge:"");ye&&L.reset(De,ye)}(ve=H.asyncRenderCallback)===null||ve===void 0||ve.call(H)});else if(q.length>0){const oe=new Map(q),ge=ce.querySelectorAll("div[data-code]");for(const ve of ge){const Se=oe.get((Y=ve.dataset.code)!==null&&Y!==void 0?Y:"");Se&&L.reset(ve,Se)}}if(H.asyncRenderCallback)for(const oe of ce.getElementsByTagName("img")){const ge=ie.add(L.addDisposableListener(oe,"load",()=>{ge.dispose(),H.asyncRenderCallback()}))}return{element:ce,dispose:()=>{ae=!0,ie.dispose()}}}e.renderMarkdown=m;function v(X){if(!X)return"";const H=X.split(/[\s+|:|,|\{|\?]/,1);return H.length?H[0]:X}function b(X,H){return/^\w[\w\d+.-]*:/.test(H)?H:X.path.endsWith("/")?(0,o.resolvePath)(X,H).toString():(0,o.resolvePath)((0,o.dirname)(X),H).toString()}function w(X,H){const{config:B,allowedSchemes:V}=E(X);k.addHook("uponSanitizeAttribute",(ie,ae)=>{if(ae.attrName==="style"||ae.attrName==="class"){if(ie.tagName==="SPAN"){if(ae.attrName==="style"){ae.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?$/.test(ae.attrValue);return}else if(ae.attrName==="class"){ae.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(ae.attrValue);return}}ae.keepAttr=!1;return}});const Y=L.hookDomPurifyHrefAndSrcSanitizer(V);try{return k.sanitize(H,Object.assign(Object.assign({},B),{RETURN_TRUSTED_TYPE:!0}))}finally{k.removeHook("uponSanitizeAttribute"),Y.dispose()}}e.allowedMarkdownAttr=["align","autoplay","alt","class","controls","data-code","data-href","height","href","loop","muted","playsinline","poster","src","style","target","title","width","start"];function E(X){const H=[r.Schemas.http,r.Schemas.https,r.Schemas.mailto,r.Schemas.data,r.Schemas.file,r.Schemas.vscodeFileResource,r.Schemas.vscodeRemote,r.Schemas.vscodeRemoteResource];return X.isTrusted&&H.push(r.Schemas.command),{config:{ALLOWED_TAGS:[...L.basicMarkupHtmlTags],ALLOWED_ATTR:e.allowedMarkdownAttr,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:H}}function I(X){return typeof X=="string"?X:M(X)}e.renderStringAsPlaintext=I;function M(X){var H;let B=(H=X.value)!==null&&H!==void 0?H:"";B.length>1e5&&(B=`${B.substr(0,1e5)}\u2026`);const V=u.marked.parse(B,{renderer:x.value}).replace(/&(#\d+|[a-zA-Z]+);/g,Y=>{var ie;return(ie=P.get(Y))!==null&&ie!==void 0?ie:Y});return w({isTrusted:!1},V).toString()}e.renderMarkdownAsPlaintext=M;const P=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]),x=new t.Lazy(()=>{const X=new u.marked.Renderer;return X.code=H=>H,X.blockquote=H=>H,X.html=H=>"",X.heading=(H,B,V)=>H+` -`,X.hr=()=>"",X.list=(H,B)=>H,X.listitem=H=>H+` -`,X.paragraph=H=>H+` -`,X.table=(H,B)=>H+B+` -`,X.tablerow=H=>H,X.tablecell=(H,B)=>H+" ",X.strong=H=>H,X.em=H=>H,X.codespan=H=>H,X.br=()=>` -`,X.del=H=>H,X.image=(H,B,V)=>"",X.text=H=>H,X.link=(H,B,V)=>V,X});function T(X){let H="";return X.forEach(B=>{H+=B.raw}),H}function A(X){for(const H of X.tokens)if(H.type==="text"){const B=H.raw.split(` -`),V=B[B.length-1];if(V.includes("`"))return O(X);if(V.includes("**"))return K(X);if(V.match(/\*\w/))return W(X);if(V.match(/(^|\s)__\w/))return G(X);if(V.match(/(^|\s)_\w/))return U(X);if(V.match(/(^|\s)\[.*\]\(\w*/))return j(X);if(V.match(/(^|\s)\[\w/))return R(X)}}function N(X){let H,B;for(H=0;H"u"&&ae.match(/^\s*\|/)){const ce=ae.match(/(\|[^\|]+)(?=\||$)/g);ce&&(V=ce.length)}else if(typeof V=="number")if(ae.match(/^\s*\|/)){if(ie!==B.length-1)return;Y=!0}else return}if(typeof V=="number"&&V>0){const ie=Y?B.slice(0,-1).join(` -`):H,ae=!!ie.match(/\|\s*$/),ce=ie+(ae?"":"|")+` -|${" --- |".repeat(V)}`;return u.marked.lexer(ce)}}}),define(ne[313],se([1,0,7,304,44,183,61,129,38,6,55,2,394]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Button=e.unthemedButtonStyles=void 0,e.unthemedButtonStyles={buttonBackground:"#0E639C",buttonHoverBackground:"#006BB3",buttonSeparator:_.Color.white.toString(),buttonForeground:_.Color.white.toString(),buttonBorder:void 0,buttonSecondaryBackground:void 0,buttonSecondaryForeground:void 0,buttonSecondaryHoverBackground:void 0};class i extends s.Disposable{get onDidClick(){return this._onDidClick.event}constructor(t,a){super(),this._label="",this._onDidClick=this._register(new g.Emitter),this.options=a,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!a.secondary);const u=a.secondary?a.buttonSecondaryBackground:a.buttonBackground,h=a.secondary?a.buttonSecondaryForeground:a.buttonForeground;this._element.style.color=h||"",this._element.style.backgroundColor=u||"",a.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),t.appendChild(this._element),this._register(S.Gesture.addTarget(this._element)),[L.EventType.CLICK,S.EventType.Tap].forEach(r=>{this._register((0,L.addDisposableListener)(this._element,r,c=>{if(!this.enabled){L.EventHelper.stop(c);return}this._onDidClick.fire(c)}))}),this._register((0,L.addDisposableListener)(this._element,L.EventType.KEY_DOWN,r=>{const c=new y.StandardKeyboardEvent(r);let o=!1;this.enabled&&(c.equals(3)||c.equals(10))?(this._onDidClick.fire(r),o=!0):c.equals(9)&&(this._element.blur(),o=!0),o&&L.EventHelper.stop(c,!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OVER,r=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OUT,r=>{this.updateBackground(!1)})),this.focusTracker=this._register((0,L.trackFocus)(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(t){const a=[];for(let u of(0,f.renderLabelWithIcons)(t))if(typeof u=="string"){if(u=u.trim(),u==="")continue;const h=document.createElement("span");h.textContent=u,a.push(h)}else a.push(u);return a}updateBackground(t){let a;this.options.secondary?a=t?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:a=t?this.options.buttonHoverBackground:this.options.buttonBackground,a&&(this._element.style.backgroundColor=a)}get element(){return this._element}set label(t){var a;if(this._label===t||(0,C.isMarkdownString)(this._label)&&(0,C.isMarkdownString)(t)&&(0,C.markdownStringEqual)(this._label,t))return;this._element.classList.add("monaco-text-button");const u=this.options.supportShortLabel?this._labelElement:this._element;if((0,C.isMarkdownString)(t)){const h=(0,D.renderMarkdown)(t,{inline:!0});h.dispose();const r=(a=h.element.querySelector("p"))===null||a===void 0?void 0:a.innerHTML;if(r){const c=(0,k.sanitize)(r,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});u.innerHTML=c}else(0,L.reset)(u)}else this.options.supportIcons?(0,L.reset)(u,...this.getContentElements(t)):u.textContent=t;typeof this.options.title=="string"?this._element.title=this.options.title:this.options.title&&(this._element.title=(0,D.renderStringAsPlaintext)(t)),this._label=t}get label(){return this._label}set enabled(t){t?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}}e.Button=i}),define(ne[314],se([1,0,7,13,19,55,120,2,20,556]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setupCustomHover=e.setupNativeHover=void 0;function C(n,t){(0,_.isString)(t)?n.title=(0,S.stripIcons)(t):t?.markdownNotSupportedFallback?n.title=t.markdownNotSupportedFallback:n.removeAttribute("title")}e.setupNativeHover=C;class s{constructor(t,a,u){this.hoverDelegate=t,this.target=a,this.fadeInAnimation=u}update(t,a,u){var h;return we(this,void 0,void 0,function*(){if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let r;if(t===void 0||(0,_.isString)(t)||t instanceof HTMLElement)r=t;else if(!(0,_.isFunction)(t.markdown))r=(h=t.markdown)!==null&&h!==void 0?h:t.markdownNotSupportedFallback;else{this._hoverWidget||this.show((0,g.localize)(0,null),a),this._cancellationTokenSource=new y.CancellationTokenSource;const c=this._cancellationTokenSource.token;if(r=yield t.markdown(c),r===void 0&&(r=t.markdownNotSupportedFallback),this.isDisposed||c.isCancellationRequested)return}this.show(r,a,u)})}show(t,a,u){const h=this._hoverWidget;if(this.hasContent(t)){const r=Object.assign({content:t,target:this.target,showPointer:this.hoverDelegate.placement==="element",hoverPosition:2,skipFadeInAnimation:!this.fadeInAnimation||!!h},u);this._hoverWidget=this.hoverDelegate.showHover(r,a)}h?.dispose()}hasContent(t){return t?(0,D.isMarkdownString)(t)?!!t.value:!0:!1}get isDisposed(){var t;return(t=this._hoverWidget)===null||t===void 0?void 0:t.isDisposed}dispose(){var t,a;(t=this._hoverWidget)===null||t===void 0||t.dispose(),(a=this._cancellationTokenSource)===null||a===void 0||a.dispose(!0),this._cancellationTokenSource=void 0}}function i(n,t,a,u){let h,r;const c=(m,v)=>{var b;const w=r!==void 0;m&&(r?.dispose(),r=void 0),v&&(h?.dispose(),h=void 0),w&&((b=n.onDidHideHover)===null||b===void 0||b.call(n))},o=(m,v,b)=>new k.TimeoutTimer(()=>we(this,void 0,void 0,function*(){(!r||r.isDisposed)&&(r=new s(n,b||t,m>0),yield r.update(a,v,u))}),m),d=()=>{if(h)return;const m=new f.DisposableStore,v=E=>c(!1,E.fromElement===t);m.add(L.addDisposableListener(t,L.EventType.MOUSE_LEAVE,v,!0));const b=()=>c(!0,!0);m.add(L.addDisposableListener(t,L.EventType.MOUSE_DOWN,b,!0));const w={targetElements:[t],dispose:()=>{}};if(n.placement===void 0||n.placement==="mouse"){const E=I=>{w.x=I.x+10,I.target instanceof HTMLElement&&I.target.classList.contains("action-label")&&c(!0,!0)};m.add(L.addDisposableListener(t,L.EventType.MOUSE_MOVE,E,!0))}m.add(o(n.delay,!1,w)),h=m},l=L.addDisposableListener(t,L.EventType.MOUSE_OVER,d,!0);return{show:m=>{c(!1,!0),o(0,m)},hide:()=>{c(!0,!0)},update:(m,v)=>we(this,void 0,void 0,function*(){a=m,yield r?.update(a,void 0,v)}),dispose:()=>{l.dispose(),c(!0,!0)}}}e.setupCustomHover=i}),define(ne[226],se([1,0,7,308,314,2,47,166,400]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IconLabel=void 0;class _{constructor(t){this._element=t}get element(){return this._element}set textContent(t){this.disposed||t===this._textContent||(this._textContent=t,this._element.textContent=t)}set className(t){this.disposed||t===this._className||(this._className=t,this._element.className=t)}set empty(t){this.disposed||t===this._empty||(this._empty=t,this._element.style.marginLeft=t?"0":"")}dispose(){this.disposed=!0}}class g extends D.Disposable{constructor(t,a){super(),this.customHovers=new Map,this.creationOptions=a,this.domNode=this._register(new _(L.append(t,L.$(".monaco-icon-label")))),this.labelContainer=L.append(this.domNode.element,L.$(".monaco-icon-label-container"));const u=L.append(this.labelContainer,L.$("span.monaco-icon-name-container"));a?.supportHighlights||a?.supportIcons?this.nameNode=new i(u,!!a.supportIcons):this.nameNode=new C(u),this.hoverDelegate=a?.hoverDelegate}get element(){return this.domNode.element}setLabel(t,a,u){const h=["monaco-icon-label"],r=["monaco-icon-label-container"];let c="";if(u&&(u.extraClasses&&h.push(...u.extraClasses),u.italic&&h.push("italic"),u.strikethrough&&h.push("strikethrough"),u.disabledCommand&&r.push("disabled"),u.title&&(c+=u.title)),this.domNode.className=h.join(" "),this.domNode.element.setAttribute("aria-label",c),this.labelContainer.className=r.join(" "),this.setupHover(u?.descriptionTitle?this.labelContainer:this.element,u?.title),this.nameNode.setLabel(t,u),a||this.descriptionNode){const o=this.getOrCreateDescriptionNode();o instanceof k.HighlightedLabel?(o.set(a||"",u?u.descriptionMatches:void 0,void 0,u?.labelEscapeNewLines),this.setupHover(o.element,u?.descriptionTitle)):(o.textContent=a&&u?.labelEscapeNewLines?k.HighlightedLabel.escapeNewLines(a,[]):a||"",this.setupHover(o.element,u?.descriptionTitle||""),o.empty=!a)}}setupHover(t,a){const u=this.customHovers.get(t);if(u&&(u.dispose(),this.customHovers.delete(t)),!a){t.removeAttribute("title");return}if(!this.hoverDelegate)(0,y.setupNativeHover)(t,a);else{const h=(0,y.setupCustomHover)(this.hoverDelegate,t,a);h&&this.customHovers.set(t,h)}}dispose(){super.dispose();for(const t of this.customHovers.values())t.dispose();this.customHovers.clear()}getOrCreateDescriptionNode(){var t;if(!this.descriptionNode){const a=this._register(new _(L.append(this.labelContainer,L.$("span.monaco-icon-description-container"))));!((t=this.creationOptions)===null||t===void 0)&&t.supportDescriptionHighlights?this.descriptionNode=new k.HighlightedLabel(L.append(a.element,L.$("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons}):this.descriptionNode=this._register(new _(L.append(a.element,L.$("span.label-description"))))}return this.descriptionNode}}e.IconLabel=g;class C{constructor(t){this.container=t,this.label=void 0,this.singleLabel=void 0}setLabel(t,a){if(!(this.label===t&&(0,S.equals)(this.options,a)))if(this.label=t,this.options=a,typeof t=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=L.append(this.container,L.$("a.label-name",{id:a?.domId}))),this.singleLabel.textContent=t;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let u=0;u{const r={start:u,end:u+h.length},c=a.map(o=>f.Range.intersect(r,o)).filter(o=>!f.Range.isEmpty(o)).map(({start:o,end:d})=>({start:o-u,end:d-u}));return u=r.end+t.length,c})}class i{constructor(t,a){this.container=t,this.supportIcons=a,this.label=void 0,this.singleLabel=void 0}setLabel(t,a){if(!(this.label===t&&(0,S.equals)(this.options,a)))if(this.label=t,this.options=a,typeof t=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=new k.HighlightedLabel(L.append(this.container,L.$("a.label-name",{id:a?.domId})),{supportIcons:this.supportIcons})),this.singleLabel.set(t,a?.matches,void 0,a?.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;const u=a?.separator||"/",h=s(t,u,a?.matches);for(let r=0;r{L.EventHelper.stop(d,!0)}))}registerListeners(){this._register(L.addStandardDisposableListener(this.selectElement,"change",c=>{this.selected=c.target.selectedIndex,this._onDidSelect.fire({index:c.target.selectedIndex,selected:c.target.value}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)})),this._register(L.addDisposableListener(this.selectElement,L.EventType.CLICK,c=>{L.EventHelper.stop(c),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.MOUSE_DOWN,c=>{L.EventHelper.stop(c)}));let r;this._register(L.addDisposableListener(this.selectElement,"touchstart",c=>{r=this._isVisible})),this._register(L.addDisposableListener(this.selectElement,"touchend",c=>{L.EventHelper.stop(c),r?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.KEY_DOWN,c=>{const o=new y.StandardKeyboardEvent(c);let d=!1;s.isMacintosh?(o.keyCode===18||o.keyCode===16||o.keyCode===10||o.keyCode===3)&&(d=!0):(o.keyCode===18&&o.altKey||o.keyCode===16&&o.altKey||o.keyCode===10||o.keyCode===3)&&(d=!0),d&&(this.showSelectDropDown(),L.EventHelper.stop(c,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(r,c){f.equals(this.options,r)||(this.options=r,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((o,d)=>{this.selectElement.add(this.createOption(o.text,d,o.isDisabled)),typeof o.description=="string"&&(this._hasDetails=!0)})),c!==void 0&&(this.select(c),this._currentSelection=this.selected)}setOptionsList(){var r;(r=this.selectList)===null||r===void 0||r.splice(0,this.selectList.length,this.options)}select(r){r>=0&&rthis.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(r){this.selectElement.tabIndex=r?0:-1}render(r){this.container=r,r.classList.add("select-container"),r.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const r=[];this.styles.listFocusBackground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(r.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),r.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }"),r.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }"),this.styleElement.textContent=r.join(` -`)}styleSelectElement(){var r,c,o;const d=(r=this.styles.selectBackground)!==null&&r!==void 0?r:"",l=(c=this.styles.selectForeground)!==null&&c!==void 0?c:"",p=(o=this.styles.selectBorder)!==null&&o!==void 0?o:"";this.selectElement.style.backgroundColor=d,this.selectElement.style.color=l,this.selectElement.style.borderColor=p}styleList(){var r,c;const o=(r=this.styles.selectBackground)!==null&&r!==void 0?r:"",d=L.asCssValueWithDefault(this.styles.selectListBackground,o);this.selectDropDownListContainer.style.backgroundColor=d,this.selectionDetailsPane.style.backgroundColor=d;const l=(c=this.styles.focusBorder)!==null&&c!==void 0?c:"";this.selectDropDownContainer.style.outlineColor=l,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(r,c,o){const d=document.createElement("option");return d.value=r,d.text=r,d.disabled=!!o,d}showSelectDropDown(){this.selectionDetailsPane.innerText="",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:r=>this.renderSelectDropDown(r,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:r=>this.renderSelectDropDown(r),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute("aria-expanded","true"))}hideSelectDropDown(r){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),r&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(r,c){return r.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(c),{dispose:()=>{try{r.removeChild(this.selectDropDownContainer)}catch{}}}}measureMaxDetailsHeight(){let r=0;return this.options.forEach((c,o)=>{this.updateDetail(o),this.selectionDetailsPane.offsetHeight>r&&(r=this.selectionDetailsPane.offsetHeight)}),r}layoutSelectDropDown(r){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const c=L.getDomNodePagePosition(this.selectElement),o=getComputedStyle(this.selectElement),d=parseFloat(o.getPropertyValue("--dropdown-padding-top"))+parseFloat(o.getPropertyValue("--dropdown-padding-bottom")),l=window.innerHeight-c.top-c.height-(this.selectBoxOptions.minBottomMargin||0),p=c.top-u.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,m=this.selectElement.offsetWidth,v=this.setWidthControlElement(this.widthControlElement),b=Math.max(v,Math.round(m)).toString()+"px";this.selectDropDownContainer.style.width=b,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let w=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const E=this._hasDetails?this._cachedMaxDetailsHeight:0,I=w+d+E,M=Math.floor((l-d-E)/this.getHeight()),P=Math.floor((p-d-E)/this.getHeight());if(r)return c.top+c.height>window.innerHeight-22||c.topM&&this.options.length>M?(this._dropDownPosition=1,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove("border-top"),this.selectionDetailsPane.classList.add("border-bottom")):(this._dropDownPosition=0,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove("border-bottom"),this.selectionDetailsPane.classList.add("border-top")),!0);if(c.top+c.height>window.innerHeight-22||c.topl&&(w=M*this.getHeight())}else I>p&&(w=P*this.getHeight());return this.selectList.layout(w),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=w+d+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=w+d+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=b,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}else return!1}setWidthControlElement(r){let c=0;if(r){let o=0,d=0;this.options.forEach((l,p)=>{const m=l.detail?l.detail.length:0,v=l.decoratorRight?l.decoratorRight.length:0,b=l.text.length+m+v;b>d&&(o=p,d=b)}),r.textContent=this.options[o].text+(this.options[o].decoratorRight?this.options[o].decoratorRight+" ":""),c=L.getTotalWidth(r)}return c}createSelectList(r){if(this.selectList)return;this.selectDropDownListContainer=L.append(r,n(".select-box-dropdown-list-container")),this.listRenderer=new a,this.selectList=new S.List("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:d=>{let l=d.text;return d.detail&&(l+=`. ${d.detail}`),d.decoratorRight&&(l+=`. ${d.decoratorRight}`),d.description&&(l+=`. ${d.description}`),l},getWidgetAriaLabel:()=>(0,i.localize)(0,null),getRole:()=>s.isMacintosh?"":"option",getWidgetRole:()=>"listbox"}}),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const c=this._register(new k.DomEmitter(this.selectDropDownListContainer,"keydown")),o=_.Event.chain(c.event).filter(()=>this.selectList.length>0).map(d=>new y.StandardKeyboardEvent(d));this._register(o.filter(d=>d.keyCode===3).on(d=>this.onEnter(d),this)),this._register(o.filter(d=>d.keyCode===2).on(d=>this.onEnter(d),this)),this._register(o.filter(d=>d.keyCode===9).on(d=>this.onEscape(d),this)),this._register(o.filter(d=>d.keyCode===16).on(d=>this.onUpArrow(d),this)),this._register(o.filter(d=>d.keyCode===18).on(d=>this.onDownArrow(d),this)),this._register(o.filter(d=>d.keyCode===12).on(this.onPageDown,this)),this._register(o.filter(d=>d.keyCode===11).on(this.onPageUp,this)),this._register(o.filter(d=>d.keyCode===14).on(this.onHome,this)),this._register(o.filter(d=>d.keyCode===13).on(this.onEnd,this)),this._register(o.filter(d=>d.keyCode>=21&&d.keyCode<=56||d.keyCode>=85&&d.keyCode<=113).on(this.onCharacter,this)),this._register(L.addDisposableListener(this.selectList.getHTMLElement(),L.EventType.POINTER_UP,d=>this.onPointerUp(d))),this._register(this.selectList.onMouseOver(d=>typeof d.index<"u"&&this.selectList.setFocus([d.index]))),this._register(this.selectList.onDidChangeFocus(d=>this.onListFocus(d))),this._register(L.addDisposableListener(this.selectDropDownContainer,L.EventType.FOCUS_OUT,d=>{!this._isVisible||L.isAncestor(d.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(r){if(!this.selectList.length)return;L.EventHelper.stop(r);const c=r.target;if(!c||c.classList.contains("slider"))return;const o=c.closest(".monaco-list-row");if(!o)return;const d=Number(o.getAttribute("data-index")),l=o.classList.contains("option-disabled");d>=0&&d{for(let p=0;pthis.selected+2)this.selected+=2;else{if(c)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(r){this.selected>0&&(L.EventHelper.stop(r,!0),this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]))}onPageUp(r){L.EventHelper.stop(r),this.selectList.focusPreviousPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onHome(r){L.EventHelper.stop(r),!(this.options.length<2)&&(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(r){L.EventHelper.stop(r),!(this.options.length<2)&&(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(r){const c=g.KeyCodeUtils.toString(r.keyCode);let o=-1;for(let d=0;d{this.element&&this.handleActionChangeEvent(o)}))}handleActionChangeEvent(h){h.enabled!==void 0&&this.updateEnabled(),h.checked!==void 0&&this.updateChecked(),h.class!==void 0&&this.updateClass(),h.label!==void 0&&(this.updateLabel(),this.updateTooltip()),h.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new _.ActionRunner)),this._actionRunner}set actionRunner(h){this._actionRunner=h}isEnabled(){return this._action.enabled}setActionContext(h){this._context=h}render(h){const r=this.element=h;this._register(D.Gesture.addTarget(h));const c=this.options&&this.options.draggable;c&&(h.draggable=!0,L.isFirefox&&this._register((0,y.addDisposableListener)(h,y.EventType.DRAG_START,o=>{var d;return(d=o.dataTransfer)===null||d===void 0?void 0:d.setData(k.DataTransfers.TEXT,this._action.label)}))),this._register((0,y.addDisposableListener)(r,D.EventType.Tap,o=>this.onClick(o,!0))),this._register((0,y.addDisposableListener)(r,y.EventType.MOUSE_DOWN,o=>{c||y.EventHelper.stop(o,!0),this._action.enabled&&o.button===0&&r.classList.add("active")})),C.isMacintosh&&this._register((0,y.addDisposableListener)(r,y.EventType.CONTEXT_MENU,o=>{o.button===0&&o.ctrlKey===!0&&this.onClick(o)})),this._register((0,y.addDisposableListener)(r,y.EventType.CLICK,o=>{y.EventHelper.stop(o,!0),this.options&&this.options.isMenu||this.onClick(o)})),this._register((0,y.addDisposableListener)(r,y.EventType.DBLCLICK,o=>{y.EventHelper.stop(o,!0)})),[y.EventType.MOUSE_UP,y.EventType.MOUSE_OUT].forEach(o=>{this._register((0,y.addDisposableListener)(r,o,d=>{y.EventHelper.stop(d),r.classList.remove("active")}))})}onClick(h,r=!1){var c;y.EventHelper.stop(h,!0);const o=s.isUndefinedOrNull(this._context)?!((c=this.options)===null||c===void 0)&&c.useEventAsContext?h:{preserveFocus:r}:this._context;this.actionRunner.run(this._action,o)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}setFocusable(h){this.element&&(this.element.tabIndex=h?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getTooltip(){return this.action.tooltip}updateTooltip(){var h;if(!this.element)return;const r=(h=this.getTooltip())!==null&&h!==void 0?h:"";this.updateAriaLabel(),this.options.hoverDelegate?(this.element.title="",this.customHover?this.customHover.update(r):(this.customHover=(0,S.setupCustomHover)(this.options.hoverDelegate,this.element,r),this._store.add(this.customHover))):this.element.title=r}updateAriaLabel(){var h;if(this.element){const r=(h=this.getTooltip())!==null&&h!==void 0?h:"";this.element.setAttribute("aria-label",r)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}e.BaseActionViewItem=n;class t extends n{constructor(h,r,c){super(h,r,c),this.options=c,this.options.icon=c.icon!==void 0?c.icon:!1,this.options.label=c.label!==void 0?c.label:!0,this.cssClass=""}render(h){super.render(h),this.element&&(this.label=(0,y.append)(this.element,(0,y.$)("a.action-label"))),this.label&&this.label.setAttribute("role",this.getDefaultAriaRole()),this.options.label&&this.options.keybinding&&this.element&&((0,y.append)(this.element,(0,y.$)("span.keybinding")).textContent=this.options.keybinding),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===_.Separator.ID?"presentation":this.options.isMenu?"menuitem":"button"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(h){this.label&&(this.label.tabIndex=h?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let h=null;return this.action.tooltip?h=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(h=this.action.label,this.options.keybinding&&(h=i.localize(0,null,h,this.options.keybinding))),h??void 0}updateClass(){var h;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(" ")),this.options.icon?(this.cssClass=this.action.class,this.label&&(this.label.classList.add("codicon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" "))),this.updateEnabled()):(h=this.label)===null||h===void 0||h.classList.remove("codicon")}updateEnabled(){var h,r;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),(h=this.element)===null||h===void 0||h.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),(r=this.element)===null||r===void 0||r.classList.add("disabled"))}updateAriaLabel(){var h;if(this.label){const r=(h=this.getTooltip())!==null&&h!==void 0?h:"";this.label.setAttribute("aria-label",r)}}updateChecked(){this.label&&(this.action.checked!==void 0?(this.label.classList.toggle("checked",this.action.checked),this.label.setAttribute("aria-checked",this.action.checked?"true":"false"),this.label.setAttribute("role","checkbox")):(this.label.classList.remove("checked"),this.label.setAttribute("aria-checked",""),this.label.setAttribute("role",this.getDefaultAriaRole())))}}e.ActionViewItem=t;class a extends n{constructor(h,r,c,o,d,l,p){super(h,r),this.selectBox=new f.SelectBox(c,o,d,l,p),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(h){this.selectBox.select(h)}registerListeners(){this._register(this.selectBox.onDidSelect(h=>this.runAction(h.selected,h.index)))}runAction(h,r){this.actionRunner.run(this._action,this.getActionContext(h,r))}getActionContext(h,r){return h}setFocusable(h){this.selectBox.setFocusable(h)}focus(){var h;(h=this.selectBox)===null||h===void 0||h.focus()}blur(){var h;(h=this.selectBox)===null||h===void 0||h.blur()}render(h){this.selectBox.render(h)}}e.SelectActionViewItem=a}),define(ne[68],se([1,0,7,44,131,39,6,2,20,265]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionBar=void 0;class g extends f.Disposable{constructor(s,i={}){var n,t,a,u,h,r;super(),this._actionRunnerDisposables=this._register(new f.DisposableStore),this.viewItemDisposables=this._register(new f.DisposableMap),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new S.Emitter),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new S.Emitter({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new S.Emitter),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new S.Emitter),this.onWillRun=this._onWillRun.event,this.options=i,this._context=(n=i.context)!==null&&n!==void 0?n:null,this._orientation=(t=this.options.orientation)!==null&&t!==void 0?t:0,this._triggerKeys={keyDown:(u=(a=this.options.triggerKeys)===null||a===void 0?void 0:a.keyDown)!==null&&u!==void 0?u:!1,keys:(r=(h=this.options.triggerKeys)===null||h===void 0?void 0:h.keys)!==null&&r!==void 0?r:[3,10]},this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new D.ActionRunner,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(d=>this._onDidRun.fire(d))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(d=>this._onWillRun.fire(d))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar",i.animated!==!1&&this.domNode.classList.add("animated");let c,o;switch(this._orientation){case 0:c=[15],o=[17];break;case 1:c=[16],o=[18],this.domNode.className+=" vertical";break}this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_DOWN,d=>{const l=new k.StandardKeyboardEvent(d);let p=!0;const m=typeof this.focusedItem=="number"?this.viewItems[this.focusedItem]:void 0;c&&(l.equals(c[0])||l.equals(c[1]))?p=this.focusPrevious():o&&(l.equals(o[0])||l.equals(o[1]))?p=this.focusNext():l.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():l.equals(14)?p=this.focusFirst():l.equals(13)?p=this.focusLast():l.equals(2)&&m instanceof y.BaseActionViewItem&&m.trapsArrowNavigation?p=this.focusNext():this.isTriggerKeyEvent(l)?this._triggerKeys.keyDown?this.doTrigger(l):this.triggerKeyDown=!0:p=!1,p&&(l.preventDefault(),l.stopPropagation())})),this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_UP,d=>{const l=new k.StandardKeyboardEvent(d);this.isTriggerKeyEvent(l)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(l)),l.preventDefault(),l.stopPropagation()):(l.equals(2)||l.equals(1026))&&this.updateFocusedItem()})),this.focusTracker=this._register(L.trackFocus(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(L.getActiveElement()===this.domNode||!L.isAncestor(L.getActiveElement(),this.domNode))&&(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)})),this._register(this.focusTracker.onDidFocus(()=>this.updateFocusedItem())),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.options.highlightToggledItems&&this.actionsList.classList.add("highlight-toggled"),this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),s.appendChild(this.domNode)}refreshRole(){this.length()>=2?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(s){if(this.focusable=s,this.focusable){const i=this.viewItems.find(n=>n instanceof y.BaseActionViewItem&&n.isEnabled());i instanceof y.BaseActionViewItem&&i.setFocusable(!0)}else this.viewItems.forEach(i=>{i instanceof y.BaseActionViewItem&&i.setFocusable(!1)})}isTriggerKeyEvent(s){let i=!1;return this._triggerKeys.keys.forEach(n=>{i=i||s.equals(n)}),i}updateFocusedItem(){for(let s=0;si.setActionContext(s))}get actionRunner(){return this._actionRunner}set actionRunner(s){this._actionRunner=s,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(i=>this._onDidRun.fire(i))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(i=>this._onWillRun.fire(i))),this.viewItems.forEach(i=>i.actionRunner=s)}getContainer(){return this.domNode}getAction(s){var i;if(typeof s=="number")return(i=this.viewItems[s])===null||i===void 0?void 0:i.action;if(s instanceof HTMLElement){for(;s.parentElement!==this.actionsList;){if(!s.parentElement)return;s=s.parentElement}for(let n=0;n{const u=document.createElement("li");u.className="action-item",u.setAttribute("role","presentation");let h;const r=Object.assign({hoverDelegate:this.options.hoverDelegate},i);this.options.actionViewItemProvider&&(h=this.options.actionViewItemProvider(a,r)),h||(h=new y.ActionViewItem(this.context,a,r)),this.options.allowContextMenu||this.viewItemDisposables.set(h,L.addDisposableListener(u,L.EventType.CONTEXT_MENU,c=>{L.EventHelper.stop(c,!0)})),h.actionRunner=this._actionRunner,h.setActionContext(this.context),h.render(u),this.focusable&&h instanceof y.BaseActionViewItem&&this.viewItems.length===0&&h.setFocusable(!0),t===null||t<0||t>=this.actionsList.children.length?(this.actionsList.appendChild(u),this.viewItems.push(h)):(this.actionsList.insertBefore(u,this.actionsList.children[t]),this.viewItems.splice(t,0,h),t++)}),typeof this.focusedItem=="number"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=(0,f.dispose)(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),L.clearNode(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(s){let i=!1,n;if(s===void 0?i=!0:typeof s=="number"?n=s:typeof s=="boolean"&&(i=s),i&&typeof this.focusedItem>"u"){const t=this.viewItems.findIndex(a=>a.isEnabled());this.focusedItem=t===-1?void 0:t,this.updateFocus(void 0,void 0,!0)}else n!==void 0&&(this.focusedItem=n),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(s){if(typeof this.focusedItem>"u")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(!s&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=i,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===D.Separator.ID));return this.updateFocus(),!0}focusPrevious(s){if(typeof this.focusedItem>"u")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!s&&this.options.preventLoopNavigation)return this.focusedItem=i,!1;this.focusedItem=this.viewItems.length-1}n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===D.Separator.ID));return this.updateFocus(!0),!0}updateFocus(s,i,n=!1){var t;typeof this.focusedItem>"u"&&this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((t=this.viewItems[this.previouslyFocusedItem])===null||t===void 0||t.blur());const a=this.focusedItem!==void 0&&this.viewItems[this.focusedItem];if(a){let u=!0;_.isFunction(a.focus)||(u=!1),this.options.focusOnlyEnabledItems&&_.isFunction(a.isEnabled)&&!a.isEnabled()&&(u=!1),a.action.id===D.Separator.ID&&(u=!1),u?(n||this.previouslyFocusedItem!==this.focusedItem)&&(a.focus(s),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem=void 0)}}doTrigger(s){if(typeof this.focusedItem>"u")return;const i=this.viewItems[this.focusedItem];if(i instanceof y.BaseActionViewItem){const n=i._context===null||i._context===void 0?s:i._context;this.run(i._action,n)}}run(s,i){return we(this,void 0,void 0,function*(){yield this._actionRunner.run(s,i)})}dispose(){this._context=void 0,this.viewItems=(0,f.dispose)(this.viewItems),this.getContainer().remove(),super.dispose()}}e.ActionBar=g}),define(ne[315],se([1,0,7,131,572,6,266]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DropdownMenuActionViewItem=void 0;class S extends k.BaseActionViewItem{constructor(_,g,C,s=Object.create(null)){super(null,_,s),this.actionItem=null,this._onDidChangeVisibility=this._register(new D.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=g,this.contextMenuProvider=C,this.options=s,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(_){this.actionItem=_;const g=i=>{this.element=(0,L.append)(i,(0,L.$)("a.action-label"));let n=[];return typeof this.options.classNames=="string"?n=this.options.classNames.split(/\s+/g).filter(t=>!!t):this.options.classNames&&(n=this.options.classNames),n.find(t=>t==="icon")||n.push("codicon"),this.element.classList.add(...n),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this.element.title=this._action.label||"",this.element.ariaLabel=this._action.label||"",null},C=Array.isArray(this.menuActionsOrProvider),s={contextMenuProvider:this.contextMenuProvider,labelRenderer:g,menuAsChild:this.options.menuAsChild,actions:C?this.menuActionsOrProvider:void 0,actionProvider:C?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new y.DropdownMenu(_,s)),this._register(this.dropdownMenu.onDidChangeVisibility(i=>{var n;(n=this.element)===null||n===void 0||n.setAttribute("aria-expanded",`${i}`),this._onDidChangeVisibility.fire(i)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const i=this;this.dropdownMenu.menuOptions=Object.assign(Object.assign({},this.dropdownMenu.menuOptions),{get anchorAlignment(){return i.options.anchorAlignmentProvider()}})}this.updateTooltip(),this.updateEnabled()}getTooltip(){let _=null;return this.action.tooltip?_=this.action.tooltip:this.action.label&&(_=this.action.label),_??void 0}setActionContext(_){super.setActionContext(_),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=_:this.dropdownMenu.menuOptions={context:_})}show(){var _;(_=this.dropdownMenu)===null||_===void 0||_.show()}updateEnabled(){var _,g;const C=!this.action.enabled;(_=this.actionItem)===null||_===void 0||_.classList.toggle("disabled",C),(g=this.element)===null||g===void 0||g.classList.toggle("disabled",C)}}e.DropdownMenuActionViewItem=S}),define(ne[227],se([1,0,7,81,305,68,49,75,83,6,388,47,557,401]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HistoryInputBox=e.InputBox=e.unthemedInboxStyles=void 0;const n=L.$;e.unthemedInboxStyles={inputBackground:"#3C3C3C",inputForeground:"#CCCCCC",inputValidationInfoBorder:"#55AAFF",inputValidationInfoBackground:"#063B49",inputValidationWarningBorder:"#B89500",inputValidationWarningBackground:"#352A05",inputValidationErrorBorder:"#BE1100",inputValidationErrorBackground:"#5A1D1D",inputBorder:void 0,inputValidationErrorForeground:void 0,inputValidationInfoForeground:void 0,inputValidationWarningForeground:void 0};class t extends _.Widget{constructor(h,r,c){var o;super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new g.Emitter),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new g.Emitter),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=r,this.options=c,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=(o=this.options.tooltip)!==null&&o!==void 0?o:this.placeholder||"",this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=L.append(h,n(".monaco-inputbox.idle"));const d=this.options.flexibleHeight?"textarea":"input",l=L.append(this.element,n(".ibwrapper"));if(this.input=L.append(l,n(d+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,()=>this.element.classList.add("synthetic-focus")),this.onblur(this.input,()=>this.element.classList.remove("synthetic-focus")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=L.append(l,n("div.mirror")),this.mirror.innerText="\xA0",this.scrollableElement=new f.ScrollableElement(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),L.append(h,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(v=>this.input.scrollTop=v.scrollTop));const p=this._register(new k.DomEmitter(document,"selectionchange")),m=g.Event.filter(p.event,()=>{const v=document.getSelection();return v?.anchorNode===l});this._register(m(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new D.ActionBar(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(h){this.placeholder=h,this.input.setAttribute("placeholder",h)}setTooltip(h){this.tooltip=h,this.input.title=h}get inputElement(){return this.input}get value(){return this.input.value}set value(h){this.input.value!==h&&(this.input.value=h,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:L.getTotalHeight(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return document.activeElement===this.input}select(h=null){this.input.select(),h&&(this.input.setSelectionRange(h.start,h.end),h.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(h){this.input.style.width=`calc(100% - ${h}px)`,this.mirror&&(this.mirror.style.paddingRight=h+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const h=this.cachedContentHeight,r=this.cachedHeight,c=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:h,height:r}),this.scrollableElement.setScrollPosition({scrollTop:c})}showMessage(h,r){if(this.state==="open"&&(0,s.equals)(this.message,h))return;this.message=h,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(h.type));const c=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${L.asCssValueWithDefault(c.border,"transparent")}`,this.message.content&&(this.hasFocus()||r)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let h=null;return this.validation&&(h=this.validation(this.value),h?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(h)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),h?.type}stylesForType(h){const r=this.options.inputBoxStyles;switch(h){case 1:return{border:r.inputValidationInfoBorder,background:r.inputValidationInfoBackground,foreground:r.inputValidationInfoForeground};case 2:return{border:r.inputValidationWarningBorder,background:r.inputValidationWarningBackground,foreground:r.inputValidationWarningForeground};default:return{border:r.inputValidationErrorBorder,background:r.inputValidationErrorBackground,foreground:r.inputValidationErrorForeground}}}classForType(h){switch(h){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let h;const r=()=>h.style.width=L.getTotalWidth(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:o=>{var d,l;if(!this.message)return null;h=L.append(o,n(".monaco-inputbox-container")),r();const p={inline:!0,className:"monaco-inputbox-message"},m=this.message.formatContent?(0,y.renderFormattedText)(this.message.content,p):(0,y.renderText)(this.message.content,p);m.classList.add(this.classForType(this.message.type));const v=this.stylesForType(this.message.type);return m.style.backgroundColor=(d=v.background)!==null&&d!==void 0?d:"",m.style.color=(l=v.foreground)!==null&&l!==void 0?l:"",m.style.border=v.border?`1px solid ${v.border}`:"",L.append(h,m),null},onHide:()=>{this.state="closed"},layout:r});let c;this.message.type===3?c=i.localize(0,null,this.message.content):this.message.type===2?c=i.localize(1,null,this.message.content):c=i.localize(2,null,this.message.content),S.alert(c),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const h=this.value,c=h.charCodeAt(h.length-1)===10?" ":"";(h+c).replace(/\u000c/g,"")?this.mirror.textContent=h+c:this.mirror.innerText="\xA0",this.layout()}applyStyles(){var h,r,c;const o=this.options.inputBoxStyles,d=(h=o.inputBackground)!==null&&h!==void 0?h:"",l=(r=o.inputForeground)!==null&&r!==void 0?r:"",p=(c=o.inputBorder)!==null&&c!==void 0?c:"";this.element.style.backgroundColor=d,this.element.style.color=l,this.input.style.backgroundColor="inherit",this.input.style.color=l,this.element.style.border=`1px solid ${L.asCssValueWithDefault(p,"transparent")}`}layout(){if(!this.mirror)return;const h=this.cachedContentHeight;this.cachedContentHeight=L.getTotalHeight(this.mirror),h!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(h){const r=this.inputElement,c=r.selectionStart,o=r.selectionEnd,d=r.value;c!==null&&o!==null&&(this.value=d.substr(0,c)+h+d.substr(o),r.setSelectionRange(c+1,c+1),this.layout())}dispose(){var h;this._hideMessage(),this.message=null,(h=this.actionbar)===null||h===void 0||h.dispose(),super.dispose()}}e.InputBox=t;class a extends t{constructor(h,r,c){const o=i.localize(3,null),d=` or \u21C5 ${o}`,l=` (\u21C5 ${o})`;super(h,r,c),this._onDidFocus=this._register(new g.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new g.Emitter),this.onDidBlur=this._onDidBlur.event,this.history=new C.HistoryNavigator(c.history,100);const p=()=>{if(c.showHistoryHint&&c.showHistoryHint()&&!this.placeholder.endsWith(d)&&!this.placeholder.endsWith(l)&&this.history.getHistory().length){const m=this.placeholder.endsWith(")")?d:l,v=this.placeholder+m;c.showPlaceholderOnFocus&&document.activeElement!==this.input?this.placeholder=v:this.setPlaceHolder(v)}};this.observer=new MutationObserver((m,v)=>{m.forEach(b=>{b.target.textContent||p()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>p()),this.onblur(this.input,()=>{const m=v=>{if(this.placeholder.endsWith(v)){const b=this.placeholder.slice(0,this.placeholder.length-v.length);return c.showPlaceholderOnFocus?this.placeholder=b:this.setPlaceHolder(b),!0}else return!1};m(l)||m(d)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(h){this.value&&(h||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let h=this.getNextValue();h&&(h=h===this.value?this.getNextValue():h),this.value=h??"",S.status(this.value?this.value:i.localize(4,null))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let h=this.getPreviousValue();h&&(h=h===this.value?this.getPreviousValue():h),h&&(this.value=h,S.status(this.value))}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let h=this.history.current();return h||(h=this.history.last(),this.history.next()),h}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}e.HistoryInputBox=a}),define(ne[228],se([1,0,7,312,227,83,6,552,2,267]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindInput=void 0;const g=f.localize(0,null);class C extends D.Widget{constructor(i,n,t){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=new _.DisposableStore,this.additionalToggles=[],this._onDidOptionChange=this._register(new S.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new S.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new S.Emitter),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new S.Emitter),this._onKeyUp=this._register(new S.Emitter),this._onCaseSensitiveKeyDown=this._register(new S.Emitter),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new S.Emitter),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=t.placeholder||"",this.validation=t.validation,this.label=t.label||g,this.showCommonFindToggles=!!t.showCommonFindToggles;const a=t.appendCaseSensitiveLabel||"",u=t.appendWholeWordsLabel||"",h=t.appendRegexLabel||"",r=t.history||[],c=!!t.flexibleHeight,o=!!t.flexibleWidth,d=t.flexibleMaxHeight;if(this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,n,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:r,showHistoryHint:t.showHistoryHint,flexibleHeight:c,flexibleWidth:o,flexibleMaxHeight:d,inputBoxStyles:t.inputBoxStyles})),this.showCommonFindToggles){this.regex=this._register(new k.RegexToggle(Object.assign({appendTitle:h,isChecked:!1},t.toggleStyles))),this._register(this.regex.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(p=>{this._onRegexKeyDown.fire(p)})),this.wholeWords=this._register(new k.WholeWordsToggle(Object.assign({appendTitle:u,isChecked:!1},t.toggleStyles))),this._register(this.wholeWords.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new k.CaseSensitiveToggle(Object.assign({appendTitle:a,isChecked:!1},t.toggleStyles))),this._register(this.caseSensitive.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(p=>{this._onCaseSensitiveKeyDown.fire(p)}));const l=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,p=>{if(p.equals(15)||p.equals(17)||p.equals(9)){const m=l.indexOf(document.activeElement);if(m>=0){let v=-1;p.equals(17)?v=(m+1)%l.length:p.equals(15)&&(m===0?v=l.length-1:v=m-1),p.equals(9)?(l[m].blur(),this.inputBox.focus()):v>=0&&l[v].focus(),L.EventHelper.stop(p,!0)}}})}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(t?.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),i?.appendChild(this.domNode),this._register(L.addDisposableListener(this.inputBox.inputElement,"compositionstart",l=>{this.imeSessionInProgress=!0})),this._register(L.addDisposableListener(this.inputBox.inputElement,"compositionend",l=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,l=>this._onKeyDown.fire(l)),this.onkeyup(this.inputBox.inputElement,l=>this._onKeyUp.fire(l)),this.oninput(this.inputBox.inputElement,l=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,l=>this._onMouseDown.fire(l))}get onDidChange(){return this.inputBox.onDidChange}layout(i){this.inputBox.layout(),this.updateInputBoxPadding(i.collapsedFindWidget)}enable(){var i,n,t;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(i=this.regex)===null||i===void 0||i.enable(),(n=this.wholeWords)===null||n===void 0||n.enable(),(t=this.caseSensitive)===null||t===void 0||t.enable();for(const a of this.additionalToggles)a.enable()}disable(){var i,n,t;this.domNode.classList.add("disabled"),this.inputBox.disable(),(i=this.regex)===null||i===void 0||i.disable(),(n=this.wholeWords)===null||n===void 0||n.disable(),(t=this.caseSensitive)===null||t===void 0||t.disable();for(const a of this.additionalToggles)a.disable()}setFocusInputOnOptionClick(i){this.fixFocusOnOptionClickEnabled=i}setEnabled(i){i?this.enable():this.disable()}setAdditionalToggles(i){for(const n of this.additionalToggles)n.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.dispose(),this.additionalTogglesDisposables=new _.DisposableStore;for(const n of i??[])this.additionalTogglesDisposables.add(n),this.controls.appendChild(n.domNode),this.additionalTogglesDisposables.add(n.onChange(t=>{this._onDidOptionChange.fire(t),!t&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(n);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(i=!1){var n,t,a,u,h,r;i?this.inputBox.paddingRight=0:this.inputBox.paddingRight=((t=(n=this.caseSensitive)===null||n===void 0?void 0:n.width())!==null&&t!==void 0?t:0)+((u=(a=this.wholeWords)===null||a===void 0?void 0:a.width())!==null&&u!==void 0?u:0)+((r=(h=this.regex)===null||h===void 0?void 0:h.width())!==null&&r!==void 0?r:0)+this.additionalToggles.reduce((c,o)=>c+o.width(),0)}getValue(){return this.inputBox.value}setValue(i){this.inputBox.value!==i&&(this.inputBox.value=i)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var i,n;return(n=(i=this.caseSensitive)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setCaseSensitive(i){this.caseSensitive&&(this.caseSensitive.checked=i)}getWholeWords(){var i,n;return(n=(i=this.wholeWords)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setWholeWords(i){this.wholeWords&&(this.wholeWords.checked=i)}getRegex(){var i,n;return(n=(i=this.regex)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setRegex(i){this.regex&&(this.regex.checked=i,this.validate())}focusOnCaseSensitive(){var i;(i=this.caseSensitive)===null||i===void 0||i.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(i){this.inputBox.showMessage(i)}clearMessage(){this.inputBox.hideMessage()}}e.FindInput=C}),define(ne[582],se([1,0,7,153,227,83,25,6,554,267]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReplaceInput=void 0;const g=_.localize(0,null),C=_.localize(1,null);class s extends k.Toggle{constructor(t){super({icon:S.Codicon.preserveCase,title:C+t.appendTitle,isChecked:t.isChecked,inputActiveOptionBorder:t.inputActiveOptionBorder,inputActiveOptionForeground:t.inputActiveOptionForeground,inputActiveOptionBackground:t.inputActiveOptionBackground})}}class i extends D.Widget{constructor(t,a,u,h){super(),this._showOptionButtons=u,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new f.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new f.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new f.Emitter),this._onInput=this._register(new f.Emitter),this._onKeyUp=this._register(new f.Emitter),this._onPreserveCaseKeyDown=this._register(new f.Emitter),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=a,this.placeholder=h.placeholder||"",this.validation=h.validation,this.label=h.label||g;const r=h.appendPreserveCaseLabel||"",c=h.history||[],o=!!h.flexibleHeight,d=!!h.flexibleWidth,l=h.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:c,showHistoryHint:h.showHistoryHint,flexibleHeight:o,flexibleWidth:d,flexibleMaxHeight:l,inputBoxStyles:h.inputBoxStyles})),this.preserveCase=this._register(new s(Object.assign({appendTitle:r,isChecked:!1},h.toggleStyles))),this._register(this.preserveCase.onChange(v=>{this._onDidOptionChange.fire(v),!v&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(v=>{this._onPreserveCaseKeyDown.fire(v)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const p=[this.preserveCase.domNode];this.onkeydown(this.domNode,v=>{if(v.equals(15)||v.equals(17)||v.equals(9)){const b=p.indexOf(document.activeElement);if(b>=0){let w=-1;v.equals(17)?w=(b+1)%p.length:v.equals(15)&&(b===0?w=p.length-1:w=b-1),v.equals(9)?(p[b].blur(),this.inputBox.focus()):w>=0&&p[w].focus(),L.EventHelper.stop(v,!0)}}});const m=document.createElement("div");m.className="controls",m.style.display=this._showOptionButtons?"block":"none",m.appendChild(this.preserveCase.domNode),this.domNode.appendChild(m),t?.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,v=>this._onKeyDown.fire(v)),this.onkeyup(this.inputBox.inputElement,v=>this._onKeyUp.fire(v)),this.oninput(this.inputBox.inputElement,v=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,v=>this._onMouseDown.fire(v))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(t){t?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(t){this.preserveCase.checked=t}focusOnPreserve(){this.preserveCase.focus()}validate(){var t;(t=this.inputBox)===null||t===void 0||t.validate()}set width(t){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=t+"px"}dispose(){super.dispose()}}e.ReplaceInput=i}),define(ne[583],se([1,0,52,61,7,44,60,68,131,306,75,39,13,25,26,120,2,17,11]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.formatRule=e.cleanMnemonic=e.Menu=e.Direction=e.MENU_ESCAPED_MNEMONIC_REGEX=e.MENU_MNEMONIC_REGEX=void 0,e.MENU_MNEMONIC_REGEX=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,e.MENU_ESCAPED_MNEMONIC_REGEX=/(&)?(&)([^\s&])/g;var c;(function(w){w[w.Right=0]="Right",w[w.Left=1]="Left"})(c||(e.Direction=c={}));class o extends f.ActionBar{constructor(E,I,M,P){E.classList.add("monaco-menu-container"),E.setAttribute("role","presentation");const x=document.createElement("div");x.classList.add("monaco-menu"),x.setAttribute("role","presentation"),super(x,{orientation:1,actionViewItemProvider:N=>this.doGetActionViewItem(N,M,T),context:M.context,actionRunner:M.actionRunner,ariaLabel:M.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...h.isMacintosh||h.isLinux?[10]:[]],keyDown:!0}}),this.menuStyles=P,this.menuElement=x,this.actionsList.tabIndex=0,this.menuDisposables=this._register(new u.DisposableStore),this.initializeOrUpdateStyleSheet(E,P),this._register(k.Gesture.addTarget(x)),(0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{new D.StandardKeyboardEvent(N).equals(2)&&N.preventDefault()}),M.enableMnemonics&&this.menuDisposables.add((0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{const F=N.key.toLocaleLowerCase();if(this.mnemonics.has(F)){y.EventHelper.stop(N,!0);const O=this.mnemonics.get(F);if(O.length===1&&(O[0]instanceof l&&O[0].container&&this.focusItemByElement(O[0].container),O[0].onClick(N)),O.length>1){const W=O.shift();W&&W.container&&(this.focusItemByElement(W.container),O.push(W)),this.mnemonics.set(F,O)}}})),h.isLinux&&this._register((0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{const F=new D.StandardKeyboardEvent(N);F.equals(14)||F.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),y.EventHelper.stop(N,!0)):(F.equals(13)||F.equals(12))&&(this.focusedItem=0,this.focusPrevious(),y.EventHelper.stop(N,!0))})),this._register((0,y.addDisposableListener)(this.domNode,y.EventType.MOUSE_OUT,N=>{const F=N.relatedTarget;(0,y.isAncestor)(F,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),N.stopPropagation())})),this._register((0,y.addDisposableListener)(this.actionsList,y.EventType.MOUSE_OVER,N=>{let F=N.target;if(!(!F||!(0,y.isAncestor)(F,this.actionsList)||F===this.actionsList)){for(;F.parentElement!==this.actionsList&&F.parentElement!==null;)F=F.parentElement;if(F.classList.contains("action-item")){const O=this.focusedItem;this.setFocusedItem(F),O!==this.focusedItem&&this.updateFocus()}}})),this._register(k.Gesture.addTarget(this.actionsList)),this._register((0,y.addDisposableListener)(this.actionsList,k.EventType.Tap,N=>{let F=N.initialTarget;if(!(!F||!(0,y.isAncestor)(F,this.actionsList)||F===this.actionsList)){for(;F.parentElement!==this.actionsList&&F.parentElement!==null;)F=F.parentElement;if(F.classList.contains("action-item")){const O=this.focusedItem;this.setFocusedItem(F),O!==this.focusedItem&&this.updateFocus()}}}));const T={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new C.DomScrollableElement(x,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const A=this.scrollableElement.getDomNode();A.style.position="",this.styleScrollElement(A,P),this._register((0,y.addDisposableListener)(x,k.EventType.Change,N=>{y.EventHelper.stop(N,!0);const F=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:F-N.translationY})})),this._register((0,y.addDisposableListener)(A,y.EventType.MOUSE_UP,N=>{N.preventDefault()})),x.style.maxHeight=`${Math.max(10,window.innerHeight-E.getBoundingClientRect().top-35)}px`,I=I.filter(N=>{var F;return!((F=M.submenuIds)===null||F===void 0)&&F.has(N.id)?(console.warn(`Found submenu cycle: ${N.id}`),!1):!0}),this.push(I,{icon:!0,label:!0,isMenu:!0}),E.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(N=>!(N instanceof p)).forEach((N,F,O)=>{N.updatePositionInSet(F+1,O.length)})}initializeOrUpdateStyleSheet(E,I){this.styleSheet||((0,y.isInShadowDOM)(E)?this.styleSheet=(0,y.createStyleSheet)(E):(o.globalStyleSheet||(o.globalStyleSheet=(0,y.createStyleSheet)()),this.styleSheet=o.globalStyleSheet)),this.styleSheet.textContent=b(I,(0,y.isInShadowDOM)(E))}styleScrollElement(E,I){var M,P;const x=(M=I.foregroundColor)!==null&&M!==void 0?M:"",T=(P=I.backgroundColor)!==null&&P!==void 0?P:"",A=I.borderColor?`1px solid ${I.borderColor}`:"",N="5px",F=I.shadowColor?`0 2px 8px ${I.shadowColor}`:"";E.style.outline=A,E.style.borderRadius=N,E.style.color=x,E.style.backgroundColor=T,E.style.boxShadow=F}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(E){const I=this.focusedItem;this.setFocusedItem(E),I!==this.focusedItem&&this.updateFocus()}setFocusedItem(E){for(let I=0;I{this.element&&(this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_UP,x=>{if(y.EventHelper.stop(x,!0),L.isFirefox){if(new S.StandardMouseEvent(x).rightButton)return;this.onClick(x)}else setTimeout(()=>{this.onClick(x)},0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.CONTEXT_MENU,x=>{y.EventHelper.stop(x,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(E){super.render(E),this.element&&(this.container=E,this.item=(0,y.append)(this.element,(0,y.$)("a.action-menu-item")),this._action.id===s.Separator.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=(0,y.append)(this.item,(0,y.$)("span.menu-item-check"+t.ThemeIcon.asCSSSelector(n.Codicon.menuSelection))),this.check.setAttribute("role","none"),this.label=(0,y.append)(this.item,(0,y.$)("span.action-label")),this.options.label&&this.options.keybinding&&((0,y.append)(this.item,(0,y.$)("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var E;super.focus(),(E=this.item)===null||E===void 0||E.focus(),this.applyStyle()}updatePositionInSet(E,I){this.item&&(this.item.setAttribute("aria-posinset",`${E}`),this.item.setAttribute("aria-setsize",`${I}`))}updateLabel(){var E;if(this.label&&this.options.label){(0,y.clearNode)(this.label);let I=(0,a.stripIcons)(this.action.label);if(I){const M=m(I);this.options.enableMnemonics||(I=M),this.label.setAttribute("aria-label",M.replace(/&&/g,"&"));const P=e.MENU_MNEMONIC_REGEX.exec(I);if(P){I=r.escape(I),e.MENU_ESCAPED_MNEMONIC_REGEX.lastIndex=0;let x=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);for(;x&&x[1];)x=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);const T=A=>A.replace(/&&/g,"&");x?this.label.append(r.ltrim(T(I.substr(0,x.index))," "),(0,y.$)("u",{"aria-hidden":"true"},x[3]),r.rtrim(T(I.substr(x.index+x[0].length))," ")):this.label.innerText=T(I).trim(),(E=this.item)===null||E===void 0||E.setAttribute("aria-keyshortcuts",(P[1]?P[1]:P[3]).toLocaleLowerCase())}else this.label.innerText=I.replace(/&&/g,"&").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(" ")),this.options.icon&&this.label?(this.cssClass=this.action.class||"",this.label.classList.add("icon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" ")),this.updateEnabled()):this.label&&this.label.classList.remove("icon")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}updateChecked(){if(!this.item)return;const E=this.action.checked;this.item.classList.toggle("checked",!!E),E!==void 0?(this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked",E?"true":"false")):(this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked",""))}getMnemonic(){return this.mnemonic}applyStyle(){const E=this.element&&this.element.classList.contains("focused"),I=E&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,M=E&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,P=E&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:"",x=E&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=I??"",this.item.style.backgroundColor=M??"",this.item.style.outline=P,this.item.style.outlineOffset=x),this.check&&(this.check.style.color=I??"")}}class l extends d{constructor(E,I,M,P,x){super(E,E,P,x),this.submenuActions=I,this.parentData=M,this.submenuOptions=P,this.mysubmenu=null,this.submenuDisposables=this._register(new u.DisposableStore),this.mouseOver=!1,this.expandDirection=P&&P.expandDirection!==void 0?P.expandDirection:c.Right,this.showScheduler=new i.RunOnceScheduler(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new i.RunOnceScheduler(()=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))},750)}render(E){super.render(E),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=(0,y.append)(this.item,(0,y.$)("span.submenu-indicator"+t.ThemeIcon.asCSSSelector(n.Codicon.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_UP,I=>{const M=new D.StandardKeyboardEvent(I);(M.equals(17)||M.equals(3))&&(y.EventHelper.stop(I,!0),this.createSubmenu(!0))})),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_DOWN,I=>{const M=new D.StandardKeyboardEvent(I);(0,y.getActiveElement)()===this.item&&(M.equals(17)||M.equals(3))&&y.EventHelper.stop(I,!0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_OVER,I=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_LEAVE,I=>{this.mouseOver=!1})),this._register((0,y.addDisposableListener)(this.element,y.EventType.FOCUS_OUT,I=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),this.element)&&this.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))})))}updateEnabled(){}onClick(E){y.EventHelper.stop(E,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(E){if(this.parentData.submenu&&(E||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch{}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(E,I,M,P){const x={top:0,left:0};return x.left=(0,g.layout)(E.width,I.width,{position:P===c.Right?0:1,offset:M.left,size:M.width}),x.left>=M.left&&x.left{new D.StandardKeyboardEvent(F).equals(15)&&(y.EventHelper.stop(F,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add((0,y.addDisposableListener)(this.submenuContainer,y.EventType.KEY_DOWN,F=>{new D.StandardKeyboardEvent(F).equals(15)&&y.EventHelper.stop(F,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)})),this.parentData.submenu.focus(E),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(E){var I;this.item&&((I=this.item)===null||I===void 0||I.setAttribute("aria-expanded",E))}applyStyle(){super.applyStyle();const I=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=I??"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class p extends _.ActionViewItem{constructor(E,I,M,P){super(E,I,M),this.menuStyles=P}render(E){super.render(E),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:"")}}function m(w){const E=e.MENU_MNEMONIC_REGEX,I=E.exec(w);if(!I)return w;const M=!I[1];return w.replace(E,M?"$2$3":"").trim()}e.cleanMnemonic=m;function v(w){const E=(0,n.getCodiconFontCharacters)()[w.id];return`.codicon-${w.id}:before { content: '\\${E.toString(16)}'; }`}e.formatRule=v;function b(w,E){let I=` -.monaco-menu { - font-size: 13px; - border-radius: 5px; - min-width: 160px; -} - -${v(n.Codicon.menuSelection)} -${v(n.Codicon.menuSubmenu)} - -.monaco-menu .monaco-action-bar { - text-align: right; - overflow: hidden; - white-space: nowrap; -} - -.monaco-menu .monaco-action-bar .actions-container { - display: flex; - margin: 0 auto; - padding: 0; - width: 100%; - justify-content: flex-end; -} - -.monaco-menu .monaco-action-bar.vertical .actions-container { - display: inline-block; -} - -.monaco-menu .monaco-action-bar.reverse .actions-container { - flex-direction: row-reverse; -} - -.monaco-menu .monaco-action-bar .action-item { - cursor: pointer; - display: inline-block; - transition: transform 50ms ease; - position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */ -} - -.monaco-menu .monaco-action-bar .action-item.disabled { - cursor: default; -} - -.monaco-menu .monaco-action-bar.animated .action-item.active { - transform: scale(1.272019649, 1.272019649); /* 1.272019649 = \u221A\u03C6 */ -} - -.monaco-menu .monaco-action-bar .action-item .icon, -.monaco-menu .monaco-action-bar .action-item .codicon { - display: inline-block; -} - -.monaco-menu .monaco-action-bar .action-item .codicon { - display: flex; - align-items: center; -} - -.monaco-menu .monaco-action-bar .action-label { - font-size: 11px; - margin-right: 4px; -} - -.monaco-menu .monaco-action-bar .action-item.disabled .action-label, -.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover { - color: var(--vscode-disabledForeground); -} - -/* Vertical actions */ - -.monaco-menu .monaco-action-bar.vertical { - text-align: left; -} - -.monaco-menu .monaco-action-bar.vertical .action-item { - display: block; -} - -.monaco-menu .monaco-action-bar.vertical .action-label.separator { - display: block; - border-bottom: 1px solid var(--vscode-menu-separatorBackground); - padding-top: 1px; - padding: 30px; -} - -.monaco-menu .secondary-actions .monaco-action-bar .action-label { - margin-left: 6px; -} - -/* Action Items */ -.monaco-menu .monaco-action-bar .action-item.select-container { - overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */ - flex: 1; - max-width: 170px; - min-width: 60px; - display: flex; - align-items: center; - justify-content: center; - margin-right: 10px; -} - -.monaco-menu .monaco-action-bar.vertical { - margin-left: 0; - overflow: visible; -} - -.monaco-menu .monaco-action-bar.vertical .actions-container { - display: block; -} - -.monaco-menu .monaco-action-bar.vertical .action-item { - padding: 0; - transform: none; - display: flex; -} - -.monaco-menu .monaco-action-bar.vertical .action-item.active { - transform: none; -} - -.monaco-menu .monaco-action-bar.vertical .action-menu-item { - flex: 1 1 auto; - display: flex; - height: 2em; - align-items: center; - position: relative; - margin: 0 4px; - border-radius: 4px; -} - -.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding, -.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding { - opacity: unset; -} - -.monaco-menu .monaco-action-bar.vertical .action-label { - flex: 1 1 auto; - text-decoration: none; - padding: 0 1em; - background: none; - font-size: 12px; - line-height: 1; -} - -.monaco-menu .monaco-action-bar.vertical .keybinding, -.monaco-menu .monaco-action-bar.vertical .submenu-indicator { - display: inline-block; - flex: 2 1 auto; - padding: 0 1em; - text-align: right; - font-size: 12px; - line-height: 1; -} - -.monaco-menu .monaco-action-bar.vertical .submenu-indicator { - height: 100%; -} - -.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon { - font-size: 16px !important; - display: flex; - align-items: center; -} - -.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before { - margin-left: auto; - margin-right: -20px; -} - -.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding, -.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator { - opacity: 0.4; -} - -.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) { - display: inline-block; - box-sizing: border-box; - margin: 0; -} - -.monaco-menu .monaco-action-bar.vertical .action-item { - position: static; - overflow: visible; -} - -.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu { - position: absolute; -} - -.monaco-menu .monaco-action-bar.vertical .action-label.separator { - width: 100%; - height: 0px !important; - opacity: 1; -} - -.monaco-menu .monaco-action-bar.vertical .action-label.separator.text { - padding: 0.7em 1em 0.1em 1em; - font-weight: bold; - opacity: 1; -} - -.monaco-menu .monaco-action-bar.vertical .action-label:hover { - color: inherit; -} - -.monaco-menu .monaco-action-bar.vertical .menu-item-check { - position: absolute; - visibility: hidden; - width: 1em; - height: 100%; -} - -.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check { - visibility: visible; - display: flex; - align-items: center; - justify-content: center; -} - -/* Context Menu */ - -.context-view.monaco-menu-container { - outline: 0; - border: none; - animation: fadeIn 0.083s linear; - -webkit-app-region: no-drag; -} - -.context-view.monaco-menu-container :focus, -.context-view.monaco-menu-container .monaco-action-bar.vertical:focus, -.context-view.monaco-menu-container .monaco-action-bar.vertical :focus { - outline: 0; -} - -.hc-black .context-view.monaco-menu-container, -.hc-light .context-view.monaco-menu-container, -:host-context(.hc-black) .context-view.monaco-menu-container, -:host-context(.hc-light) .context-view.monaco-menu-container { - box-shadow: none; -} - -.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused, -.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused, -:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused, -:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused { - background: none; -} - -/* Vertical Action Bar Styles */ - -.monaco-menu .monaco-action-bar.vertical { - padding: 4px 0; -} - -.monaco-menu .monaco-action-bar.vertical .action-menu-item { - height: 2em; -} - -.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator), -.monaco-menu .monaco-action-bar.vertical .keybinding { - font-size: inherit; - padding: 0 2em; -} - -.monaco-menu .monaco-action-bar.vertical .menu-item-check { - font-size: inherit; - width: 2em; -} - -.monaco-menu .monaco-action-bar.vertical .action-label.separator { - font-size: inherit; - margin: 5px 0 !important; - padding: 0; - border-radius: 0; -} - -.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator, -:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator { - margin-left: 0; - margin-right: 0; -} - -.monaco-menu .monaco-action-bar.vertical .submenu-indicator { - font-size: 60%; - padding: 0 1.8em; -} - -.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator, -:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator { - height: 100%; - mask-size: 10px 10px; - -webkit-mask-size: 10px 10px; -} - -.monaco-menu .action-item { - cursor: default; -}`;if(E){I+=` - /* Arrows */ - .monaco-scrollable-element > .scrollbar > .scra { - cursor: pointer; - font-size: 11px !important; - } - - .monaco-scrollable-element > .visible { - opacity: 1; - - /* Background rule added for IE9 - to allow clicks on dom node */ - background:rgba(0,0,0,0); - - transition: opacity 100ms linear; - } - .monaco-scrollable-element > .invisible { - opacity: 0; - pointer-events: none; - } - .monaco-scrollable-element > .invisible.fade { - transition: opacity 800ms linear; - } - - /* Scrollable Content Inset Shadow */ - .monaco-scrollable-element > .shadow { - position: absolute; - display: none; - } - .monaco-scrollable-element > .shadow.top { - display: block; - top: 0; - left: 3px; - height: 3px; - width: 100%; - } - .monaco-scrollable-element > .shadow.left { - display: block; - top: 3px; - left: 0; - height: 100%; - width: 3px; - } - .monaco-scrollable-element > .shadow.top-left-corner { - display: block; - top: 0; - left: 0; - height: 3px; - width: 3px; - } - `;const M=w.scrollbarShadow;M&&(I+=` - .monaco-scrollable-element > .shadow.top { - box-shadow: ${M} 0 6px 6px -6px inset; - } - - .monaco-scrollable-element > .shadow.left { - box-shadow: ${M} 6px 0 6px -6px inset; - } - - .monaco-scrollable-element > .shadow.top.left { - box-shadow: ${M} 6px 6px 6px -6px inset; - } - `);const P=w.scrollbarSliderBackground;P&&(I+=` - .monaco-scrollable-element > .scrollbar > .slider { - background: ${P}; - } - `);const x=w.scrollbarSliderHoverBackground;x&&(I+=` - .monaco-scrollable-element > .scrollbar > .slider:hover { - background: ${x}; - } - `);const T=w.scrollbarSliderActiveBackground;T&&(I+=` - .monaco-scrollable-element > .scrollbar > .slider.active { - background: ${T}; - } - `)}return I}}),define(ne[584],se([1,0,68,315,39,25,26,6,2,560,412]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleMenuAction=e.ToolBar=void 0;class C extends _.Disposable{constructor(n,t,a={orientation:0}){super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new f.EventMultiplexer),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new _.DisposableStore),this.options=a,this.lookupKeybindings=typeof this.options.getKeyBinding=="function",this.toggleMenuAction=this._register(new s(()=>{var u;return(u=this.toggleMenuActionViewItem)===null||u===void 0?void 0:u.show()},a.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",n.appendChild(this.element),this.actionBar=this._register(new L.ActionBar(this.element,{orientation:a.orientation,ariaLabel:a.ariaLabel,actionRunner:a.actionRunner,allowContextMenu:a.allowContextMenu,highlightToggledItems:a.highlightToggledItems,actionViewItemProvider:(u,h)=>{var r;if(u.id===s.ID)return this.toggleMenuActionViewItem=new k.DropdownMenuActionViewItem(u,u.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:S.ThemeIcon.asClassNameArray((r=a.moreIcon)!==null&&r!==void 0?r:D.Codicon.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(a.actionViewItemProvider){const c=a.actionViewItemProvider(u,h);if(c)return c}if(u instanceof y.SubmenuAction){const c=new k.DropdownMenuActionViewItem(u,u.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:u.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry});return c.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(c),this.disposables.add(this._onDidChangeDropdownVisibility.add(c.onDidChangeVisibility)),c}}}))}set actionRunner(n){this.actionBar.actionRunner=n}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(n){return this.actionBar.getAction(n)}setActions(n,t){this.clear();const a=n?n.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),a.push(this.toggleMenuAction)),a.forEach(u=>{this.actionBar.push(u,{icon:!0,label:!1,keybinding:this.getKeybindingLabel(u)})})}getKeybindingLabel(n){var t,a,u;const h=this.lookupKeybindings?(a=(t=this.options).getKeyBinding)===null||a===void 0?void 0:a.call(t,n):void 0;return(u=h?.getLabel())!==null&&u!==void 0?u:void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),super.dispose()}}e.ToolBar=C;class s extends y.Action{constructor(n,t){t=t||g.localize(0,null),super(s.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=n}run(){return we(this,void 0,void 0,function*(){this.toggleDropdownMenu()})}get menuActions(){return this._menuActions}set menuActions(n){this._menuActions=n}}e.ToggleMenuAction=s,s.ID="toolbar.toggle.more"}),define(ne[184],se([1,0,7,81,44,68,228,227,225,114,153,218,139,39,14,13,25,26,196,6,72,2,141,20,561,413]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractTree=e.TreeFindMatchType=e.TreeFindMode=e.FuzzyToggle=e.ModeToggle=e.RenderIndentGuides=e.ComposedTreeDelegate=void 0;class v extends _.ElementsDragAndDropData{constructor(B){super(B.elements.map(V=>V.element)),this.data=B}}function b(H){return H instanceof _.ElementsDragAndDropData?new v(H):H}class w{constructor(B,V){this.modelProvider=B,this.dnd=V,this.autoExpandDisposable=d.Disposable.None}getDragURI(B){return this.dnd.getDragURI(B.element)}getDragLabel(B,V){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(B.map(Y=>Y.element),V)}onDragStart(B,V){var Y,ie;(ie=(Y=this.dnd).onDragStart)===null||ie===void 0||ie.call(Y,b(B),V)}onDragOver(B,V,Y,ie,ae=!0){const ce=this.dnd.onDragOver(b(B),V&&V.element,Y,ie),de=this.autoExpandNode!==V;if(de&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=V),typeof V>"u")return ce;if(de&&typeof ce!="boolean"&&ce.autoExpand&&(this.autoExpandDisposable=(0,a.disposableTimeout)(()=>{const z=this.modelProvider(),ee=z.getNodeLocation(V);z.isCollapsed(ee)&&z.setCollapsed(ee,!1),this.autoExpandNode=void 0},500)),typeof ce=="boolean"||!ce.accept||typeof ce.bubble>"u"||ce.feedback){if(!ae){const z=typeof ce=="boolean"?ce:ce.accept,ee=typeof ce=="boolean"?void 0:ce.effect;return{accept:z,effect:ee,feedback:[Y]}}return ce}if(ce.bubble===1){const z=this.modelProvider(),ee=z.getNodeLocation(V),$=z.getParentNodeLocation(ee),re=z.getNode($),oe=$&&z.getListIndex($);return this.onDragOver(B,re,oe,ie,!1)}const he=this.modelProvider(),ue=he.getNodeLocation(V),te=he.getListIndex(ue),q=he.getListRenderCount(ue);return Object.assign(Object.assign({},ce),{feedback:(0,t.range)(te,te+q)})}drop(B,V,Y,ie){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(b(B),V&&V.element,Y,ie)}onDragEnd(B){var V,Y;(Y=(V=this.dnd).onDragEnd)===null||Y===void 0||Y.call(V,B)}}function E(H,B){return B&&Object.assign(Object.assign({},B),{identityProvider:B.identityProvider&&{getId(V){return B.identityProvider.getId(V.element)}},dnd:B.dnd&&new w(H,B.dnd),multipleSelectionController:B.multipleSelectionController&&{isSelectionSingleChangeEvent(V){return B.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},V),{element:V.element}))},isSelectionRangeChangeEvent(V){return B.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},V),{element:V.element}))}},accessibilityProvider:B.accessibilityProvider&&Object.assign(Object.assign({},B.accessibilityProvider),{getSetSize(V){const Y=H(),ie=Y.getNodeLocation(V),ae=Y.getParentNodeLocation(ie);return Y.getNode(ae).visibleChildrenCount},getPosInSet(V){return V.visibleChildIndex+1},isChecked:B.accessibilityProvider&&B.accessibilityProvider.isChecked?V=>B.accessibilityProvider.isChecked(V.element):void 0,getRole:B.accessibilityProvider&&B.accessibilityProvider.getRole?V=>B.accessibilityProvider.getRole(V.element):()=>"treeitem",getAriaLabel(V){return B.accessibilityProvider.getAriaLabel(V.element)},getWidgetAriaLabel(){return B.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:B.accessibilityProvider&&B.accessibilityProvider.getWidgetRole?()=>B.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:B.accessibilityProvider&&B.accessibilityProvider.getAriaLevel?V=>B.accessibilityProvider.getAriaLevel(V.element):V=>V.depth,getActiveDescendantId:B.accessibilityProvider.getActiveDescendantId&&(V=>B.accessibilityProvider.getActiveDescendantId(V.element))}),keyboardNavigationLabelProvider:B.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},B.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel(V){return B.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(V.element)}})})}class I{constructor(B){this.delegate=B}getHeight(B){return this.delegate.getHeight(B.element)}getTemplateId(B){return this.delegate.getTemplateId(B.element)}hasDynamicHeight(B){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(B.element)}setDynamicHeight(B,V){var Y,ie;(ie=(Y=this.delegate).setDynamicHeight)===null||ie===void 0||ie.call(Y,B.element,V)}}e.ComposedTreeDelegate=I;var M;(function(H){H.None="none",H.OnHover="onHover",H.Always="always"})(M||(e.RenderIndentGuides=M={}));class P{get elements(){return this._elements}constructor(B,V=[]){this._elements=V,this.disposables=new d.DisposableStore,this.onDidChange=c.Event.forEach(B,Y=>this._elements=Y,this.disposables)}dispose(){this.disposables.dispose()}}class x{constructor(B,V,Y,ie,ae,ce={}){var de;this.renderer=B,this.modelProvider=V,this.activeNodes=ie,this.renderedIndentGuides=ae,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=x.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=d.Disposable.None,this.disposables=new d.DisposableStore,this.templateId=B.templateId,this.updateOptions(ce),c.Event.map(Y,he=>he.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(de=B.onDidChangeTwistieState)===null||de===void 0||de.call(B,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(B={}){if(typeof B.indent<"u"){const V=(0,l.clamp)(B.indent,0,40);if(V!==this.indent){this.indent=V;for(const[Y,ie]of this.renderedNodes)this.renderTreeElement(Y,ie)}}if(typeof B.renderIndentGuides<"u"){const V=B.renderIndentGuides!==M.None;if(V!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=V;for(const[Y,ie]of this.renderedNodes)this._renderIndentGuides(Y,ie);if(this.indentGuidesDisposable.dispose(),V){const Y=new d.DisposableStore;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,Y),this.indentGuidesDisposable=Y,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof B.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=B.hideTwistiesOfChildlessElements)}renderTemplate(B){const V=(0,L.append)(B,(0,L.$)(".monaco-tl-row")),Y=(0,L.append)(V,(0,L.$)(".monaco-tl-indent")),ie=(0,L.append)(V,(0,L.$)(".monaco-tl-twistie")),ae=(0,L.append)(V,(0,L.$)(".monaco-tl-contents")),ce=this.renderer.renderTemplate(ae);return{container:B,indent:Y,twistie:ie,indentGuidesDisposable:d.Disposable.None,templateData:ce}}renderElement(B,V,Y,ie){this.renderedNodes.set(B,Y),this.renderedElements.set(B.element,B),this.renderTreeElement(B,Y),this.renderer.renderElement(B,V,Y.templateData,ie)}disposeElement(B,V,Y,ie){var ae,ce;Y.indentGuidesDisposable.dispose(),(ce=(ae=this.renderer).disposeElement)===null||ce===void 0||ce.call(ae,B,V,Y.templateData,ie),typeof ie=="number"&&(this.renderedNodes.delete(B),this.renderedElements.delete(B.element))}disposeTemplate(B){this.renderer.disposeTemplate(B.templateData)}onDidChangeTwistieState(B){const V=this.renderedElements.get(B);V&&this.onDidChangeNodeTwistieState(V)}onDidChangeNodeTwistieState(B){const V=this.renderedNodes.get(B);V&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(B,V))}renderTreeElement(B,V){const Y=x.DefaultIndent+(B.depth-1)*this.indent;V.twistie.style.paddingLeft=`${Y}px`,V.indent.style.width=`${Y+this.indent-16}px`,B.collapsible?V.container.setAttribute("aria-expanded",String(!B.collapsed)):V.container.removeAttribute("aria-expanded"),V.twistie.classList.remove(...h.ThemeIcon.asClassNameArray(u.Codicon.treeItemExpanded));let ie=!1;this.renderer.renderTwistie&&(ie=this.renderer.renderTwistie(B.element,V.twistie)),B.collapsible&&(!this.hideTwistiesOfChildlessElements||B.visibleChildrenCount>0)?(ie||V.twistie.classList.add(...h.ThemeIcon.asClassNameArray(u.Codicon.treeItemExpanded)),V.twistie.classList.add("collapsible"),V.twistie.classList.toggle("collapsed",B.collapsed)):V.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(B,V)}_renderIndentGuides(B,V){if((0,L.clearNode)(V.indent),V.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const Y=new d.DisposableStore,ie=this.modelProvider();for(;;){const ae=ie.getNodeLocation(B),ce=ie.getParentNodeLocation(ae);if(!ce)break;const de=ie.getNode(ce),he=(0,L.$)(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(de)&&he.classList.add("active"),V.indent.childElementCount===0?V.indent.appendChild(he):V.indent.insertBefore(he,V.indent.firstElementChild),this.renderedIndentGuides.add(de,he),Y.add((0,d.toDisposable)(()=>this.renderedIndentGuides.delete(de,he))),B=de}V.indentGuidesDisposable=Y}_onDidChangeActiveNodes(B){if(!this.shouldRenderIndentGuides)return;const V=new Set,Y=this.modelProvider();B.forEach(ie=>{const ae=Y.getNodeLocation(ie);try{const ce=Y.getParentNodeLocation(ae);ie.collapsible&&ie.children.length>0&&!ie.collapsed?V.add(ie):ce&&V.add(Y.getNode(ce))}catch{}}),this.activeIndentNodes.forEach(ie=>{V.has(ie)||this.renderedIndentGuides.forEach(ie,ae=>ae.classList.remove("active"))}),V.forEach(ie=>{this.activeIndentNodes.has(ie)||this.renderedIndentGuides.forEach(ie,ae=>ae.classList.add("active"))}),this.activeIndentNodes=V}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,d.dispose)(this.disposables)}}x.DefaultIndent=8;class T{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(B,V,Y){this.tree=B,this.keyboardNavigationLabelProvider=V,this._filter=Y,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new d.DisposableStore,B.onWillRefilter(this.reset,this,this.disposables)}filter(B,V){let Y=1;if(this._filter){const ce=this._filter.filter(B,V);if(typeof ce=="boolean"?Y=ce?1:0:(0,s.isFilterResult)(ce)?Y=(0,s.getVisibleState)(ce.visibility):Y=ce,Y===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:o.FuzzyScore.Default,visibility:Y};const ie=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(B),ae=Array.isArray(ie)?ie:[ie];for(const ce of ae){const de=ce&&ce.toString();if(typeof de>"u")return{data:o.FuzzyScore.Default,visibility:Y};let he;if(this.tree.findMatchType===W.Contiguous){const ue=de.toLowerCase().indexOf(this._lowercasePattern);if(ue>-1){he=[Number.MAX_SAFE_INTEGER,0];for(let te=this._lowercasePattern.length;te>0;te--)he.push(ue+te-1)}}else he=(0,o.fuzzyScore)(this._pattern,this._lowercasePattern,0,de,de.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(he)return this._matchCount++,ae.length===1?{data:he,visibility:Y}:{data:{label:de,score:he},visibility:Y}}return this.tree.findMode===O.Filter?typeof this.tree.options.defaultFindVisibility=="number"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(B):2:{data:o.FuzzyScore.Default,visibility:Y}}reset(){this._totalCount=0,this._matchCount=0}dispose(){(0,d.dispose)(this.disposables)}}class A extends C.Toggle{constructor(B){var V;super({icon:u.Codicon.listFilter,title:(0,m.localize)(0,null),isChecked:(V=B.isChecked)!==null&&V!==void 0?V:!1,inputActiveOptionBorder:B.inputActiveOptionBorder,inputActiveOptionForeground:B.inputActiveOptionForeground,inputActiveOptionBackground:B.inputActiveOptionBackground})}}e.ModeToggle=A;class N extends C.Toggle{constructor(B){var V;super({icon:u.Codicon.searchFuzzy,title:(0,m.localize)(1,null),isChecked:(V=B.isChecked)!==null&&V!==void 0?V:!1,inputActiveOptionBorder:B.inputActiveOptionBorder,inputActiveOptionForeground:B.inputActiveOptionForeground,inputActiveOptionBackground:B.inputActiveOptionBackground})}}e.FuzzyToggle=N;const F={inputBoxStyles:f.unthemedInboxStyles,toggleStyles:C.unthemedToggleStyles,listFilterWidgetBackground:void 0,listFilterWidgetNoMatchesOutline:void 0,listFilterWidgetOutline:void 0,listFilterWidgetShadow:void 0};var O;(function(H){H[H.Highlight=0]="Highlight",H[H.Filter=1]="Filter"})(O||(e.TreeFindMode=O={}));var W;(function(H){H[H.Fuzzy=0]="Fuzzy",H[H.Contiguous=1]="Contiguous"})(W||(e.TreeFindMatchType=W={}));class U extends d.Disposable{set mode(B){this.modeToggle.checked=B===O.Filter,this.findInput.inputBox.setPlaceHolder(B===O.Filter?(0,m.localize)(2,null):(0,m.localize)(3,null))}set matchType(B){this.matchTypeToggle.checked=B===W.Fuzzy}constructor(B,V,Y,ie,ae,ce){var de;super(),this.tree=V,this.elements=(0,L.h)(".monaco-tree-type-filter",[(0,L.h)(".monaco-tree-type-filter-grab.codicon.codicon-debug-gripper@grab",{tabIndex:0}),(0,L.h)(".monaco-tree-type-filter-input@findInput"),(0,L.h)(".monaco-tree-type-filter-actionbar@actionbar")]),this.width=0,this.right=0,this.top=0,this._onDidDisable=new c.Emitter,B.appendChild(this.elements.root),this._register((0,d.toDisposable)(()=>B.removeChild(this.elements.root)));const he=(de=ce?.styles)!==null&&de!==void 0?de:F;he.listFilterWidgetBackground&&(this.elements.root.style.backgroundColor=he.listFilterWidgetBackground),he.listFilterWidgetShadow&&(this.elements.root.style.boxShadow=`0 0 8px 2px ${he.listFilterWidgetShadow}`),this.modeToggle=this._register(new A(Object.assign(Object.assign({},he.toggleStyles),{isChecked:ie===O.Filter}))),this.matchTypeToggle=this._register(new N(Object.assign(Object.assign({},he.toggleStyles),{isChecked:ae===W.Fuzzy}))),this.onDidChangeMode=c.Event.map(this.modeToggle.onChange,()=>this.modeToggle.checked?O.Filter:O.Highlight,this._store),this.onDidChangeMatchType=c.Event.map(this.matchTypeToggle.onChange,()=>this.matchTypeToggle.checked?W.Fuzzy:W.Contiguous,this._store),this.findInput=this._register(new S.FindInput(this.elements.findInput,Y,{label:(0,m.localize)(4,null),additionalToggles:[this.modeToggle,this.matchTypeToggle],showCommonFindToggles:!1,inputBoxStyles:he.inputBoxStyles,toggleStyles:he.toggleStyles,history:ce?.history})),this.actionbar=this._register(new D.ActionBar(this.elements.actionbar)),this.mode=ie;const ue=this._register(new k.DomEmitter(this.findInput.inputBox.inputElement,"keydown")),te=this._register(c.Event.chain(ue.event)).map($=>new y.StandardKeyboardEvent($)).event;this._register(te($=>{if($.equals(3)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.addToHistory(),this.tree.domFocus();return}if($.equals(18)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.isAtLastInHistory()||this.findInput.inputBox.isNowhereInHistory()?(this.findInput.inputBox.addToHistory(),this.tree.domFocus()):this.findInput.inputBox.showNextValue();return}if($.equals(16)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.showPreviousValue();return}}));const q=this._register(new n.Action("close",(0,m.localize)(5,null),"codicon codicon-close",!0,()=>this.dispose()));this.actionbar.push(q,{icon:!0,label:!1});const z=this._register(new k.DomEmitter(this.elements.grab,"mousedown"));this._register(z.event($=>{const re=new d.DisposableStore,oe=re.add(new k.DomEmitter(window,"mousemove")),ge=re.add(new k.DomEmitter(window,"mouseup")),ve=this.right,Se=$.pageX,Le=this.top,De=$.pageY;this.elements.grab.classList.add("grabbing");const ye=this.elements.root.style.transition;this.elements.root.style.transition="unset";const Ee=Me=>{const Pe=Me.pageX-Se;this.right=ve-Pe;const Fe=Me.pageY-De;this.top=Le+Fe,this.layout()};re.add(oe.event(Ee)),re.add(ge.event(Me=>{Ee(Me),this.elements.grab.classList.remove("grabbing"),this.elements.root.style.transition=ye,re.dispose()}))}));const ee=this._register(c.Event.chain(this._register(new k.DomEmitter(this.elements.grab,"keydown")).event)).map($=>new y.StandardKeyboardEvent($)).event;this._register(ee($=>{let re,oe;if($.keyCode===15?re=Number.POSITIVE_INFINITY:$.keyCode===17?re=0:$.keyCode===10&&(re=this.right===0?Number.POSITIVE_INFINITY:0),$.keyCode===16?oe=0:$.keyCode===18&&(oe=Number.POSITIVE_INFINITY),re!==void 0&&($.preventDefault(),$.stopPropagation(),this.right=re,this.layout()),oe!==void 0){$.preventDefault(),$.stopPropagation(),this.top=oe;const ge=this.elements.root.style.transition;this.elements.root.style.transition="unset",this.layout(),setTimeout(()=>{this.elements.root.style.transition=ge},0)}})),this.onDidChangeValue=this.findInput.onDidChange}layout(B=this.width){this.width=B,this.right=(0,l.clamp)(this.right,0,Math.max(0,B-212)),this.elements.root.style.right=`${this.right}px`,this.top=(0,l.clamp)(this.top,0,24),this.elements.root.style.top=`${this.top}px`}showMessage(B){this.findInput.showMessage(B)}clearMessage(){this.findInput.clearMessage()}dispose(){const B=Object.create(null,{dispose:{get:()=>super.dispose}});return we(this,void 0,void 0,function*(){this._onDidDisable.fire(),this.elements.root.classList.add("disabled"),yield(0,a.timeout)(300),B.dispose.call(this)})}}class j{get pattern(){return this._pattern}get mode(){return this._mode}set mode(B){B!==this._mode&&(this._mode=B,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(B))}get matchType(){return this._matchType}set matchType(B){B!==this._matchType&&(this._matchType=B,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(B))}constructor(B,V,Y,ie,ae,ce={}){var de,he;this.tree=B,this.view=Y,this.filter=ie,this.contextViewProvider=ae,this.options=ce,this._pattern="",this.width=0,this._onDidChangeMode=new c.Emitter,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new c.Emitter,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new c.Emitter,this._onDidChangeOpenState=new c.Emitter,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new d.DisposableStore,this.disposables=new d.DisposableStore,this._mode=(de=B.options.defaultFindMode)!==null&&de!==void 0?de:O.Highlight,this._matchType=(he=B.options.defaultFindMatchType)!==null&&he!==void 0?he:W.Fuzzy,V.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(B={}){B.defaultFindMode!==void 0&&(this.mode=B.defaultFindMode),B.defaultFindMatchType!==void 0&&(this.matchType=B.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var B,V,Y,ie;const ae=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&ae?!((B=this.tree.options.showNotFoundMessage)!==null&&B!==void 0)||B?(V=this.widget)===null||V===void 0||V.showMessage({type:2,content:(0,m.localize)(6,null)}):(Y=this.widget)===null||Y===void 0||Y.showMessage({type:2}):(ie=this.widget)===null||ie===void 0||ie.clearMessage()}shouldAllowFocus(B){return!this.widget||!this.pattern||this._mode===O.Filter||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!o.FuzzyScore.isDefault(B.filterData)}layout(B){var V;this.width=B,(V=this.widget)===null||V===void 0||V.layout(B)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}}function R(H){let B=i.TreeMouseEventTarget.Unknown;return(0,L.hasParentWithClass)(H.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?B=i.TreeMouseEventTarget.Twistie:(0,L.hasParentWithClass)(H.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?B=i.TreeMouseEventTarget.Element:(0,L.hasParentWithClass)(H.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(B=i.TreeMouseEventTarget.Filter),{browserEvent:H.browserEvent,element:H.element?H.element.element:null,target:B}}function K(H,B){B(H),H.children.forEach(V=>K(V,B))}class G{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(B,V){this.getFirstViewElementWithTrait=B,this.identityProvider=V,this.nodes=[],this._onDidChange=new c.Emitter,this.onDidChange=this._onDidChange.event}set(B,V){!V?.__forceEvent&&(0,t.equals)(this.nodes,B)||this._set(B,!1,V)}_set(B,V,Y){if(this.nodes=[...B],this.elements=void 0,this._nodeSet=void 0,!V){const ie=this;this._onDidChange.fire({get elements(){return ie.get()},browserEvent:Y})}}get(){return this.elements||(this.elements=this.nodes.map(B=>B.element)),[...this.elements]}getNodes(){return this.nodes}has(B){return this.nodeSet.has(B)}onDidModelSplice({insertedNodes:B,deletedNodes:V}){if(!this.identityProvider){const he=this.createNodeSet(),ue=te=>he.delete(te);V.forEach(te=>K(te,ue)),this.set([...he.values()]);return}const Y=new Set,ie=he=>Y.add(this.identityProvider.getId(he.element).toString());V.forEach(he=>K(he,ie));const ae=new Map,ce=he=>ae.set(this.identityProvider.getId(he.element).toString(),he);B.forEach(he=>K(he,ce));const de=[];for(const he of this.nodes){const ue=this.identityProvider.getId(he.element).toString();if(!Y.has(ue))de.push(he);else{const q=ae.get(ue);q&&q.visible&&de.push(q)}}if(this.nodes.length>0&&de.length===0){const he=this.getFirstViewElementWithTrait();he&&de.push(he)}this._set(de,!0)}createNodeSet(){const B=new Set;for(const V of this.nodes)B.add(V);return B}}class Z extends g.MouseController{constructor(B,V){super(B),this.tree=V}onViewPointer(B){if((0,g.isButton)(B.browserEvent.target)||(0,g.isInputElement)(B.browserEvent.target)||(0,g.isMonacoEditor)(B.browserEvent.target)||B.browserEvent.isHandledByList)return;const V=B.element;if(!V)return super.onViewPointer(B);if(this.isSelectionRangeChangeEvent(B)||this.isSelectionSingleChangeEvent(B))return super.onViewPointer(B);const Y=B.browserEvent.target,ie=Y.classList.contains("monaco-tl-twistie")||Y.classList.contains("monaco-icon-label")&&Y.classList.contains("folder-icon")&&B.browserEvent.offsetX<16;let ae=!1;if(typeof this.tree.expandOnlyOnTwistieClick=="function"?ae=this.tree.expandOnlyOnTwistieClick(V.element):ae=!!this.tree.expandOnlyOnTwistieClick,ae&&!ie&&B.browserEvent.detail!==2)return super.onViewPointer(B);if(!this.tree.expandOnDoubleClick&&B.browserEvent.detail===2)return super.onViewPointer(B);if(V.collapsible){const ce=this.tree.getNodeLocation(V),de=B.browserEvent.altKey;if(this.tree.setFocus([ce]),this.tree.toggleCollapsed(ce,de),ae&&ie){B.browserEvent.isHandledByList=!0;return}}super.onViewPointer(B)}onDoubleClick(B){B.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||B.browserEvent.isHandledByList||super.onDoubleClick(B)}}class J extends g.List{constructor(B,V,Y,ie,ae,ce,de,he){super(B,V,Y,ie,he),this.focusTrait=ae,this.selectionTrait=ce,this.anchorTrait=de}createMouseController(B){return new Z(this,B.tree)}splice(B,V,Y=[]){if(super.splice(B,V,Y),Y.length===0)return;const ie=[],ae=[];let ce;Y.forEach((de,he)=>{this.focusTrait.has(de)&&ie.push(B+he),this.selectionTrait.has(de)&&ae.push(B+he),this.anchorTrait.has(de)&&(ce=B+he)}),ie.length>0&&super.setFocus((0,t.distinct)([...super.getFocus(),...ie])),ae.length>0&&super.setSelection((0,t.distinct)([...super.getSelection(),...ae])),typeof ce=="number"&&super.setAnchor(ce)}setFocus(B,V,Y=!1){super.setFocus(B,V),Y||this.focusTrait.set(B.map(ie=>this.element(ie)),V)}setSelection(B,V,Y=!1){super.setSelection(B,V),Y||this.selectionTrait.set(B.map(ie=>this.element(ie)),V)}setAnchor(B,V=!1){super.setAnchor(B),V||(typeof B>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(B)]))}}class X{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return c.Event.filter(c.Event.map(this.view.onMouseDblClick,R),B=>B.target!==i.TreeMouseEventTarget.Filter)}get onPointer(){return c.Event.map(this.view.onPointer,R)}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return c.Event.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var B,V;return(V=(B=this.findController)===null||B===void 0?void 0:B.mode)!==null&&V!==void 0?V:O.Highlight}set findMode(B){this.findController&&(this.findController.mode=B)}get findMatchType(){var B,V;return(V=(B=this.findController)===null||B===void 0?void 0:B.matchType)!==null&&V!==void 0?V:W.Fuzzy}set findMatchType(B){this.findController&&(this.findController.matchType=B)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(B,V,Y,ie,ae={}){var ce;this._user=B,this._options=ae,this.eventBufferer=new c.EventBufferer,this.onDidChangeFindOpenState=c.Event.None,this.disposables=new d.DisposableStore,this._onWillRefilter=new c.Emitter,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new c.Emitter;const de=new I(Y),he=new c.Relay,ue=new c.Relay,te=this.disposables.add(new P(ue.event)),q=new r.SetMap;this.renderers=ie.map($=>new x($,()=>this.model,he.event,te,q,ae));for(const $ of this.renderers)this.disposables.add($);let z;ae.keyboardNavigationLabelProvider&&(z=new T(this,ae.keyboardNavigationLabelProvider,ae.filter),ae=Object.assign(Object.assign({},ae),{filter:z}),this.disposables.add(z)),this.focus=new G(()=>this.view.getFocusedElements()[0],ae.identityProvider),this.selection=new G(()=>this.view.getSelectedElements()[0],ae.identityProvider),this.anchor=new G(()=>this.view.getAnchorElement(),ae.identityProvider),this.view=new J(B,V,de,this.renderers,this.focus,this.selection,this.anchor,Object.assign(Object.assign({},E(()=>this.model,ae)),{tree:this})),this.model=this.createModel(B,this.view,ae),he.input=this.model.onDidChangeCollapseState;const ee=c.Event.forEach(this.model.onDidSplice,$=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice($),this.selection.onDidModelSplice($)})},this.disposables);if(ee(()=>null,null,this.disposables),ue.input=c.Event.chain(c.Event.any(ee,this.focus.onDidChange,this.selection.onDidChange)).debounce(()=>null,0).map(()=>{const $=new Set;for(const re of this.focus.getNodes())$.add(re);for(const re of this.selection.getNodes())$.add(re);return[...$.values()]}).event,ae.keyboardSupport!==!1){const $=c.Event.chain(this.view.onKeyDown).filter(re=>!(0,g.isInputElement)(re.target)).map(re=>new y.StandardKeyboardEvent(re));$.filter(re=>re.keyCode===15).on(this.onLeftArrow,this,this.disposables),$.filter(re=>re.keyCode===17).on(this.onRightArrow,this,this.disposables),$.filter(re=>re.keyCode===10).on(this.onSpace,this,this.disposables)}if((!((ce=ae.findWidgetEnabled)!==null&&ce!==void 0)||ce)&&ae.keyboardNavigationLabelProvider&&ae.contextViewProvider){const $=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new j(this,this.model,this.view,z,ae.contextViewProvider,$),this.focusNavigationFilter=re=>this.findController.shouldAllowFocus(re),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=c.Event.None,this.onDidChangeFindMatchType=c.Event.None;this.styleElement=(0,L.createStyleSheet)(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===M.Always)}updateOptions(B={}){var V;this._options=Object.assign(Object.assign({},this._options),B);for(const Y of this.renderers)Y.updateOptions(B);this.view.updateOptions(this._options),(V=this.findController)===null||V===void 0||V.updateOptions(B),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===M.Always)}get options(){return this._options}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(B){this.view.scrollTop=B}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}domFocus(){this.view.domFocus()}layout(B,V){var Y;this.view.layout(B,V),(0,p.isNumber)(V)&&((Y=this.findController)===null||Y===void 0||Y.layout(V))}style(B){const V=`.${this.view.domId}`,Y=[];B.treeIndentGuidesStroke&&(Y.push(`.monaco-list${V}:hover .monaco-tl-indent > .indent-guide, .monaco-list${V}.always .monaco-tl-indent > .indent-guide { border-color: ${B.treeInactiveIndentGuidesStroke}; }`),Y.push(`.monaco-list${V} .monaco-tl-indent > .indent-guide.active { border-color: ${B.treeIndentGuidesStroke}; }`)),this.styleElement.textContent=Y.join(` -`),this.view.style(B)}getParentElement(B){const V=this.model.getParentNodeLocation(B);return this.model.getNode(V).element}getFirstElementChild(B){return this.model.getFirstElementChild(B)}getNode(B){return this.model.getNode(B)}getNodeLocation(B){return this.model.getNodeLocation(B)}collapse(B,V=!1){return this.model.setCollapsed(B,!0,V)}expand(B,V=!1){return this.model.setCollapsed(B,!1,V)}toggleCollapsed(B,V=!1){return this.model.setCollapsed(B,void 0,V)}isCollapsible(B){return this.model.isCollapsible(B)}setCollapsible(B,V){return this.model.setCollapsible(B,V)}isCollapsed(B){return this.model.isCollapsed(B)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(B,V){const Y=B.map(ae=>this.model.getNode(ae));this.selection.set(Y,V);const ie=B.map(ae=>this.model.getListIndex(ae)).filter(ae=>ae>-1);this.view.setSelection(ie,V,!0)}getSelection(){return this.selection.get()}setFocus(B,V){const Y=B.map(ae=>this.model.getNode(ae));this.focus.set(Y,V);const ie=B.map(ae=>this.model.getListIndex(ae)).filter(ae=>ae>-1);this.view.setFocus(ie,V,!0)}getFocus(){return this.focus.get()}reveal(B,V){this.model.expandTo(B);const Y=this.model.getListIndex(B);Y!==-1&&this.view.reveal(Y,V)}onLeftArrow(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y);if(!this.model.setCollapsed(ie,!0)){const ce=this.model.getParentNodeLocation(ie);if(!ce)return;const de=this.model.getListIndex(ce);this.view.reveal(de),this.view.setFocus([de])}}onRightArrow(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y);if(!this.model.setCollapsed(ie,!1)){if(!Y.children.some(he=>he.visible))return;const[ce]=this.view.getFocus(),de=ce+1;this.view.reveal(de),this.view.setFocus([de])}}onSpace(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y),ae=B.browserEvent.altKey;this.model.setCollapsed(ie,void 0,ae)}dispose(){(0,d.dispose)(this.disposables),this.view.dispose()}}e.AbstractTree=X}),define(ne[585],se([1,0,184,219]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataTree=void 0;class y extends L.AbstractTree{constructor(S,f,_,g,C,s={}){super(S,f,_,g,s),this.user=S,this.dataSource=C,this.identityProvider=s.identityProvider}createModel(S,f,_){return new k.ObjectTreeModel(S,f,_)}}e.DataTree=y}),define(ne[316],se([1,0,184,568,219,106,46]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleObjectTree=e.ObjectTree=void 0;class f extends L.AbstractTree{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(i,n,t,a,u={}){super(i,n,t,a,u),this.user=i}setChildren(i,n=S.Iterable.empty(),t){this.model.setChildren(i,n,t)}rerender(i){if(i===void 0){this.view.rerender();return}this.model.rerender(i)}hasElement(i){return this.model.has(i)}createModel(i,n,t){return new y.ObjectTreeModel(i,n,t)}}e.ObjectTree=f;class _{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(i,n){this._compressedTreeNodeProvider=i,this.renderer=n,this.templateId=n.templateId,n.onDidChangeTwistieState&&(this.onDidChangeTwistieState=n.onDidChangeTwistieState)}renderTemplate(i){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(i)}}renderElement(i,n,t,a){const u=this.compressedTreeNodeProvider.getCompressedTreeNode(i.element);u.element.elements.length===1?(t.compressedTreeNode=void 0,this.renderer.renderElement(i,n,t.data,a)):(t.compressedTreeNode=u,this.renderer.renderCompressedElements(u,n,t.data,a))}disposeElement(i,n,t,a){var u,h,r,c;t.compressedTreeNode?(h=(u=this.renderer).disposeCompressedElements)===null||h===void 0||h.call(u,t.compressedTreeNode,n,t.data,a):(c=(r=this.renderer).disposeElement)===null||c===void 0||c.call(r,i,n,t.data,a)}disposeTemplate(i){this.renderer.disposeTemplate(i.data)}renderTwistie(i,n){return this.renderer.renderTwistie?this.renderer.renderTwistie(i,n):!1}}ke([D.memoize],_.prototype,"compressedTreeNodeProvider",null);function g(s,i){return i&&Object.assign(Object.assign({},i),{keyboardNavigationLabelProvider:i.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(n){let t;try{t=s().getCompressedTreeNode(n)}catch{return i.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n)}return t.element.elements.length===1?i.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n):i.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.element.elements)}}})}class C extends f{constructor(i,n,t,a,u={}){const h=()=>this,r=a.map(c=>new _(h,c));super(i,n,t,r,g(h,u))}setChildren(i,n=S.Iterable.empty(),t){this.model.setChildren(i,n,t)}createModel(i,n,t){return new k.CompressibleObjectTreeModel(i,n,t)}updateOptions(i={}){super.updateOptions(i),typeof i.compressionEnabled<"u"&&this.model.setCompressionEnabled(i.compressionEnabled)}getCompressedTreeNode(i=null){return this.model.getCompressedTreeNode(i)}}e.CompressibleObjectTree=C}),define(ne[586],se([1,0,225,184,218,316,139,13,25,26,9,6,46,2,20]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleAsyncDataTree=e.AsyncDataTree=void 0;function a(T){return Object.assign(Object.assign({},T),{children:[],refreshPromise:void 0,stale:!0,slow:!1,collapsedByDefault:void 0})}function u(T,A){return A.parent?A.parent===T?!0:u(T,A.parent):!1}function h(T,A){return T===A||u(T,A)||u(A,T)}class r{get element(){return this.node.element.element}get children(){return this.node.children.map(A=>new r(A))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(A){this.node=A}}class c{constructor(A,N,F){this.renderer=A,this.nodeMapper=N,this.onDidChangeTwistieState=F,this.renderedNodes=new Map,this.templateId=A.templateId}renderTemplate(A){return{templateData:this.renderer.renderTemplate(A)}}renderElement(A,N,F,O){this.renderer.renderElement(this.nodeMapper.map(A),N,F.templateData,O)}renderTwistie(A,N){return A.slow?(N.classList.add(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!0):(N.classList.remove(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!1)}disposeElement(A,N,F,O){var W,U;(U=(W=this.renderer).disposeElement)===null||U===void 0||U.call(W,this.nodeMapper.map(A),N,F.templateData,O)}disposeTemplate(A){this.renderer.disposeTemplate(A.templateData)}dispose(){this.renderedNodes.clear()}}function o(T){return{browserEvent:T.browserEvent,elements:T.elements.map(A=>A.element)}}function d(T){return{browserEvent:T.browserEvent,element:T.element&&T.element.element,target:T.target}}class l extends L.ElementsDragAndDropData{constructor(A){super(A.elements.map(N=>N.element)),this.data=A}}function p(T){return T instanceof L.ElementsDragAndDropData?new l(T):T}class m{constructor(A){this.dnd=A}getDragURI(A){return this.dnd.getDragURI(A.element)}getDragLabel(A,N){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(A.map(F=>F.element),N)}onDragStart(A,N){var F,O;(O=(F=this.dnd).onDragStart)===null||O===void 0||O.call(F,p(A),N)}onDragOver(A,N,F,O,W=!0){return this.dnd.onDragOver(p(A),N&&N.element,F,O)}drop(A,N,F,O){this.dnd.drop(p(A),N&&N.element,F,O)}onDragEnd(A){var N,F;(F=(N=this.dnd).onDragEnd)===null||F===void 0||F.call(N,A)}}function v(T){return T&&Object.assign(Object.assign({},T),{collapseByDefault:!0,identityProvider:T.identityProvider&&{getId(A){return T.identityProvider.getId(A.element)}},dnd:T.dnd&&new m(T.dnd),multipleSelectionController:T.multipleSelectionController&&{isSelectionSingleChangeEvent(A){return T.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},A),{element:A.element}))},isSelectionRangeChangeEvent(A){return T.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},A),{element:A.element}))}},accessibilityProvider:T.accessibilityProvider&&Object.assign(Object.assign({},T.accessibilityProvider),{getPosInSet:void 0,getSetSize:void 0,getRole:T.accessibilityProvider.getRole?A=>T.accessibilityProvider.getRole(A.element):()=>"treeitem",isChecked:T.accessibilityProvider.isChecked?A=>{var N;return!!(!((N=T.accessibilityProvider)===null||N===void 0)&&N.isChecked(A.element))}:void 0,getAriaLabel(A){return T.accessibilityProvider.getAriaLabel(A.element)},getWidgetAriaLabel(){return T.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:T.accessibilityProvider.getWidgetRole?()=>T.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:T.accessibilityProvider.getAriaLevel&&(A=>T.accessibilityProvider.getAriaLevel(A.element)),getActiveDescendantId:T.accessibilityProvider.getActiveDescendantId&&(A=>T.accessibilityProvider.getActiveDescendantId(A.element))}),filter:T.filter&&{filter(A,N){return T.filter.filter(A.element,N)}},keyboardNavigationLabelProvider:T.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},T.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel(A){return T.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(A.element)}}),sorter:void 0,expandOnlyOnTwistieClick:typeof T.expandOnlyOnTwistieClick>"u"?void 0:typeof T.expandOnlyOnTwistieClick!="function"?T.expandOnlyOnTwistieClick:A=>T.expandOnlyOnTwistieClick(A.element),defaultFindVisibility:A=>A.hasChildren&&A.stale?1:typeof T.defaultFindVisibility=="number"?T.defaultFindVisibility:typeof T.defaultFindVisibility>"u"?2:T.defaultFindVisibility(A.element)})}function b(T,A){A(T),T.children.forEach(N=>b(N,A))}class w{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return s.Event.map(this.tree.onDidChangeFocus,o)}get onDidChangeSelection(){return s.Event.map(this.tree.onDidChangeSelection,o)}get onMouseDblClick(){return s.Event.map(this.tree.onMouseDblClick,d)}get onPointer(){return s.Event.map(this.tree.onPointer,d)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidDispose(){return this.tree.onDidDispose}constructor(A,N,F,O,W,U={}){this.user=A,this.dataSource=W,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new s.Emitter,this._onDidChangeNodeSlowState=new s.Emitter,this.nodeMapper=new S.WeakMapper(j=>new r(j)),this.disposables=new n.DisposableStore,this.identityProvider=U.identityProvider,this.autoExpandSingleChildren=typeof U.autoExpandSingleChildren>"u"?!1:U.autoExpandSingleChildren,this.sorter=U.sorter,this.collapseByDefault=U.collapseByDefault,this.tree=this.createTree(A,N,F,O,U),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.root=a({element:void 0,parent:null,hasChildren:!0}),this.identityProvider&&(this.root=Object.assign(Object.assign({},this.root),{id:null})),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(A,N,F,O,W){const U=new k.ComposedTreeDelegate(F),j=O.map(K=>new c(K,this.nodeMapper,this._onDidChangeNodeSlowState.event)),R=v(W)||{};return new D.ObjectTree(A,N,U,j,R)}updateOptions(A={}){this.tree.updateOptions(A)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(A){this.tree.scrollTop=A}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(A,N){this.tree.layout(A,N)}style(A){this.tree.style(A)}getInput(){return this.root.element}setInput(A,N){return we(this,void 0,void 0,function*(){this.refreshPromises.forEach(O=>O.cancel()),this.refreshPromises.clear(),this.root.element=A;const F=N&&{viewState:N,focus:[],selection:[]};yield this._updateChildren(A,!0,!1,F),F&&(this.tree.setFocus(F.focus),this.tree.setSelection(F.selection)),N&&typeof N.scrollTop=="number"&&(this.scrollTop=N.scrollTop)})}_updateChildren(A=this.root.element,N=!0,F=!1,O,W){return we(this,void 0,void 0,function*(){if(typeof this.root.element>"u")throw new S.TreeError(this.user,"Tree input not set");this.root.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event));const U=this.getDataNode(A);if(yield this.refreshAndRenderNode(U,N,O,W),F)try{this.tree.rerender(U)}catch{}})}rerender(A){if(A===void 0||A===this.root.element){this.tree.rerender();return}const N=this.getDataNode(A);this.tree.rerender(N)}getNode(A=this.root.element){const N=this.getDataNode(A),F=this.tree.getNode(N===this.root?null:N);return this.nodeMapper.map(F)}collapse(A,N=!1){const F=this.getDataNode(A);return this.tree.collapse(F===this.root?null:F,N)}expand(A,N=!1){return we(this,void 0,void 0,function*(){if(typeof this.root.element>"u")throw new S.TreeError(this.user,"Tree input not set");this.root.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event));const F=this.getDataNode(A);if(this.tree.hasElement(F)&&!this.tree.isCollapsible(F)||(F.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event)),F!==this.root&&!F.refreshPromise&&!this.tree.isCollapsed(F)))return!1;const O=this.tree.expand(F===this.root?null:F,N);return F.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event)),O})}setSelection(A,N){const F=A.map(O=>this.getDataNode(O));this.tree.setSelection(F,N)}getSelection(){return this.tree.getSelection().map(N=>N.element)}setFocus(A,N){const F=A.map(O=>this.getDataNode(O));this.tree.setFocus(F,N)}getFocus(){return this.tree.getFocus().map(N=>N.element)}reveal(A,N){this.tree.reveal(this.getDataNode(A),N)}getParentElement(A){const N=this.tree.getParentElement(this.getDataNode(A));return N&&N.element}getFirstElementChild(A=this.root.element){const N=this.getDataNode(A),F=this.tree.getFirstElementChild(N===this.root?null:N);return F&&F.element}getDataNode(A){const N=this.nodes.get(A===this.root.element?null:A);if(!N)throw new S.TreeError(this.user,`Data tree node not found: ${A}`);return N}refreshAndRenderNode(A,N,F,O){return we(this,void 0,void 0,function*(){yield this.refreshNode(A,N,F),this.render(A,F,O)})}refreshNode(A,N,F){return we(this,void 0,void 0,function*(){let O;if(this.subTreeRefreshPromises.forEach((W,U)=>{!O&&h(U,A)&&(O=W.then(()=>this.refreshNode(A,N,F)))}),O)return O;if(A!==this.root&&this.tree.getNode(A).collapsed){A.hasChildren=!!this.dataSource.hasChildren(A.element),A.stale=!0;return}return this.doRefreshSubTree(A,N,F)})}doRefreshSubTree(A,N,F){return we(this,void 0,void 0,function*(){let O;A.refreshPromise=new Promise(W=>O=W),this.subTreeRefreshPromises.set(A,A.refreshPromise),A.refreshPromise.finally(()=>{A.refreshPromise=void 0,this.subTreeRefreshPromises.delete(A)});try{const W=yield this.doRefreshNode(A,N,F);A.stale=!1,yield f.Promises.settled(W.map(U=>this.doRefreshSubTree(U,N,F)))}finally{O()}})}doRefreshNode(A,N,F){return we(this,void 0,void 0,function*(){A.hasChildren=!!this.dataSource.hasChildren(A.element);let O;if(!A.hasChildren)O=Promise.resolve(i.Iterable.empty());else{const W=this.doGetChildren(A);if((0,t.isIterable)(W))O=Promise.resolve(W);else{const U=(0,f.timeout)(800);U.then(()=>{A.slow=!0,this._onDidChangeNodeSlowState.fire(A)},j=>null),O=W.finally(()=>U.cancel())}}try{const W=yield O;return this.setChildren(A,W,N,F)}catch(W){if(A!==this.root&&this.tree.hasElement(A)&&this.tree.collapse(A),(0,C.isCancellationError)(W))return[];throw W}finally{A.slow&&(A.slow=!1,this._onDidChangeNodeSlowState.fire(A))}})}doGetChildren(A){let N=this.refreshPromises.get(A);if(N)return N;const F=this.dataSource.getChildren(A.element);return(0,t.isIterable)(F)?this.processChildren(F):(N=(0,f.createCancelablePromise)(()=>we(this,void 0,void 0,function*(){return this.processChildren(yield F)})),this.refreshPromises.set(A,N),N.finally(()=>{this.refreshPromises.delete(A)}))}_onDidChangeCollapseState({node:A,deep:N}){A.element!==null&&!A.collapsed&&A.element.stale&&(N?this.collapse(A.element.element):this.refreshAndRenderNode(A.element,!1).catch(C.onUnexpectedError))}setChildren(A,N,F,O){const W=[...N];if(A.children.length===0&&W.length===0)return[];const U=new Map,j=new Map;for(const G of A.children)if(U.set(G.element,G),this.identityProvider){const Z=this.tree.isCollapsed(G);j.set(G.id,{node:G,collapsed:Z})}const R=[],K=W.map(G=>{const Z=!!this.dataSource.hasChildren(G);if(!this.identityProvider){const B=a({element:G,parent:A,hasChildren:Z});return Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(B.collapsedByDefault=!1,R.push(B)),B}const J=this.identityProvider.getId(G).toString(),X=j.get(J);if(X){const B=X.node;return U.delete(B.element),this.nodes.delete(B.element),this.nodes.set(G,B),B.element=G,B.hasChildren=Z,F?X.collapsed?(B.children.forEach(V=>b(V,Y=>this.nodes.delete(Y.element))),B.children.splice(0,B.children.length),B.stale=!0):R.push(B):Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(B.collapsedByDefault=!1,R.push(B)),B}const H=a({element:G,parent:A,id:J,hasChildren:Z});return O&&O.viewState.focus&&O.viewState.focus.indexOf(J)>-1&&O.focus.push(H),O&&O.viewState.selection&&O.viewState.selection.indexOf(J)>-1&&O.selection.push(H),O&&O.viewState.expanded&&O.viewState.expanded.indexOf(J)>-1?R.push(H):Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(H.collapsedByDefault=!1,R.push(H)),H});for(const G of U.values())b(G,Z=>this.nodes.delete(Z.element));for(const G of K)this.nodes.set(G.element,G);return A.children.splice(0,A.children.length,...K),A!==this.root&&this.autoExpandSingleChildren&&K.length===1&&R.length===0&&(K[0].collapsedByDefault=!1,R.push(K[0])),R}render(A,N,F){const O=A.children.map(U=>this.asTreeElement(U,N)),W=F&&Object.assign(Object.assign({},F),{diffIdentityProvider:F.diffIdentityProvider&&{getId(U){return F.diffIdentityProvider.getId(U.element)}}});this.tree.setChildren(A===this.root?null:A,O,W),A!==this.root&&this.tree.setCollapsible(A,A.hasChildren),this._onDidRender.fire()}asTreeElement(A,N){if(A.stale)return{element:A,collapsible:A.hasChildren,collapsed:!0};let F;return N&&N.viewState.expanded&&A.id&&N.viewState.expanded.indexOf(A.id)>-1?F=!1:F=A.collapsedByDefault,A.collapsedByDefault=void 0,{element:A,children:A.hasChildren?i.Iterable.map(A.children,O=>this.asTreeElement(O,N)):[],collapsible:A.hasChildren,collapsed:F}}processChildren(A){return this.sorter&&(A=[...A].sort(this.sorter.compare.bind(this.sorter))),A}dispose(){this.disposables.dispose()}}e.AsyncDataTree=w;class E{get element(){return{elements:this.node.element.elements.map(A=>A.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(A=>new E(A))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(A){this.node=A}}class I{constructor(A,N,F,O){this.renderer=A,this.nodeMapper=N,this.compressibleNodeMapperProvider=F,this.onDidChangeTwistieState=O,this.renderedNodes=new Map,this.disposables=[],this.templateId=A.templateId}renderTemplate(A){return{templateData:this.renderer.renderTemplate(A)}}renderElement(A,N,F,O){this.renderer.renderElement(this.nodeMapper.map(A),N,F.templateData,O)}renderCompressedElements(A,N,F,O){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(A),N,F.templateData,O)}renderTwistie(A,N){return A.slow?(N.classList.add(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!0):(N.classList.remove(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!1)}disposeElement(A,N,F,O){var W,U;(U=(W=this.renderer).disposeElement)===null||U===void 0||U.call(W,this.nodeMapper.map(A),N,F.templateData,O)}disposeCompressedElements(A,N,F,O){var W,U;(U=(W=this.renderer).disposeCompressedElements)===null||U===void 0||U.call(W,this.compressibleNodeMapperProvider().map(A),N,F.templateData,O)}disposeTemplate(A){this.renderer.disposeTemplate(A.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=(0,n.dispose)(this.disposables)}}function M(T){const A=T&&v(T);return A&&Object.assign(Object.assign({},A),{keyboardNavigationLabelProvider:A.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},A.keyboardNavigationLabelProvider),{getCompressedNodeKeyboardNavigationLabel(N){return T.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(N.map(F=>F.element))}})})}class P extends w{constructor(A,N,F,O,W,U,j={}){super(A,N,F,W,U,j),this.compressionDelegate=O,this.compressibleNodeMapper=new S.WeakMapper(R=>new E(R)),this.filter=j.filter}createTree(A,N,F,O,W){const U=new k.ComposedTreeDelegate(F),j=O.map(K=>new I(K,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),R=M(W)||{};return new D.CompressibleObjectTree(A,N,U,j,R)}asTreeElement(A,N){return Object.assign({incompressible:this.compressionDelegate.isIncompressible(A.element)},super.asTreeElement(A,N))}updateOptions(A={}){this.tree.updateOptions(A)}render(A,N){if(!this.identityProvider)return super.render(A,N);const F=J=>this.identityProvider.getId(J).toString(),O=J=>{const X=new Set;for(const H of J){const B=this.tree.getCompressedTreeNode(H===this.root?null:H);if(B.element)for(const V of B.element.elements)X.add(F(V.element))}return X},W=O(this.tree.getSelection()),U=O(this.tree.getFocus());super.render(A,N);const j=this.getSelection();let R=!1;const K=this.getFocus();let G=!1;const Z=J=>{const X=J.element;if(X)for(let H=0;H{const F=this.filter.filter(N,1),O=x(F);if(O===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return O===1})),super.processChildren(A)}}e.CompressibleAsyncDataTree=P;function x(T){return typeof T=="boolean"?T?1:0:(0,y.isFilterResult)(T)?(0,y.getVisibleState)(T.visibility):(0,y.getVisibleState)(T)}}),define(ne[317],se([1,0,9,6,2,47,17,11]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=e.SimpleWorkerServer=e.SimpleWorkerClient=e.logOnceWebWorkerWarning=void 0;const _="$initialize";let g=!1;function C(p){S.isWeb&&(g||(g=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(p.message))}e.logOnceWebWorkerWarning=C;class s{constructor(m,v,b,w){this.vsWorker=m,this.req=v,this.method=b,this.args=w,this.type=0}}class i{constructor(m,v,b,w){this.vsWorker=m,this.seq=v,this.res=b,this.err=w,this.type=1}}class n{constructor(m,v,b,w){this.vsWorker=m,this.req=v,this.eventName=b,this.arg=w,this.type=2}}class t{constructor(m,v,b){this.vsWorker=m,this.req=v,this.event=b,this.type=3}}class a{constructor(m,v){this.vsWorker=m,this.req=v,this.type=4}}class u{constructor(m){this._workerId=-1,this._handler=m,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(m){this._workerId=m}sendMessage(m,v){const b=String(++this._lastSentReq);return new Promise((w,E)=>{this._pendingReplies[b]={resolve:w,reject:E},this._send(new s(this._workerId,b,m,v))})}listen(m,v){let b=null;const w=new k.Emitter({onWillAddFirstListener:()=>{b=String(++this._lastSentReq),this._pendingEmitters.set(b,w),this._send(new n(this._workerId,b,m,v))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(b),this._send(new a(this._workerId,b)),b=null}});return w.event}handleMessage(m){!m||!m.vsWorker||this._workerId!==-1&&m.vsWorker!==this._workerId||this._handleMessage(m)}_handleMessage(m){switch(m.type){case 1:return this._handleReplyMessage(m);case 0:return this._handleRequestMessage(m);case 2:return this._handleSubscribeEventMessage(m);case 3:return this._handleEventMessage(m);case 4:return this._handleUnsubscribeEventMessage(m)}}_handleReplyMessage(m){if(!this._pendingReplies[m.seq]){console.warn("Got reply to unknown seq");return}const v=this._pendingReplies[m.seq];if(delete this._pendingReplies[m.seq],m.err){let b=m.err;m.err.$isError&&(b=new Error,b.name=m.err.name,b.message=m.err.message,b.stack=m.err.stack),v.reject(b);return}v.resolve(m.res)}_handleRequestMessage(m){const v=m.req;this._handler.handleMessage(m.method,m.args).then(w=>{this._send(new i(this._workerId,v,w,void 0))},w=>{w.detail instanceof Error&&(w.detail=(0,L.transformErrorForSerialization)(w.detail)),this._send(new i(this._workerId,v,void 0,(0,L.transformErrorForSerialization)(w)))})}_handleSubscribeEventMessage(m){const v=m.req,b=this._handler.handleEvent(m.eventName,m.arg)(w=>{this._send(new t(this._workerId,v,w))});this._pendingEvents.set(v,b)}_handleEventMessage(m){if(!this._pendingEmitters.has(m.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(m.req).fire(m.event)}_handleUnsubscribeEventMessage(m){if(!this._pendingEvents.has(m.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(m.req).dispose(),this._pendingEvents.delete(m.req)}_send(m){const v=[];if(m.type===0)for(let b=0;b{this._protocol.handleMessage(T)},T=>{w?.(T)})),this._protocol=new u({sendMessage:(T,A)=>{this._worker.postMessage(T,A)},handleMessage:(T,A)=>{if(typeof b[T]!="function")return Promise.reject(new Error("Missing method "+T+" on main thread host."));try{return Promise.resolve(b[T].apply(b,A))}catch(N){return Promise.reject(N)}},handleEvent:(T,A)=>{if(c(T)){const N=b[T].call(b,A);if(typeof N!="function")throw new Error(`Missing dynamic event ${T} on main thread host.`);return N}if(r(T)){const N=b[T];if(typeof N!="function")throw new Error(`Missing event ${T} on main thread host.`);return N}throw new Error(`Malformed event name ${T}`)}}),this._protocol.setWorkerId(this._worker.getId());let E=null;const I=globalThis.require;typeof I<"u"&&typeof I.getConfig=="function"?E=I.getConfig():typeof globalThis.requirejs<"u"&&(E=globalThis.requirejs.s.contexts._.config);const M=(0,D.getAllMethodNames)(b);this._onModuleLoaded=this._protocol.sendMessage(_,[this._worker.getId(),JSON.parse(JSON.stringify(E)),v,M]);const P=(T,A)=>this._request(T,A),x=(T,A)=>this._protocol.listen(T,A);this._lazyProxy=new Promise((T,A)=>{w=A,this._onModuleLoaded.then(N=>{T(o(N,P,x))},N=>{A(N),this._onError("Worker failed to load "+v,N)})})}getProxyObject(){return this._lazyProxy}_request(m,v){return new Promise((b,w)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(m,v).then(b,w)},w)})}_onError(m,v){console.error(m),console.info(v)}}e.SimpleWorkerClient=h;function r(p){return p[0]==="o"&&p[1]==="n"&&f.isUpperAsciiLetter(p.charCodeAt(2))}function c(p){return/^onDynamic/.test(p)&&f.isUpperAsciiLetter(p.charCodeAt(9))}function o(p,m,v){const b=I=>function(){const M=Array.prototype.slice.call(arguments,0);return m(I,M)},w=I=>function(M){return v(I,M)},E={};for(const I of p){if(c(I)){E[I]=w(I);continue}if(r(I)){E[I]=v(I,void 0);continue}E[I]=b(I)}return E}class d{constructor(m,v){this._requestHandlerFactory=v,this._requestHandler=null,this._protocol=new u({sendMessage:(b,w)=>{m(b,w)},handleMessage:(b,w)=>this._handleMessage(b,w),handleEvent:(b,w)=>this._handleEvent(b,w)})}onmessage(m){this._protocol.handleMessage(m)}_handleMessage(m,v){if(m===_)return this.initialize(v[0],v[1],v[2],v[3]);if(!this._requestHandler||typeof this._requestHandler[m]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+m));try{return Promise.resolve(this._requestHandler[m].apply(this._requestHandler,v))}catch(b){return Promise.reject(b)}}_handleEvent(m,v){if(!this._requestHandler)throw new Error("Missing requestHandler");if(c(m)){const b=this._requestHandler[m].call(this._requestHandler,v);if(typeof b!="function")throw new Error(`Missing dynamic event ${m} on request handler.`);return b}if(r(m)){const b=this._requestHandler[m];if(typeof b!="function")throw new Error(`Missing event ${m} on request handler.`);return b}throw new Error(`Malformed event name ${m}`)}initialize(m,v,b,w){this._protocol.setWorkerId(m);const M=o(w,(P,x)=>this._protocol.sendMessage(P,x),(P,x)=>this._protocol.listen(P,x));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(M),Promise.resolve((0,D.getAllMethodNames)(this._requestHandler))):(v&&(typeof v.baseUrl<"u"&&delete v.baseUrl,typeof v.paths<"u"&&typeof v.paths.vs<"u"&&delete v.paths.vs,typeof v.trustedTypesPolicy!==void 0&&delete v.trustedTypesPolicy,v.catchError=!0,globalThis.require.config(v)),new Promise((P,x)=>{(globalThis.require||Q)([b],A=>{if(this._requestHandler=A.create(M),!this._requestHandler){x(new Error("No RequestHandler!"));return}P((0,D.getAllMethodNames)(this._requestHandler))},x)}))}}e.SimpleWorkerServer=d;function l(p){return new d(p,null)}e.create=l}),define(ne[587],se([1,0,89,9,54,317]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultWorkerFactory=e.getWorkerBootstrapUrl=void 0;const S=(0,L.createTrustedTypesPolicy)("defaultWorkerFactory",{createScriptURL:i=>i});function f(i){const n=globalThis.MonacoEnvironment;if(n){if(typeof n.getWorker=="function")return n.getWorker("workerMain.js",i);if(typeof n.getWorkerUrl=="function"){const t=n.getWorkerUrl("workerMain.js",i);return new Worker(S?S.createScriptURL(t):t,{name:i})}}if(typeof Q=="function"){const t=Q.toUrl("vs/base/worker/workerMain.js"),a=_(t,i);return new Worker(S?S.createScriptURL(a):a,{name:i})}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function _(i,n){if(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,globalThis.origin.length)!==globalThis.origin){const r="vs/base/worker/defaultWorkerFactory.js",c=Q.toUrl(r).slice(0,-r.length),o=`/*${n}*/globalThis.MonacoEnvironment={baseUrl: '${c}'};const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${i}') ?? '${i}');/*${n}*/`,d=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(d)}const t=i.lastIndexOf("?"),a=i.lastIndexOf("#",t),u=t>0?new URLSearchParams(i.substring(t+1,~a?a:void 0)):new URLSearchParams;return y.COI.addSearchParam(u,!0,!0),u.toString()?`${i}?${u.toString()}#${n}`:`${i}#${n}`}e.getWorkerBootstrapUrl=_;function g(i){return typeof i.then=="function"}class C{constructor(n,t,a,u,h){this.id=t,this.label=a;const r=f(a);g(r)?this.worker=r:this.worker=Promise.resolve(r),this.postMessage(n,[]),this.worker.then(c=>{c.onmessage=function(o){u(o.data)},c.onmessageerror=h,typeof c.addEventListener=="function"&&c.addEventListener("error",h)})}getId(){return this.id}postMessage(n,t){var a;(a=this.worker)===null||a===void 0||a.then(u=>{try{u.postMessage(n,t)}catch(h){(0,k.onUnexpectedError)(h),(0,k.onUnexpectedError)(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:h}))}})}dispose(){var n;(n=this.worker)===null||n===void 0||n.then(t=>t.terminate()),this.worker=null}}class s{constructor(n){this._label=n,this._webWorkerFailedBeforeError=!1}create(n,t,a){const u=++s.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new C(n,u,this._label||"anonymous"+u,t,h=>{(0,D.logOnceWebWorkerWarning)(h),this._webWorkerFailedBeforeError=h,a(h)})}}e.DefaultWorkerFactory=s,s.LAST_WORKER_ID=0}),define(ne[588],se([1,0,13,6,2,221,20]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InMemoryStorageDatabase=e.Storage=e.StorageState=e.StorageHint=void 0;var f;(function(s){s[s.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",s[s.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"})(f||(e.StorageHint=f={}));var _;(function(s){s[s.None=0]="None",s[s.Initialized=1]="Initialized",s[s.Closed=2]="Closed"})(_||(e.StorageState=_={}));class g extends y.Disposable{constructor(i,n=Object.create(null)){super(),this.database=i,this.options=n,this._onDidChangeStorage=this._register(new k.PauseableEmitter),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=_.None,this.cache=new Map,this.flushDelayer=new L.ThrottledDelayer(g.DEFAULT_FLUSH_DELAY),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(i=>this.onDidChangeItemsExternal(i)))}onDidChangeItemsExternal(i){var n,t;this._onDidChangeStorage.pause();try{(n=i.changed)===null||n===void 0||n.forEach((a,u)=>this.acceptExternal(u,a)),(t=i.deleted)===null||t===void 0||t.forEach(a=>this.acceptExternal(a,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(i,n){if(this.state===_.Closed)return;let t=!1;(0,S.isUndefinedOrNull)(n)?t=this.cache.delete(i):this.cache.get(i)!==n&&(this.cache.set(i,n),t=!0),t&&this._onDidChangeStorage.fire({key:i,external:!0})}get(i,n){const t=this.cache.get(i);return(0,S.isUndefinedOrNull)(t)?n:t}getBoolean(i,n){const t=this.get(i);return(0,S.isUndefinedOrNull)(t)?n:t==="true"}getNumber(i,n){const t=this.get(i);return(0,S.isUndefinedOrNull)(t)?n:parseInt(t,10)}set(i,n,t=!1){return we(this,void 0,void 0,function*(){if(this.state===_.Closed)return;if((0,S.isUndefinedOrNull)(n))return this.delete(i,t);const a=(0,S.isObject)(n)||Array.isArray(n)?(0,D.stringify)(n):String(n);if(this.cache.get(i)!==a)return this.cache.set(i,a),this.pendingInserts.set(i,a),this.pendingDeletes.delete(i),this._onDidChangeStorage.fire({key:i,external:t}),this.doFlush()})}delete(i,n=!1){return we(this,void 0,void 0,function*(){if(!(this.state===_.Closed||!this.cache.delete(i)))return this.pendingDeletes.has(i)||this.pendingDeletes.add(i),this.pendingInserts.delete(i),this._onDidChangeStorage.fire({key:i,external:n}),this.doFlush()})}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}flushPending(){return we(this,void 0,void 0,function*(){if(!this.hasPending)return;const i={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(i).finally(()=>{var n;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(n=this.whenFlushedCallbacks.pop())===null||n===void 0||n()})})}doFlush(i){return we(this,void 0,void 0,function*(){return this.flushDelayer.trigger(()=>this.flushPending(),i)})}dispose(){this.flushDelayer.dispose(),super.dispose()}}e.Storage=g,g.DEFAULT_FLUSH_DELAY=100;class C{constructor(){this.onDidChangeItemsExternal=k.Event.None,this.items=new Map}updateItems(i){var n,t;return we(this,void 0,void 0,function*(){(n=i.insert)===null||n===void 0||n.forEach((a,u)=>this.items.set(u,a)),(t=i.delete)===null||t===void 0||t.forEach(a=>this.items.delete(a))})}}e.InMemoryStorageDatabase=C}),define(ne[185],se([1,0,52,7,81,44,260,13,6,2,107,11,273,24]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextAreaWrapper=e.ClipboardEventUtils=e.TextAreaInput=e.InMemoryClipboardMetadataManager=e.CopyOptions=e.TextAreaSyntethicEvents=void 0;var t;(function(c){c.Tap="-monaco-textarea-synthetic-tap"})(t||(e.TextAreaSyntethicEvents=t={})),e.CopyOptions={forceCopyWithSyntaxHighlighting:!1};class a{constructor(){this._lastState=null}set(o,d){this._lastState={lastCopiedValue:o,data:d}}get(o){return this._lastState&&this._lastState.lastCopiedValue===o?this._lastState.data:(this._lastState=null,null)}}e.InMemoryClipboardMetadataManager=a,a.INSTANCE=new a;class u{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(o){o=o||"";const d={text:o,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=o.length,d}}class h extends g.Disposable{get textAreaState(){return this._textAreaState}constructor(o,d,l,p){super(),this._host=o,this._textArea=d,this._OS=l,this._browser=p,this._onFocus=this._register(new _.Emitter),this.onFocus=this._onFocus.event,this._onBlur=this._register(new _.Emitter),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new _.Emitter),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new _.Emitter),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new _.Emitter),this.onCut=this._onCut.event,this._onPaste=this._register(new _.Emitter),this.onPaste=this._onPaste.event,this._onType=this._register(new _.Emitter),this.onType=this._onType.event,this._onCompositionStart=this._register(new _.Emitter),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new _.Emitter),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new _.Emitter),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new _.Emitter),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncTriggerCut=this._register(new f.RunOnceScheduler(()=>this._onCut.fire(),0)),this._asyncFocusGainWriteScreenReaderContent=this._register(new f.RunOnceScheduler(()=>this.writeScreenReaderContent("asyncFocusGain"),0)),this._textAreaState=i.TextAreaState.EMPTY,this._selectionChangeListener=null,this.writeScreenReaderContent("ctor"),this._hasFocus=!1,this._currentComposition=null;let m=null;this._register(this._textArea.onKeyDown(v=>{const b=new D.StandardKeyboardEvent(v);(b.keyCode===114||this._currentComposition&&b.keyCode===1)&&b.stopPropagation(),b.equals(9)&&b.preventDefault(),m=b,this._onKeyDown.fire(b)})),this._register(this._textArea.onKeyUp(v=>{const b=new D.StandardKeyboardEvent(v);this._onKeyUp.fire(b)})),this._register(this._textArea.onCompositionStart(v=>{i._debugComposition&&console.log("[compositionstart]",v);const b=new u;if(this._currentComposition){this._currentComposition=b;return}if(this._currentComposition=b,this._OS===2&&m&&m.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===v.data&&(m.code==="ArrowRight"||m.code==="ArrowLeft")){i._debugComposition&&console.log("[compositionstart] Handling long press case on macOS + arrow key",v),b.handleCompositionUpdate("x"),this._onCompositionStart.fire({data:v.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:v.data});return}this._onCompositionStart.fire({data:v.data})})),this._register(this._textArea.onCompositionUpdate(v=>{i._debugComposition&&console.log("[compositionupdate]",v);const b=this._currentComposition;if(!b)return;if(this._browser.isAndroid){const E=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),I=i.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,E);this._textAreaState=E,this._onType.fire(I),this._onCompositionUpdate.fire(v);return}const w=b.handleCompositionUpdate(v.data);this._textAreaState=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(w),this._onCompositionUpdate.fire(v)})),this._register(this._textArea.onCompositionEnd(v=>{i._debugComposition&&console.log("[compositionend]",v);const b=this._currentComposition;if(!b)return;if(this._currentComposition=null,this._browser.isAndroid){const E=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),I=i.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,E);this._textAreaState=E,this._onType.fire(I),this._onCompositionEnd.fire();return}const w=b.handleCompositionUpdate(v.data);this._textAreaState=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(w),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(v=>{if(i._debugComposition&&console.log("[input]",v),this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const b=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),w=i.TextAreaState.deduceInput(this._textAreaState,b,this._OS===2);w.replacePrevCharCnt===0&&w.text.length===1&&(s.isHighSurrogate(w.text.charCodeAt(0))||w.text.charCodeAt(0)===127)||(this._textAreaState=b,(w.text!==""||w.replacePrevCharCnt!==0||w.replaceNextCharCnt!==0||w.positionDelta!==0)&&this._onType.fire(w))})),this._register(this._textArea.onCut(v=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(v),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(v=>{this._ensureClipboardGetsEditorSelection(v)})),this._register(this._textArea.onPaste(v=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),v.preventDefault(),!v.clipboardData)return;let[b,w]=e.ClipboardEventUtils.getTextData(v.clipboardData);b&&(w=w||a.INSTANCE.get(b),this._onPaste.fire({text:b,metadata:w}))})),this._register(this._textArea.onFocus(()=>{const v=this._hasFocus;this._setHasFocus(!0),this._browser.isSafari&&!v&&this._hasFocus&&this._asyncFocusGainWriteScreenReaderContent.schedule()})),this._register(this._textArea.onBlur(()=>{this._currentComposition&&(this._currentComposition=null,this.writeScreenReaderContent("blurWithoutCompositionEnd"),this._onCompositionEnd.fire()),this._setHasFocus(!1)})),this._register(this._textArea.onSyntheticTap(()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeScreenReaderContent("tapWithoutCompositionEnd"),this._onCompositionEnd.fire())}))}_installSelectionChangeListener(){let o=0;return k.addDisposableListener(document,"selectionchange",d=>{if(S.inputLatency.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const l=Date.now(),p=l-o;if(o=l,p<5)return;const m=l-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),m<100||!this._textAreaState.selection)return;const v=this._textArea.getValue();if(this._textAreaState.value!==v)return;const b=this._textArea.getSelectionStart(),w=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===b&&this._textAreaState.selectionEnd===w)return;const E=this._textAreaState.deduceEditorPosition(b),I=this._host.deduceModelPosition(E[0],E[1],E[2]),M=this._textAreaState.deduceEditorPosition(w),P=this._host.deduceModelPosition(M[0],M[1],M[2]),x=new n.Selection(I.lineNumber,I.column,P.lineNumber,P.column);this._onSelectionChangeRequest.fire(x)})}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(o){this._hasFocus!==o&&(this._hasFocus=o,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeScreenReaderContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(o,d){this._hasFocus||(d=d.collapseSelection()),d.writeToTextArea(o,this._textArea,this._hasFocus),this._textAreaState=d}writeScreenReaderContent(o){this._currentComposition||this._setAndWriteTextAreaState(o,this._host.getScreenReaderContent())}_ensureClipboardGetsEditorSelection(o){const d=this._host.getDataToCopy(),l={version:1,isFromEmptySelection:d.isFromEmptySelection,multicursorText:d.multicursorText,mode:d.mode};a.INSTANCE.set(this._browser.isFirefox?d.text.replace(/\r\n/g,` -`):d.text,l),o.preventDefault(),o.clipboardData&&e.ClipboardEventUtils.setTextData(o.clipboardData,d.text,d.html,l)}}e.TextAreaInput=h,e.ClipboardEventUtils={getTextData(c){const o=c.getData(C.Mimes.text);let d=null;const l=c.getData("vscode-editor-data");if(typeof l=="string")try{d=JSON.parse(l),d.version!==1&&(d=null)}catch{}return o.length===0&&d===null&&c.files.length>0?[Array.prototype.slice.call(c.files,0).map(m=>m.name).join(` -`),null]:[o,d]},setTextData(c,o,d,l){c.setData(C.Mimes.text,o),typeof d=="string"&&c.setData("text/html",d),c.setData("vscode-editor-data",JSON.stringify(l))}};class r extends g.Disposable{constructor(o){super(),this._actual=o,this.onKeyDown=this._register(new y.DomEmitter(this._actual,"keydown")).event,this.onKeyUp=this._register(new y.DomEmitter(this._actual,"keyup")).event,this.onCompositionStart=this._register(new y.DomEmitter(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new y.DomEmitter(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new y.DomEmitter(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new y.DomEmitter(this._actual,"beforeinput")).event,this.onInput=this._register(new y.DomEmitter(this._actual,"input")).event,this.onCut=this._register(new y.DomEmitter(this._actual,"cut")).event,this.onCopy=this._register(new y.DomEmitter(this._actual,"copy")).event,this.onPaste=this._register(new y.DomEmitter(this._actual,"paste")).event,this.onFocus=this._register(new y.DomEmitter(this._actual,"focus")).event,this.onBlur=this._register(new y.DomEmitter(this._actual,"blur")).event,this._onSyntheticTap=this._register(new _.Emitter),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>S.inputLatency.onKeyDown())),this._register(this.onBeforeInput(()=>S.inputLatency.onBeforeInput())),this._register(this.onInput(()=>S.inputLatency.onInput())),this._register(this.onKeyUp(()=>S.inputLatency.onKeyUp())),this._register(k.addDisposableListener(this._actual,t.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const o=k.getShadowRoot(this._actual);return o?o.activeElement===this._actual:k.isInDOM(this._actual)?document.activeElement===this._actual:!1}setIgnoreSelectionChangeTime(o){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(o,d){const l=this._actual;l.value!==d&&(this.setIgnoreSelectionChangeTime("setValue"),l.value=d)}getSelectionStart(){return this._actual.selectionDirection==="backward"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection==="backward"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(o,d,l){const p=this._actual;let m=null;const v=k.getShadowRoot(p);v?m=v.activeElement:m=document.activeElement;const b=m===p,w=p.selectionStart,E=p.selectionEnd;if(b&&w===d&&E===l){L.isFirefox&&window.parent!==window&&p.focus();return}if(b){this.setIgnoreSelectionChangeTime("setSelectionRange"),p.setSelectionRange(d,l),L.isFirefox&&window.parent!==window&&p.focus();return}try{const I=k.saveParentsScrollTop(p);this.setIgnoreSelectionChangeTime("setSelectionRange"),p.focus(),p.setSelectionRange(d,l),k.restoreParentsScrollTop(p,I)}catch{}}}e.TextAreaWrapper=r}),define(ne[589],se([1,0,7,35,53]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewContentWidgets=void 0;class D extends y.ViewPart{constructor(i,n){super(i),this._viewDomNode=n,this._widgets={},this.domNode=(0,k.createFastDomNode)(document.createElement("div")),y.PartFingerprints.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=(0,k.createFastDomNode)(document.createElement("div")),y.PartFingerprints.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].onConfigurationChanged(i);return!0}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onLineMappingChanged(i){return this._updateAnchorsViewPositions(),!0}onLinesChanged(i){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(i){return this._updateAnchorsViewPositions(),!0}onLinesInserted(i){return this._updateAnchorsViewPositions(),!0}onScrollChanged(i){return!0}onZonesChanged(i){return!0}_updateAnchorsViewPositions(){const i=Object.keys(this._widgets);for(const n of i)this._widgets[n].updateAnchorViewPosition()}addWidget(i){const n=new S(this._context,this._viewDomNode,i);this._widgets[n.id]=n,n.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(n.domNode):this.domNode.appendChild(n.domNode),this.setShouldRender()}setWidgetPosition(i,n,t,a,u){this._widgets[i.getId()].setPosition(n,t,a,u),this.setShouldRender()}removeWidget(i){const n=i.getId();if(this._widgets.hasOwnProperty(n)){const t=this._widgets[n];delete this._widgets[n];const a=t.domNode.domNode;a.parentNode.removeChild(a),a.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(i){return this._widgets.hasOwnProperty(i)?this._widgets[i].suppressMouseDown:!1}onBeforeRender(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].onBeforeRender(i)}prepareRender(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].prepareRender(i)}render(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].render(i)}}e.ViewContentWidgets=D;class S{constructor(i,n,t){this._primaryAnchor=new f(null,null),this._secondaryAnchor=new f(null,null),this._context=i,this._viewDomNode=n,this._actual=t,this.domNode=(0,k.createFastDomNode)(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const a=this._context.configuration.options,u=a.get(142);this._fixedOverflowWidgets=a.get(41),this._contentWidth=u.contentWidth,this._contentLeft=u.contentLeft,this._lineHeight=a.get(65),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setDisplay("none"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(i){const n=this._context.configuration.options;if(this._lineHeight=n.get(65),i.hasChanged(142)){const t=n.get(142);this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(i,n,t){this._affinity=i,this._primaryAnchor=a(n,this._context.viewModel,this._affinity),this._secondaryAnchor=a(t,this._context.viewModel,this._affinity);function a(u,h,r){if(!u)return new f(null,null);const c=h.model.validatePosition(u);if(h.coordinatesConverter.modelPositionIsVisible(c)){const o=h.coordinatesConverter.convertModelPositionToViewPosition(c,r??void 0);return new f(u,o)}return new f(u,null)}}_getMaxWidth(){return this.allowEditorOverflow?window.innerWidth||document.documentElement.offsetWidth||document.body.offsetWidth:this._contentWidth}setPosition(i,n,t,a){this._setPosition(a,i,n),this._preference=t,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(i,n,t,a){const u=i.top,h=u,r=i.top+i.height,c=a.viewportHeight-r,o=u-t,d=h>=t,l=r,p=c>=t;let m=i.left;return m+n>a.scrollLeft+a.viewportWidth&&(m=a.scrollLeft+a.viewportWidth-n),mc){const d=o-(c-a);o-=d,t-=d}if(o=m,w=o+t<=d.height-v;return this._fixedOverflowWidgets?{fitsAbove:b,aboveTop:Math.max(c,m),fitsBelow:w,belowTop:o,left:p}:{fitsAbove:b,aboveTop:u,fitsBelow:w,belowTop:h,left:l}}_prepareRenderWidgetAtExactPositionOverflowing(i){return new _(i.top,i.left+this._contentLeft)}_getAnchorsCoordinates(i){var n,t;const a=r(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),u=((n=this._secondaryAnchor.viewPosition)===null||n===void 0?void 0:n.lineNumber)===((t=this._primaryAnchor.viewPosition)===null||t===void 0?void 0:t.lineNumber)?this._secondaryAnchor.viewPosition:null,h=r(u,this._affinity,this._lineHeight);return{primary:a,secondary:h};function r(c,o,d){if(!c)return null;const l=i.visibleRangeForPosition(c);if(!l)return null;const p=c.column===1&&o===3?0:l.left,m=i.getVerticalOffsetForLineNumber(c.lineNumber)-i.scrollTop;return new g(m,p,d)}}_reduceAnchorCoordinates(i,n,t){if(!n)return i;const a=this._context.configuration.options.get(49);let u=n.left;return ui.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(i){this._renderData=this._prepareRenderWidget(i)}render(i){if(!this._renderData){this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden")),typeof this._actual.afterRender=="function"&&C(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+i.scrollTop-i.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),typeof this._actual.afterRender=="function"&&C(this._actual.afterRender,this._actual,this._renderData.position)}}class f{constructor(i,n){this.modelPosition=i,this.viewPosition=n}}class _{constructor(i,n){this.top=i,this.left=n,this._coordinateBrand=void 0}}class g{constructor(i,n,t){this.top=i,this.left=n,this.height=t,this._anchorCoordinateBrand=void 0}}function C(s,i,...n){try{return s.call(i,...n)}catch{return null}}}),define(ne[590],se([1,0,130,2,42]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorSash=void 0;class D extends k.Disposable{constructor(f,_,g){super(),this._options=f,this._domNode=_,this._dimensions=g,this._sashRatio=(0,y.observableValue)("sashRatio",void 0),this.sashLeft=(0,y.derived)(C=>{var s;const i=(s=this._sashRatio.read(C))!==null&&s!==void 0?s:this._options.splitViewDefaultRatio.read(C);return this._computeSashLeft(i,C)}),this._sash=this._register(new L.Sash(this._domNode,{getVerticalSashTop:C=>0,getVerticalSashLeft:C=>this.sashLeft.get(),getVerticalSashHeight:C=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(C=>{const s=this._dimensions.width.get(),i=this._computeSashLeft((this._startSashPosition+(C.currentX-C.startX))/s,void 0);this._sashRatio.set(i/s,void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._sashRatio.set(void 0,void 0))),this._register((0,y.autorun)(C=>{const s=this._options.enableSplitViewResizing.read(C);this._sash.state=s?3:0,this.sashLeft.read(C),this._sash.layout()}))}setBoundarySashes(f){this._sash.orthogonalEndSash=f.bottom}_computeSashLeft(f,_){const g=this._dimensions.width.read(_),C=Math.floor(this._options.splitViewDefaultRatio.read(_)*g),s=this._options.enableSplitViewResizing.read(_)?Math.floor(f*g):C,i=100;return g<=i*2?C:sg-i?g-i:s}}e.DiffEditorSash=D}),define(ne[318],se([1,0,13,19,2,42,102,66,276,109,179,278]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnchangedRegion=e.DiffMapping=e.DiffState=e.DiffEditorViewModel=void 0;class i extends y.Disposable{setActiveMovedText(c){this._activeMovedText.set(c,void 0)}constructor(c,o,d){super(),this.model=c,this._options=o,this._isDiffUpToDate=(0,D.observableValue)("isDiffUpToDate",!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=(0,D.observableValue)("diff",void 0),this.diff=this._diff,this._unchangedRegions=(0,D.observableValue)("unchangedRegion",{regions:[],originalDecorationIds:[],modifiedDecorationIds:[]}),this.unchangedRegions=(0,D.derived)(b=>this._options.hideUnchangedRegions.read(b)?this._unchangedRegions.read(b).regions:((0,D.transaction)(w=>{for(const E of this._unchangedRegions.get().regions)E.collapseAll(w)}),[])),this.movedTextToCompare=(0,D.observableValue)("movedTextToCompare",void 0),this._activeMovedText=(0,D.observableValue)("activeMovedText",void 0),this._hoveredMovedText=(0,D.observableValue)("hoveredMovedText",void 0),this.activeMovedText=(0,D.derived)(b=>{var w,E;return(E=(w=this.movedTextToCompare.read(b))!==null&&w!==void 0?w:this._hoveredMovedText.read(b))!==null&&E!==void 0?E:this._activeMovedText.read(b)}),this._cancellationTokenSource=new k.CancellationTokenSource,this._register((0,y.toDisposable)(()=>this._cancellationTokenSource.cancel()));const l=(0,D.observableSignal)("contentChangedSignal"),p=this._register(new L.RunOnceScheduler(()=>l.trigger(void 0),200)),m=(b,w,E)=>{const I=a.fromDiffs(b.changes,c.original.getLineCount(),c.modified.getLineCount(),this._options.hideUnchangedRegionsminimumLineCount.read(E),this._options.hideUnchangedRegionsContextLineCount.read(E)),M=this._unchangedRegions.get(),P=M.originalDecorationIds.map(N=>c.original.getDecorationRange(N)).filter(N=>!!N).map(N=>f.LineRange.fromRange(N)),x=M.modifiedDecorationIds.map(N=>c.modified.getDecorationRange(N)).filter(N=>!!N).map(N=>f.LineRange.fromRange(N)),T=c.original.deltaDecorations(M.originalDecorationIds,I.map(N=>({range:N.originalRange.toInclusiveRange(),options:{description:"unchanged"}}))),A=c.modified.deltaDecorations(M.modifiedDecorationIds,I.map(N=>({range:N.modifiedRange.toInclusiveRange(),options:{description:"unchanged"}})));for(const N of I)for(let F=0;F{if(this._diff.get()){const E=C.TextEditInfo.fromModelContentChanges(b.changes),I=(this._lastDiff,c.original,c.modified,void 0);I&&(this._lastDiff=I,(0,D.transaction)(M=>{this._diff.set(n.fromDiffResult(this._lastDiff),M),m(I,M);const P=this.movedTextToCompare.get();this.movedTextToCompare.set(P?this._lastDiff.moves.find(x=>x.lineRangeMapping.modified.intersect(P.lineRangeMapping.modified)):void 0,M)}))}p.schedule()})),this._register(c.original.onDidChangeContent(b=>{if(this._diff.get()){const E=C.TextEditInfo.fromModelContentChanges(b.changes),I=(this._lastDiff,c.original,c.modified,void 0);I&&(this._lastDiff=I,(0,D.transaction)(M=>{this._diff.set(n.fromDiffResult(this._lastDiff),M),m(I,M);const P=this.movedTextToCompare.get();this.movedTextToCompare.set(P?this._lastDiff.moves.find(x=>x.lineRangeMapping.modified.intersect(P.lineRangeMapping.modified)):void 0,M)}))}p.schedule()}));const v=(0,D.observableSignalFromEvent)("documentDiffProviderOptionChanged",d.onDidChange);this._register((0,D.autorunWithStore)((b,w)=>we(this,void 0,void 0,function*(){var E,I;this._options.hideUnchangedRegionsminimumLineCount.read(b),this._options.hideUnchangedRegionsContextLineCount.read(b),p.cancel(),l.read(b),v.read(b),(0,S.readHotReloadableExport)(_.AdvancedLinesDiffComputer,b),this._isDiffUpToDate.set(!1,void 0);let M=[];w.add(c.original.onDidChangeContent(T=>{const A=C.TextEditInfo.fromModelContentChanges(T.changes);M=(0,s.combineTextEditInfos)(M,A)}));let P=[];w.add(c.modified.onDidChangeContent(T=>{const A=C.TextEditInfo.fromModelContentChanges(T.changes);P=(0,s.combineTextEditInfos)(P,A)}));let x=yield d.computeDiff(c.original,c.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(b),maxComputationTimeMs:this._options.maxComputationTimeMs.read(b),computeMoves:this._options.showMoves.read(b)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||(x=(E=(c.original,c.modified,void 0))!==null&&E!==void 0?E:x,x=(I=(c.original,c.modified,void 0))!==null&&I!==void 0?I:x,(0,D.transaction)(T=>{m(x,T),this._lastDiff=x;const A=n.fromDiffResult(x);this._diff.set(A,T),this._isDiffUpToDate.set(!0,T);const N=this.movedTextToCompare.get();this.movedTextToCompare.set(N?this._lastDiff.moves.find(F=>F.lineRangeMapping.modified.intersect(N.lineRangeMapping.modified)):void 0,T)}))})))}ensureModifiedLineIsVisible(c,o){var d;if(((d=this.diff.get())===null||d===void 0?void 0:d.mappings.length)===0)return;const l=this._unchangedRegions.get().regions;for(const p of l)if(p.getHiddenModifiedRange(void 0).contains(c)){p.showModifiedLine(c,o);return}}ensureOriginalLineIsVisible(c,o){var d;if(((d=this.diff.get())===null||d===void 0?void 0:d.mappings.length)===0)return;const l=this._unchangedRegions.get().regions;for(const p of l)if(p.getHiddenOriginalRange(void 0).contains(c)){p.showOriginalLine(c,o);return}}waitForDiff(){return we(this,void 0,void 0,function*(){yield(0,D.waitForState)(this.isDiffUpToDate,c=>c)})}serializeState(){return{collapsedRegions:this._unchangedRegions.get().regions.map(o=>({range:o.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(c){const o=c.collapsedRegions.map(l=>f.LineRange.deserialize(l.range)),d=this._unchangedRegions.get();(0,D.transaction)(l=>{for(const p of d.regions)for(const m of o)if(p.modifiedRange.intersect(m)){p.setHiddenModifiedRange(m,l);break}})}}e.DiffEditorViewModel=i;class n{static fromDiffResult(c){return new n(c.changes.map(o=>new t(o)),c.moves||[],c.identical,c.quitEarly)}constructor(c,o,d,l){this.mappings=c,this.movedTexts=o,this.identical=d,this.quitEarly=l}}e.DiffState=n;class t{constructor(c){this.lineRangeMapping=c}}e.DiffMapping=t;class a{static fromDiffs(c,o,d,l,p){const m=g.LineRangeMapping.inverse(c,o,d),v=[];for(const b of m){let w=b.originalRange.startLineNumber,E=b.modifiedRange.startLineNumber,I=b.originalRange.length;const M=w===1&&E===1,P=w+I===o+1&&E+I===d+1;(M||P)&&I>=p+l?(M&&!P&&(I-=p),P&&!M&&(w+=p,E+=p,I-=p),v.push(new a(w,E,I,0,0))):I>=p*2+l&&(w+=p,E+=p,I-=p*2,v.push(new a(w,E,I,0,0)))}return v}get originalRange(){return f.LineRange.ofLength(this.originalLineNumber,this.lineCount)}get modifiedRange(){return f.LineRange.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(c,o,d,l,p){this.originalLineNumber=c,this.modifiedLineNumber=o,this.lineCount=d,this._visibleLineCountTop=(0,D.observableValue)("visibleLineCountTop",0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=(0,D.observableValue)("visibleLineCountBottom",0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=(0,D.derived)(m=>this.visibleLineCountTop.read(m)+this.visibleLineCountBottom.read(m)===this.lineCount&&!this.isDragged.read(m)),this.isDragged=(0,D.observableValue)("isDragged",!1),this._visibleLineCountTop.set(l,void 0),this._visibleLineCountBottom.set(p,void 0)}shouldHideControls(c){return this._shouldHideControls.read(c)}getHiddenOriginalRange(c){return f.LineRange.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(c),this.lineCount-this._visibleLineCountTop.read(c)-this._visibleLineCountBottom.read(c))}getHiddenModifiedRange(c){return f.LineRange.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(c),this.lineCount-this._visibleLineCountTop.read(c)-this._visibleLineCountBottom.read(c))}setHiddenModifiedRange(c,o){const d=c.startLineNumber-this.modifiedLineNumber,l=this.modifiedLineNumber+this.lineCount-c.endLineNumberExclusive;this.setState(d,l,o)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(c=10,o){const d=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+c,d),o)}showMoreBelow(c=10,o){const d=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+c,d),o)}showAll(c){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),c)}showModifiedLine(c,o){const d=c+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),l=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-c;d0&&(h[0]===65279||h[0]===65534)?i(t,a,u):S().decode(h)}e.decodeUTF16LE=s;function i(t,a,u){const h=[];let r=0;for(let c=0;c=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=a;return}for(let h=0;ha});class g{static create(){return new g}constructor(){}createLineBreaksComputer(u,h,r,c,o){const d=[],l=[];return{addRequest:(p,m,v)=>{d.push(p),l.push(m)},finalize:()=>C(d,u,h,r,c,o,l)}}}e.DOMLineBreaksComputerFactory=g;function C(a,u,h,r,c,o,d){var l;function p(j){const R=d[j];if(R){const K=f.LineInjectedText.applyInjectedText(a[j],R),G=R.map(J=>J.options),Z=R.map(J=>J.column-1);return new S.ModelLineProjectionData(Z,G,[K.length],[],0)}else return null}if(r===-1){const j=[];for(let R=0,K=a.length;Rm?(K=0,G=0):Z=m-H}const J=R.substr(K),X=s(J,G,h,Z,I,w);M[j]=K,P[j]=G,x[j]=J,T[j]=X[0],A[j]=X[1]}const N=I.build(),F=(l=_?.createHTML(N))!==null&&l!==void 0?l:N;E.innerHTML=F,E.style.position="absolute",E.style.top="10000",o==="keepAll"?(E.style.wordBreak="keep-all",E.style.overflowWrap="anywhere"):(E.style.wordBreak="inherit",E.style.overflowWrap="break-word"),document.body.appendChild(E);const O=document.createRange(),W=Array.prototype.slice.call(E.children,0),U=[];for(let j=0;jY.options),B=V.map(Y=>Y.column-1)):(H=null,B=null),U[j]=new S.ModelLineProjectionData(B,H,K,X,Z)}return document.body.removeChild(E),U}function s(a,u,h,r,c,o){if(o!==0){const w=String(o);c.appendString('
    ');const d=a.length;let l=u,p=0;const m=[],v=[];let b=0");for(let w=0;w"),m[w]=p,v[w]=l;const E=b;b=w+1"),m[a.length]=p,v[a.length]=l,c.appendString("
    "),[m,v]}function i(a,u,h,r){if(h.length<=1)return null;const c=Array.prototype.slice.call(u.children,0),o=[];try{n(a,c,r,0,null,h.length-1,null,o)}catch(d){return console.log(d),null}return o.length===0?null:(o.push(h.length),o)}function n(a,u,h,r,c,o,d,l){if(r===o||(c=c||t(a,u,h[r],h[r+1]),d=d||t(a,u,h[o],h[o+1]),Math.abs(c[0].top-d[0].top)<=.1))return;if(r+1===o){l.push(o);return}const p=r+(o-r)/2|0,m=t(a,u,h[p],h[p+1]);n(a,u,h,r,c,p,m,l),n(a,u,h,p,m,o,d,l)}function t(a,u,h,r){return a.setStart(u[h/16384|0].firstChild,h%16384),a.setEnd(u[r/16384|0].firstChild,r%16384),a.getClientRects()}}),define(ne[229],se([1,0,35,89,9,93]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VisibleLinesCollection=e.RenderedLinesCollection=void 0;class S{constructor(C){this._createLine=C,this._set(1,[])}flush(){this._set(1,[])}_set(C,s){this._lines=s,this._rendLineNumberStart=C}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(C){const s=C-this._rendLineNumberStart;if(s<0||s>=this._lines.length)throw new y.BugIndicatingError("Illegal value for lineNumber");return this._lines[s]}onLinesDeleted(C,s){if(this.getCount()===0)return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(sn)return null;let t=0,a=0;for(let h=i;h<=n;h++){const r=h-this._rendLineNumberStart;C<=h&&h<=s&&(a===0?(t=r,a=1):a++)}if(C=n&&u<=t&&(this._lines[u-this._rendLineNumberStart].onContentChanged(),a=!0);return a}onLinesInserted(C,s){if(this.getCount()===0)return null;const i=s-C+1,n=this.getStartLineNumber(),t=this.getEndLineNumber();if(C<=n)return this._rendLineNumberStart+=i,null;if(C>t)return null;if(i+C>t)return this._lines.splice(C-this._rendLineNumberStart,t-C+1);const a=[];for(let o=0;oi)continue;const h=Math.max(s,u.fromLineNumber),r=Math.min(i,u.toLineNumber);for(let c=h;c<=r;c++){const o=c-this._rendLineNumberStart;this._lines[o].onTokensChanged(),n=!0}}return n}}e.RenderedLinesCollection=S;class f{constructor(C){this._host=C,this.domNode=this._createDomNode(),this._linesCollection=new S(()=>this._host.createVisibleLine())}_createDomNode(){const C=(0,L.createFastDomNode)(document.createElement("div"));return C.setClassName("view-layer"),C.setPosition("absolute"),C.domNode.setAttribute("role","presentation"),C.domNode.setAttribute("aria-hidden","true"),C}onConfigurationChanged(C){return!!C.hasChanged(142)}onFlushed(C){return this._linesCollection.flush(),!0}onLinesChanged(C){return this._linesCollection.onLinesChanged(C.fromLineNumber,C.count)}onLinesDeleted(C){const s=this._linesCollection.onLinesDeleted(C.fromLineNumber,C.toLineNumber);if(s)for(let i=0,n=s.length;is){const a=s,u=Math.min(i,t.rendLineNumberStart-1);a<=u&&(this._insertLinesBefore(t,a,u,n,s),t.linesLength+=u-a+1)}else if(t.rendLineNumberStart0&&(this._removeLinesBefore(t,a),t.linesLength-=a)}if(t.rendLineNumberStart=s,t.rendLineNumberStart+t.linesLength-1i){const a=Math.max(0,i-t.rendLineNumberStart+1),h=t.linesLength-1-a+1;h>0&&(this._removeLinesAfter(t,h),t.linesLength-=h)}return this._finishRendering(t,!1,n),t}_renderUntouchedLines(C,s,i,n,t){const a=C.rendLineNumberStart,u=C.lines;for(let h=s;h<=i;h++){const r=a+h;u[h].layoutLine(r,n[r-t])}}_insertLinesBefore(C,s,i,n,t){const a=[];let u=0;for(let h=s;h<=i;h++)a[u++]=this.host.createVisibleLine();C.lines=a.concat(C.lines)}_removeLinesBefore(C,s){for(let i=0;i=0;u--){const h=C.lines[u];n[u]&&(h.setDomNode(a),a=a.previousSibling)}}_finishRenderingInvalidLines(C,s,i){const n=document.createElement("div");_._ttPolicy&&(s=_._ttPolicy.createHTML(s)),n.innerHTML=s;for(let t=0;tg}),_._sb=new D.StringBuilder(1e5)}),define(ne[592],se([1,0,35,59,229,53]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarginViewOverlays=e.ContentViewOverlays=e.ViewOverlayLine=e.ViewOverlays=void 0;class S extends D.ViewPart{constructor(s){super(s),this._visibleLines=new y.VisibleLinesCollection(this),this.domNode=this._visibleLines.domNode;const n=this._context.configuration.options.get(49);(0,k.applyFontInfo)(this.domNode,n),this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let s=0,i=this._dynamicOverlays.length;sn.shouldRender());for(let n=0,t=i.length;n'),t.appendString(a),t.appendString("
    "),!0)}layoutLine(s,i){this._domNode&&(this._domNode.setTop(i),this._domNode.setHeight(this._lineHeight))}}e.ViewOverlayLine=f;class _ extends S{constructor(s){super(s);const n=this._context.configuration.options.get(142);this._contentWidth=n.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(s){const n=this._context.configuration.options.get(142);return this._contentWidth=n.contentWidth,super.onConfigurationChanged(s)||!0}onScrollChanged(s){return super.onScrollChanged(s)||s.scrollWidthChanged}_viewOverlaysRender(s){super._viewOverlaysRender(s),this.domNode.setWidth(Math.max(s.scrollWidth,this._contentWidth))}}e.ContentViewOverlays=_;class g extends S{constructor(s){super(s);const i=this._context.configuration.options,n=i.get(142);this._contentLeft=n.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),(0,k.applyFontInfo)(this.domNode,i.get(49))}onConfigurationChanged(s){const i=this._context.configuration.options;(0,k.applyFontInfo)(this.domNode,i.get(49));const n=i.get(142);return this._contentLeft=n.contentLeft,super.onConfigurationChanged(s)||!0}onScrollChanged(s){return super.onScrollChanged(s)||s.scrollHeightChanged}_viewOverlaysRender(s){super._viewOverlaysRender(s);const i=Math.min(s.scrollHeight,1e6);this.domNode.setHeight(i),this.domNode.setWidth(this._contentLeft)}}e.MarginViewOverlays=g}),define(ne[319],se([1,0,140,93]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compressConsecutiveTextChanges=e.TextChange=void 0;function y(_){return _.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class D{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(g,C,s,i){this.oldPosition=g,this.oldText=C,this.newPosition=s,this.newText=i}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} "${y(this.newText)}")`:this.newText.length===0?`(delete@${this.oldPosition} "${y(this.oldText)}")`:`(replace@${this.oldPosition} "${y(this.oldText)}" with "${y(this.newText)}")`}static _writeStringSize(g){return 4+2*g.length}static _writeString(g,C,s){const i=C.length;L.writeUInt32BE(g,i,s),s+=4;for(let n=0;ns&&(s=n)}return s}else{if(typeof D=="string")return _?D==="*"?5:D===f?10:0:0;if(D){const{language:s,pattern:i,scheme:n,hasAccessToAllModels:t,notebookType:a}=D;if(!_&&!t)return 0;a&&g&&(S=g);let u=0;if(n)if(n===S.scheme)u=10;else if(n==="*")u=5;else return 0;if(s)if(s===f)u=10;else if(s==="*")u=Math.max(u,5);else return 0;if(a)if(a===C)u=10;else if(a==="*"&&C!==void 0)u=Math.max(u,5);else return 0;if(i){let h;if(typeof i=="string"?h=i:h=Object.assign(Object.assign({},i),{base:(0,k.normalize)(i.base)}),h===S.fsPath||(0,L.match)(h,S.fsPath))u=10;else return 0}return u}else return 0}}e.score=y}),define(ne[594],se([1,0,6,2,48,593]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeatureRegistry=void 0;function S(C){return typeof C=="string"?!1:Array.isArray(C)?C.every(S):!!C.exclusive}class f{constructor(s,i,n,t){this.uri=s,this.languageId=i,this.notebookUri=n,this.notebookType=t}equals(s){var i,n;return this.notebookType===s.notebookType&&this.languageId===s.languageId&&this.uri.toString()===s.uri.toString()&&((i=this.notebookUri)===null||i===void 0?void 0:i.toString())===((n=s.notebookUri)===null||n===void 0?void 0:n.toString())}}class _{constructor(s){this._notebookInfoResolver=s,this._clock=0,this._entries=[],this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event}register(s,i){let n={selector:s,provider:i,_score:-1,_time:this._clock++};return this._entries.push(n),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,k.toDisposable)(()=>{if(n){const t=this._entries.indexOf(n);t>=0&&(this._entries.splice(t,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),n=void 0)}})}has(s){return this.all(s).length>0}all(s){if(!s)return[];this._updateScores(s);const i=[];for(const n of this._entries)n._score>0&&i.push(n.provider);return i}ordered(s){const i=[];return this._orderedForEach(s,n=>i.push(n.provider)),i}orderedGroups(s){const i=[];let n,t;return this._orderedForEach(s,a=>{n&&t===a._score?n.push(a.provider):(t=a._score,n=[a.provider],i.push(n))}),i}_orderedForEach(s,i){this._updateScores(s);for(const n of this._entries)n._score>0&&i(n)}_updateScores(s){var i,n;const t=(i=this._notebookInfoResolver)===null||i===void 0?void 0:i.call(this,s.uri),a=t?new f(s.uri,s.getLanguageId(),t.uri,t.type):new f(s.uri,s.getLanguageId(),void 0,void 0);if(!(!((n=this._lastCandidate)===null||n===void 0)&&n.equals(a))){this._lastCandidate=a;for(const u of this._entries)if(u._score=(0,D.score)(u.selector,a.uri,a.languageId,(0,y.shouldSynchronizeModel)(s),a.notebookUri,a.notebookType),S(u.selector)&&u._score>0){for(const h of this._entries)h._score=0;u._score=1e3;break}this._entries.sort(_._compareByScoreAndTime)}}static _compareByScoreAndTime(s,i){return s._scorei._score?-1:g(s.selector)&&!g(i.selector)?1:!g(s.selector)&&g(i.selector)?-1:s._timei._time?-1:0}}e.LanguageFeatureRegistry=_;function g(C){return typeof C=="string"?!1:Array.isArray(C)?C.some(g):!!C.isBuiltin}}),define(ne[230],se([1,0,11,93,5]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketsUtils=e.RichEditBrackets=e.RichEditBracket=void 0;class D{constructor(o,d,l,p,m,v){this._richEditBracketBrand=void 0,this.languageId=o,this.index=d,this.open=l,this.close=p,this.forwardRegex=m,this.reversedRegex=v,this._openSet=D._toSet(this.open),this._closeSet=D._toSet(this.close)}isOpen(o){return this._openSet.has(o)}isClose(o){return this._closeSet.has(o)}static _toSet(o){const d=new Set;for(const l of o)d.add(l);return d}}e.RichEditBracket=D;function S(c){const o=c.length;c=c.map(v=>[v[0].toLowerCase(),v[1].toLowerCase()]);const d=[];for(let v=0;v{const[w,E]=v,[I,M]=b;return w===I||w===M||E===I||E===M},p=(v,b)=>{const w=Math.min(v,b),E=Math.max(v,b);for(let I=0;I0&&m.push({open:b,close:w})}return m}class f{constructor(o,d){this._richEditBracketsBrand=void 0;const l=S(d);this.brackets=l.map((p,m)=>new D(o,m,p.open,p.close,s(p.open,p.close,l,m),i(p.open,p.close,l,m))),this.forwardRegex=n(this.brackets),this.reversedRegex=t(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const p of this.brackets){for(const m of p.open)this.textIsBracket[m]=p,this.textIsOpenBracket[m]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,m.length);for(const m of p.close)this.textIsBracket[m]=p,this.textIsOpenBracket[m]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,m.length)}}}e.RichEditBrackets=f;function _(c,o,d,l){for(let p=0,m=o.length;p=0&&l.push(b);for(const b of v.close)b.indexOf(c)>=0&&l.push(b)}}function g(c,o){return c.length-o.length}function C(c){if(c.length<=1)return c;const o=[],d=new Set;for(const l of c)d.has(l)||(o.push(l),d.add(l));return o}function s(c,o,d,l){let p=[];p=p.concat(c),p=p.concat(o);for(let m=0,v=p.length;m=0;v--)p[m++]=l.charCodeAt(v);return k.getPlatformTextDecoder().decode(p)}let o=null,d=null;return function(p){return o!==p&&(o=p,d=c(o)),d}}();class r{static _findPrevBracketInText(o,d,l,p){const m=l.match(o);if(!m)return null;const v=l.length-(m.index||0),b=m[0].length,w=p+v;return new y.Range(d,w-b+1,d,w+1)}static findPrevBracketInRange(o,d,l,p,m){const b=h(l).substring(l.length-m,l.length-p);return this._findPrevBracketInText(o,d,b,p)}static findNextBracketInText(o,d,l,p){const m=l.match(o);if(!m)return null;const v=m.index||0,b=m[0].length;if(b===0)return null;const w=p+v;return new y.Range(d,w+1,d,w+1+b)}static findNextBracketInRange(o,d,l,p,m){const v=l.substring(p,m);return this.findNextBracketInText(o,d,v,p)}}e.BracketsUtils=r}),define(ne[595],se([1,0,14,125,230]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketElectricCharacterSupport=void 0;class D{constructor(f){this._richEditBrackets=f}getElectricCharacters(){const f=[];if(this._richEditBrackets)for(const _ of this._richEditBrackets.brackets)for(const g of _.close){const C=g.charAt(g.length-1);f.push(C)}return(0,L.distinct)(f)}onElectricCharacter(f,_,g){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const C=_.findTokenIndexAtOffset(g-1);if((0,k.ignoreBracketsInToken)(_.getStandardTokenType(C)))return null;const s=this._richEditBrackets.reversedRegex,i=_.getLineContent().substring(0,g-1)+f,n=y.BracketsUtils.findPrevBracketInRange(s,1,i,0,i.length);if(!n)return null;const t=i.substring(n.startColumn-1,n.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[t])return null;const u=_.getActualLineContentBefore(n.startColumn-1);return/^\s*$/.test(u)?{matchOpenBracket:t}:null}}e.BracketElectricCharacterSupport=D}),define(ne[596],se([1,0,14,6,2,5,125,230,514]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairsTextModelPart=void 0;class g extends y.Disposable{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(a,u){super(),this.textModel=a,this.languageConfigurationService=u,this.bracketPairsTree=this._register(new y.MutableDisposable),this.onDidChangeEmitter=new k.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange(h=>{var r;(!h.languageId||!((r=this.bracketPairsTree.value)===null||r===void 0)&&r.object.didLanguageChange(h.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}))}handleDidChangeOptions(a){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(a){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(a){var u;(u=this.bracketPairsTree.value)===null||u===void 0||u.object.handleContentChanged(a)}handleDidChangeBackgroundTokenizationState(){var a;(a=this.bracketPairsTree.value)===null||a===void 0||a.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(a){var u;(u=this.bracketPairsTree.value)===null||u===void 0||u.object.handleDidChangeTokens(a)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const a=new y.DisposableStore;this.bracketPairsTree.value=C(a.add(new _.BracketPairsTree(this.textModel,u=>this.languageConfigurationService.getLanguageConfiguration(u))),a),a.add(this.bracketPairsTree.value.object.onDidChange(u=>this.onDidChangeEmitter.fire(u))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(a){var u;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getBracketPairsInRange(a,!1))||L.CallbackIterable.empty}getBracketPairsInRangeWithMinIndentation(a){var u;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getBracketPairsInRange(a,!0))||L.CallbackIterable.empty}getBracketsInRange(a,u=!1){var h;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((h=this.bracketPairsTree.value)===null||h===void 0?void 0:h.object.getBracketsInRange(a,u))||L.CallbackIterable.empty}findMatchingBracketUp(a,u,h){const r=this.textModel.validatePosition(u),c=this.textModel.getLanguageIdAtPosition(r.lineNumber,r.column);if(this.canBuildAST){const o=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew.getClosingBracketInfo(a);if(!o)return null;const d=this.getBracketPairsInRange(D.Range.fromPositions(u,u)).findLast(l=>o.closes(l.openingBracketInfo));return d?d.openingBracketRange:null}else{const o=a.toLowerCase(),d=this.languageConfigurationService.getLanguageConfiguration(c).brackets;if(!d)return null;const l=d.textIsBracket[o];return l?n(this._findMatchingBracketUp(l,r,s(h))):null}}matchBracket(a,u){if(this.canBuildAST){const h=this.getBracketPairsInRange(D.Range.fromPositions(a,a)).filter(r=>r.closingBracketRange!==void 0&&(r.openingBracketRange.containsPosition(a)||r.closingBracketRange.containsPosition(a))).findLastMaxBy((0,L.compareBy)(r=>r.openingBracketRange.containsPosition(a)?r.openingBracketRange:r.closingBracketRange,D.Range.compareRangesUsingStarts));return h?[h.openingBracketRange,h.closingBracketRange]:null}else{const h=s(u);return this._matchBracket(this.textModel.validatePosition(a),h)}}_establishBracketSearchOffsets(a,u,h,r){const c=u.getCount(),o=u.getLanguageId(r);let d=Math.max(0,a.column-1-h.maxBracketLength);for(let p=r-1;p>=0;p--){const m=u.getEndOffset(p);if(m<=d)break;if((0,S.ignoreBracketsInToken)(u.getStandardTokenType(p))||u.getLanguageId(p)!==o){d=m;break}}let l=Math.min(u.getLineContent().length,a.column-1+h.maxBracketLength);for(let p=r+1;p=l)break;if((0,S.ignoreBracketsInToken)(u.getStandardTokenType(p))||u.getLanguageId(p)!==o){l=m;break}}return{searchStartOffset:d,searchEndOffset:l}}_matchBracket(a,u){const h=a.lineNumber,r=this.textModel.tokenization.getLineTokens(h),c=this.textModel.getLineContent(h),o=r.findTokenIndexAtOffset(a.column-1);if(o<0)return null;const d=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId(o)).brackets;if(d&&!(0,S.ignoreBracketsInToken)(r.getStandardTokenType(o))){let{searchStartOffset:l,searchEndOffset:p}=this._establishBracketSearchOffsets(a,r,d,o),m=null;for(;;){const v=f.BracketsUtils.findNextBracketInRange(d.forwardRegex,h,c,l,p);if(!v)break;if(v.startColumn<=a.column&&a.column<=v.endColumn){const b=c.substring(v.startColumn-1,v.endColumn-1).toLowerCase(),w=this._matchFoundBracket(v,d.textIsBracket[b],d.textIsOpenBracket[b],u);if(w){if(w instanceof i)return null;m=w}}l=v.endColumn-1}if(m)return m}if(o>0&&r.getStartOffset(o)===a.column-1){const l=o-1,p=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId(l)).brackets;if(p&&!(0,S.ignoreBracketsInToken)(r.getStandardTokenType(l))){const{searchStartOffset:m,searchEndOffset:v}=this._establishBracketSearchOffsets(a,r,p,l),b=f.BracketsUtils.findPrevBracketInRange(p.reversedRegex,h,c,m,v);if(b&&b.startColumn<=a.column&&a.column<=b.endColumn){const w=c.substring(b.startColumn-1,b.endColumn-1).toLowerCase(),E=this._matchFoundBracket(b,p.textIsBracket[w],p.textIsOpenBracket[w],u);if(E)return E instanceof i?null:E}}}return null}_matchFoundBracket(a,u,h,r){if(!u)return null;const c=h?this._findMatchingBracketDown(u,a.getEndPosition(),r):this._findMatchingBracketUp(u,a.getStartPosition(),r);return c?c instanceof i?c:[a,c]:null}_findMatchingBracketUp(a,u,h){const r=a.languageId,c=a.reversedRegex;let o=-1,d=0;const l=(p,m,v,b)=>{for(;;){if(h&&++d%100===0&&!h())return i.INSTANCE;const w=f.BracketsUtils.findPrevBracketInRange(c,p,m,v,b);if(!w)break;const E=m.substring(w.startColumn-1,w.endColumn-1).toLowerCase();if(a.isOpen(E)?o++:a.isClose(E)&&o--,o===0)return w;b=w.startColumn-1}return null};for(let p=u.lineNumber;p>=1;p--){const m=this.textModel.tokenization.getLineTokens(p),v=m.getCount(),b=this.textModel.getLineContent(p);let w=v-1,E=b.length,I=b.length;p===u.lineNumber&&(w=m.findTokenIndexAtOffset(u.column-1),E=u.column-1,I=u.column-1);let M=!0;for(;w>=0;w--){const P=m.getLanguageId(w)===r&&!(0,S.ignoreBracketsInToken)(m.getStandardTokenType(w));if(P)M?E=m.getStartOffset(w):(E=m.getStartOffset(w),I=m.getEndOffset(w));else if(M&&E!==I){const x=l(p,b,E,I);if(x)return x}M=P}if(M&&E!==I){const P=l(p,b,E,I);if(P)return P}}return null}_findMatchingBracketDown(a,u,h){const r=a.languageId,c=a.forwardRegex;let o=1,d=0;const l=(m,v,b,w)=>{for(;;){if(h&&++d%100===0&&!h())return i.INSTANCE;const E=f.BracketsUtils.findNextBracketInRange(c,m,v,b,w);if(!E)break;const I=v.substring(E.startColumn-1,E.endColumn-1).toLowerCase();if(a.isOpen(I)?o++:a.isClose(I)&&o--,o===0)return E;b=E.endColumn-1}return null},p=this.textModel.getLineCount();for(let m=u.lineNumber;m<=p;m++){const v=this.textModel.tokenization.getLineTokens(m),b=v.getCount(),w=this.textModel.getLineContent(m);let E=0,I=0,M=0;m===u.lineNumber&&(E=v.findTokenIndexAtOffset(u.column-1),I=u.column-1,M=u.column-1);let P=!0;for(;E=1;d--){const l=this.textModel.tokenization.getLineTokens(d),p=l.getCount(),m=this.textModel.getLineContent(d);let v=p-1,b=m.length,w=m.length;if(d===h.lineNumber){v=l.findTokenIndexAtOffset(h.column-1),b=h.column-1,w=h.column-1;const I=l.getLanguageId(v);r!==I&&(r=I,c=this.languageConfigurationService.getLanguageConfiguration(r).brackets,o=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew)}let E=!0;for(;v>=0;v--){const I=l.getLanguageId(v);if(r!==I){if(c&&o&&E&&b!==w){const P=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(P)return this._toFoundBracket(o,P);E=!1}r=I,c=this.languageConfigurationService.getLanguageConfiguration(r).brackets,o=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew}const M=!!c&&!(0,S.ignoreBracketsInToken)(l.getStandardTokenType(v));if(M)E?b=l.getStartOffset(v):(b=l.getStartOffset(v),w=l.getEndOffset(v));else if(o&&c&&E&&b!==w){const P=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(P)return this._toFoundBracket(o,P)}E=M}if(o&&c&&E&&b!==w){const I=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(I)return this._toFoundBracket(o,I)}}return null}findNextBracket(a){var u;const h=this.textModel.validatePosition(a);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getFirstBracketAfter(h))||null;const r=this.textModel.getLineCount();let c=null,o=null,d=null;for(let l=h.lineNumber;l<=r;l++){const p=this.textModel.tokenization.getLineTokens(l),m=p.getCount(),v=this.textModel.getLineContent(l);let b=0,w=0,E=0;if(l===h.lineNumber){b=p.findTokenIndexAtOffset(h.column-1),w=h.column-1,E=h.column-1;const M=p.getLanguageId(b);c!==M&&(c=M,o=this.languageConfigurationService.getLanguageConfiguration(c).brackets,d=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew)}let I=!0;for(;bI.closingBracketRange!==void 0&&I.range.strictContainsRange(w));return E?[E.openingBracketRange,E.closingBracketRange]:null}const r=s(u),c=this.textModel.getLineCount(),o=new Map;let d=[];const l=(w,E)=>{if(!o.has(w)){const I=[];for(let M=0,P=E?E.brackets.length:0;M{for(;;){if(r&&++p%100===0&&!r())return i.INSTANCE;const x=f.BracketsUtils.findNextBracketInRange(w.forwardRegex,E,I,M,P);if(!x)break;const T=I.substring(x.startColumn-1,x.endColumn-1).toLowerCase(),A=w.textIsBracket[T];if(A&&(A.isOpen(T)?d[A.index]++:A.isClose(T)&&d[A.index]--,d[A.index]===-1))return this._matchFoundBracket(x,A,!1,r);M=x.endColumn-1}return null};let v=null,b=null;for(let w=h.lineNumber;w<=c;w++){const E=this.textModel.tokenization.getLineTokens(w),I=E.getCount(),M=this.textModel.getLineContent(w);let P=0,x=0,T=0;if(w===h.lineNumber){P=E.findTokenIndexAtOffset(h.column-1),x=h.column-1,T=h.column-1;const N=E.getLanguageId(P);v!==N&&(v=N,b=this.languageConfigurationService.getLanguageConfiguration(v).brackets,l(v,b))}let A=!0;for(;Pa?.dispose()}}function s(t){if(typeof t>"u")return()=>!0;{const a=Date.now();return()=>Date.now()-a<=t}}class i{constructor(){this._searchCanceledBrand=void 0}}i.INSTANCE=new i;function n(t){return t instanceof i?null:t}}),define(ne[320],se([1,0,6,11,5,48,283,122,319,2]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeTextBuffer=void 0;class C extends g.Disposable{constructor(i,n,t,a,u,h,r){super(),this._onDidChangeContent=this._register(new L.Emitter),this._BOM=n,this._mightContainNonBasicASCII=!h,this._mightContainRTL=a,this._mightContainUnusualLineTerminators=u,this._pieceTree=new S.PieceTreeBase(i,t,r)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(i){return this._pieceTree.createSnapshot(i?this._BOM:"")}getOffsetAt(i,n){return this._pieceTree.getOffsetAt(i,n)}getPositionAt(i){return this._pieceTree.getPositionAt(i)}getRangeAt(i,n){const t=i+n,a=this.getPositionAt(i),u=this.getPositionAt(t);return new y.Range(a.lineNumber,a.column,u.lineNumber,u.column)}getValueInRange(i,n=0){if(i.isEmpty())return"";const t=this._getEndOfLine(n);return this._pieceTree.getValueInRange(i,t)}getValueLengthInRange(i,n=0){if(i.isEmpty())return 0;if(i.startLineNumber===i.endLineNumber)return i.endColumn-i.startColumn;const t=this.getOffsetAt(i.startLineNumber,i.startColumn),a=this.getOffsetAt(i.endLineNumber,i.endColumn);let u=0;const h=this._getEndOfLine(n),r=this.getEOL();if(h.length!==r.length){const c=h.length-r.length,o=i.endLineNumber-i.startLineNumber;u=c*o}return a-t+u}getCharacterCountInRange(i,n=0){if(this._mightContainNonBasicASCII){let t=0;const a=i.startLineNumber,u=i.endLineNumber;for(let h=a;h<=u;h++){const r=this.getLineContent(h),c=h===a?i.startColumn-1:0,o=h===u?i.endColumn-1:r.length;for(let d=c;dw.sortIndex-E.sortIndex)}this._mightContainRTL=a,this._mightContainUnusualLineTerminators=u,this._mightContainNonBasicASCII=h;const m=this._doApplyEdits(c);let v=null;if(n&&l.length>0){l.sort((b,w)=>w.lineNumber-b.lineNumber),v=[];for(let b=0,w=l.length;b0&&l[b-1].lineNumber===E)continue;const I=l[b].oldContent,M=this.getLineContent(E);M.length===0||M===I||k.firstNonWhitespaceIndex(M)!==-1||v.push(E)}}return this._onDidChangeContent.fire(),new D.ApplyEditsResult(p,m,v)}_reduceOperations(i){return i.length<1e3?i:[this._toSingleEditOperation(i)]}_toSingleEditOperation(i){let n=!1;const t=i[0].range,a=i[i.length-1].range,u=new y.Range(t.startLineNumber,t.startColumn,a.endLineNumber,a.endColumn);let h=t.startLineNumber,r=t.startColumn;const c=[];for(let m=0,v=i.length;m0&&c.push(b.text),h=w.endLineNumber,r=w.endColumn}const o=c.join(""),[d,l,p]=(0,f.countEOL)(o);return{sortIndex:0,identifier:i[0].identifier,range:u,rangeOffset:this.getOffsetAt(u.startLineNumber,u.startColumn),rangeLength:this.getValueLengthInRange(u,0),text:o,eolCount:d,firstLineLength:l,lastLineLength:p,forceMoveMarkers:n,isAutoWhitespaceEdit:!1}}_doApplyEdits(i){i.sort(C._sortOpsDescending);const n=[];for(let t=0;t0){const p=c.eolCount+1;p===1?l=new y.Range(o,d,o,d+c.firstLineLength):l=new y.Range(o,d,o+p-1,c.lastLineLength+1)}else l=new y.Range(o,d,o,d);t=l.endLineNumber,a=l.endColumn,n.push(l),u=c}return n}static _sortOpsAscending(i,n){const t=y.Range.compareRangesUsingEnds(i.range,n.range);return t===0?i.sortIndex-n.sortIndex:t}static _sortOpsDescending(i,n){const t=y.Range.compareRangesUsingEnds(i.range,n.range);return t===0?n.sortIndex-i.sortIndex:-t}}e.PieceTreeTextBuffer=C}),define(ne[597],se([1,0,11,283,320]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeTextBufferBuilder=void 0;class D{constructor(_,g,C,s,i,n,t,a,u){this._chunks=_,this._bom=g,this._cr=C,this._lf=s,this._crlf=i,this._containsRTL=n,this._containsUnusualLineTerminators=t,this._isBasicASCII=a,this._normalizeEOL=u}_getEOL(_){const g=this._cr+this._lf+this._crlf,C=this._cr+this._crlf;return g===0?_===1?` -`:`\r -`:C>g/2?`\r -`:` -`}create(_){const g=this._getEOL(_),C=this._chunks;if(this._normalizeEOL&&(g===`\r -`&&(this._cr>0||this._lf>0)||g===` -`&&(this._cr>0||this._crlf>0)))for(let i=0,n=C.length;i=55296&&g<=56319?(this._acceptChunk1(_.substr(0,_.length-1),!1),this._hasPreviousChar=!0,this._previousChar=g):(this._acceptChunk1(_,!1),this._hasPreviousChar=!1,this._previousChar=g)}_acceptChunk1(_,g){!g&&_.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+_):this._acceptChunk2(_))}_acceptChunk2(_){const g=(0,k.createLineStarts)(this._tmpLineStarts,_);this.chunks.push(new k.StringBuffer(_,g.lineStarts)),this.cr+=g.cr,this.lf+=g.lf,this.crlf+=g.crlf,g.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=L.containsRTL(_)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=L.containsUnusualLineTerminators(_)))}finish(_=!0){return this._finish(),new D(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,_)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const _=this.chunks[this.chunks.length-1];_.buffer+=String.fromCharCode(this._previousChar);const g=(0,k.createLineStartsFast)(_.buffer);_.lineStarts=g,this._previousChar===13&&this.cr++}}}e.PieceTreeTextBufferBuilder=S}),define(ne[598],se([1,0,140,17]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.encodeSemanticTokensDto=void 0;function y(_){for(let g=0,C=_.length;ga.target.position?a.target.position.lineNumber:0,this._opts=g(this._editor.getOption(76)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(a=>{if(a.hasChanged(76)){const u=g(this._editor.getOption(76));if(this._opts.equals(u))return;this._opts=u,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(a=>this._onEditorMouseMove(new S(a,this._opts)))),this._register(this._editor.onMouseDown(a=>this._onEditorMouseDown(new S(a,this._opts)))),this._register(this._editor.onMouseUp(a=>this._onEditorMouseUp(new S(a,this._opts)))),this._register(this._editor.onKeyDown(a=>this._onEditorKeyDown(new f(a,this._opts)))),this._register(this._editor.onKeyUp(a=>this._onEditorKeyUp(new f(a,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(a=>this._onDidChangeCursorSelection(a))),this._register(this._editor.onDidChangeModel(a=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(a=>{(a.scrollTopChanged||a.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(i){i.selection&&i.selection.startColumn!==i.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(i){this._lastMouseMoveEvent=i,this._onMouseMoveOrRelevantKeyDown.fire([i,null])}_onEditorMouseDown(i){this._hasTriggerKeyOnMouseDown=i.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(i)}_onEditorMouseUp(i){const n=this._extractLineNumberFromMouseEvent(i);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===n&&this._onExecute.fire(i)}_onEditorKeyDown(i){this._lastMouseMoveEvent&&(i.keyCodeIsTriggerKey||i.keyCodeIsSideBySideKey&&i.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,i]):i.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(i){i.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}e.ClickLinkGesture=C});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values=="function"?__values(Q):Q[Symbol.iterator](),L={},k("next"),k("throw"),k("return"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[321],se([1,0,13,9,6,2]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverOperation=e.HoverResult=void 0;class S{constructor(g,C,s){this.value=g,this.isComplete=C,this.hasLoadingMessage=s}}e.HoverResult=S;class f extends D.Disposable{constructor(g,C){super(),this._editor=g,this._computer=C,this._onResult=this._register(new y.Emitter),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerLoadingMessage(),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(59).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(g,C=!0){this._state=g,C&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=(0,L.createCancelableAsyncIterable)(g=>this._computer.computeAsync(g)),we(this,void 0,void 0,function*(){var g,C,s,i;try{try{for(var n=!0,t=Lt(this._asyncIterable),a;a=yield t.next(),g=a.done,!g;n=!0){i=a.value,n=!1;const u=i;u&&(this._result.push(u),this._fireResult())}}catch(u){C={error:u}}finally{try{!n&&!g&&(s=t.return)&&(yield s.call(t))}finally{if(C)throw C.error}}this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(u){(0,k.onUnexpectedError)(u)}})):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const g=this._state===0,C=this._state===4;this._onResult.fire(new S(this._result.slice(0),g,C))}start(g){if(g===0)this._state===0&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}e.HoverOperation=f}),define(ne[599],se([1,0,223,2,12,7]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResizableContentWidget=void 0;const S=30,f=24;class _ extends k.Disposable{constructor(C,s=new D.Dimension(10,10)){super(),this._editor=C,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new L.ResizableHTMLElement),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=D.Dimension.lift(s),this._resizableNode.layout(s.height,s.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(i=>{this._resize(new D.Dimension(i.dimension.width,i.dimension.height)),i.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var C;return!((C=this._contentPosition)===null||C===void 0)&&C.position?y.Position.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(C){const s=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(C);return!s||!i?void 0:D.getDomNodePagePosition(s).top+i.top-S}_availableVerticalSpaceBelow(C){const s=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(C);if(!s||!i)return;const n=D.getDomNodePagePosition(s),t=D.getClientArea(document.body),a=n.top+i.top+i.height;return t.height-a-f}_findPositionPreference(C,s){var i,n;const t=Math.min((i=this._availableVerticalSpaceBelow(s))!==null&&i!==void 0?i:1/0,C),a=Math.min((n=this._availableVerticalSpaceAbove(s))!==null&&n!==void 0?n:1/0,C),u=Math.min(Math.max(a,t),C),h=Math.min(C,u);let r;return this._editor.getOption(59).above?r=h<=a?1:2:r=h<=t?2:1,r===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),r}_resize(C){this._resizableNode.layout(C.height,C.width)}}e.ResizableContentWidget=_}),define(ne[322],se([1,0,9,2,12,5,54,22]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.asCommandLink=e.InlayHintsFragments=e.InlayHintItem=e.InlayHintAnchor=void 0;class _{constructor(n,t){this.range=n,this.direction=t}}e.InlayHintAnchor=_;class g{constructor(n,t,a){this.hint=n,this.anchor=t,this.provider=a,this._isResolved=!1}with(n){const t=new g(this.hint,n.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}resolve(n){return we(this,void 0,void 0,function*(){if(typeof this.provider.resolveInlayHint=="function"){if(this._currentResolve)return yield this._currentResolve,n.isCancellationRequested?void 0:this.resolve(n);this._isResolved||(this._currentResolve=this._doResolve(n).finally(()=>this._currentResolve=void 0)),yield this._currentResolve}})}_doResolve(n){var t,a;return we(this,void 0,void 0,function*(){try{const u=yield Promise.resolve(this.provider.resolveInlayHint(this.hint,n));this.hint.tooltip=(t=u?.tooltip)!==null&&t!==void 0?t:this.hint.tooltip,this.hint.label=(a=u?.label)!==null&&a!==void 0?a:this.hint.label,this._isResolved=!0}catch(u){(0,L.onUnexpectedExternalError)(u),this._isResolved=!1}})}}e.InlayHintItem=g;class C{static create(n,t,a,u){return we(this,void 0,void 0,function*(){const h=[],r=n.ordered(t).reverse().map(c=>a.map(o=>we(this,void 0,void 0,function*(){try{const d=yield c.provideInlayHints(t,o,u);d?.hints.length&&h.push([d,c])}catch(d){(0,L.onUnexpectedExternalError)(d)}})));if(yield Promise.all(r.flat()),u.isCancellationRequested||t.isDisposed())throw new L.CancellationError;return new C(a,h,t)})}constructor(n,t,a){this._disposables=new k.DisposableStore,this.ranges=n,this.provider=new Set;const u=[];for(const[h,r]of t){this._disposables.add(h),this.provider.add(r);for(const c of h.hints){const o=a.validatePosition(c.position);let d="before";const l=C._getRangeAtPosition(a,o);let p;l.getStartPosition().isBefore(o)?(p=D.Range.fromPositions(l.getStartPosition(),o),d="after"):(p=D.Range.fromPositions(o,l.getEndPosition()),d="before"),u.push(new g(c,new _(p,d),r))}}this.items=u.sort((h,r)=>y.Position.compare(h.hint.position,r.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(n,t){const a=t.lineNumber,u=n.getWordAtPosition(t);if(u)return new D.Range(a,u.startColumn,a,u.endColumn);n.tokenization.tokenizeIfCheap(a);const h=n.tokenization.getLineTokens(a),r=t.column-1,c=h.findTokenIndexAtOffset(r);let o=h.getStartOffset(c),d=h.getEndOffset(c);return d-o===1&&(o===r&&c>1?(o=h.getStartOffset(c-1),d=h.getEndOffset(c-1)):d===r&&cW.toString?W.toString():""+W).join(" -> ")}`));const O=new k.DeferredPromise;return w.set(A,O.p),(()=>we(this,void 0,void 0,function*(){if(!F){const W=b(A);for(const U of W){const j=yield M(U);if(j&&j.items.length>0)return}}try{return yield A.provideInlineCompletions(c,r,o,d)}catch(W){(0,S.onUnexpectedExternalError)(W);return}}))().then(W=>O.complete(W),W=>O.error(W)),O.p}const P=yield Promise.all(m.map(A=>we(this,void 0,void 0,function*(){return{provider:A,completions:yield M(A)}}))),x=new Map,T=[];for(const A of P){const N=A.completions;if(!N)continue;const F=new n(N,A.provider);T.push(F);for(const O of N.items){const W=t.from(O,F,p,c,l);x.set(W.hash(),W)}}return new i(Array.from(x.values()),new Set(x.keys()),T)})}e.provideInlineCompletions=s;class i{constructor(r,c,o){this.completions=r,this.hashs=c,this.providerResults=o}has(r){return this.hashs.has(r.hash())}dispose(){for(const r of this.providerResults)r.removeRef()}}e.InlineCompletionProviderResult=i;class n{constructor(r,c){this.inlineCompletions=r,this.provider=c,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}e.InlineCompletionList=n;class t{static from(r,c,o,d,l){let p,m,v=r.range?f.Range.lift(r.range):o;if(typeof r.insertText=="string"){if(p=r.insertText,l&&r.completeBracketPairs){p=u(p,v.getStartPosition(),d,l);const b=p.length-r.insertText.length;b!==0&&(v=new f.Range(v.startLineNumber,v.startColumn,v.endLineNumber,v.endColumn+b))}m=void 0}else if("snippet"in r.insertText){const b=r.insertText.snippet.length;if(l&&r.completeBracketPairs){r.insertText.snippet=u(r.insertText.snippet,v.getStartPosition(),d,l);const E=r.insertText.snippet.length-b;E!==0&&(v=new f.Range(v.startLineNumber,v.startColumn,v.endLineNumber,v.endColumn+E))}const w=new C.SnippetParser().parse(r.insertText.snippet);w.children.length===1&&w.children[0]instanceof C.Text?(p=w.children[0].value,m=void 0):(p=w.toString(),m={snippet:r.insertText.snippet,range:v})}else(0,L.assertNever)(r.insertText);return new t(p,r.command,v,p,m,r.additionalTextEdits||(0,g.getReadonlyEmptyArray)(),r,c)}constructor(r,c,o,d,l,p,m,v){this.filterText=r,this.command=c,this.range=o,this.insertText=d,this.snippetInfo=l,this.additionalTextEdits=p,this.sourceInlineCompletion=m,this.source=v,r=r.replace(/\r\n|\r/g,` -`),d=r.replace(/\r\n|\r/g,` -`)}withRange(r){return new t(this.filterText,this.command,r,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}}e.InlineCompletionItem=t;function a(h,r){const c=r.getWordAtPosition(h),o=r.getLineMaxColumn(h.lineNumber);return c?new f.Range(h.lineNumber,c.startColumn,h.lineNumber,o):f.Range.fromPositions(h,h.with(void 0,o))}function u(h,r,c,o){const l=c.getLineContent(r.lineNumber).substring(0,r.column-1)+h,p=c.tokenization.tokenizeLineWithEdit(r,l.length-(r.column-1),h),m=p?.sliceAndInflate(r.column-1,l.length,0);return m?(0,_.fixBracketsInLine)(m,o):h}}),define(ne[601],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/controller/textAreaHandler",e)}),define(ne[602],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/coreCommands",e)}),define(ne[603],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/editorExtensions",e)}),define(ne[604],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/codeEditorWidget",e)}),define(ne[605],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditor.contribution",e)}),define(ne[606],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget",e)}),define(ne[607],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer",e)}),define(ne[608],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/colors",e)}),define(ne[609],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/decorations",e)}),define(ne[610],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors",e)}),define(ne[611],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin",e)}),define(ne[612],se([1,0,7,39,25,2,17,26,611]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineDiffDeletedCodeMargin=void 0;class g extends D.Disposable{get visibility(){return this._visibility}set visibility(s){this._visibility!==s&&(this._visibility=s,this._diffActions.style.visibility=s?"visible":"hidden")}constructor(s,i,n,t,a,u,h,r,c){super(),this._getViewZoneId=s,this._marginDomNode=i,this._modifiedEditor=n,this._diff=t,this._editor=a,this._viewLineCounts=u,this._originalTextModel=h,this._contextMenuService=r,this._clipboardService=c,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=f.ThemeIcon.asClassName(y.Codicon.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const o=this._modifiedEditor.getOption(65);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${o}px`,this._diffActions.style.lineHeight=`${o}px`,this._marginDomNode.appendChild(this._diffActions);let d=0;const l=n.getOption(125)&&!S.isIOS,p=(m,v)=>{var b;this._contextMenuService.showContextMenu({domForShadowRoot:l&&(b=n.getDomNode())!==null&&b!==void 0?b:void 0,getAnchor:()=>({x:m,y:v}),getActions:()=>{const w=[],E=t.modifiedRange.isEmpty;return w.push(new k.Action("diff.clipboard.copyDeletedContent",E?t.originalRange.length>1?(0,_.localize)(0,null):(0,_.localize)(1,null):t.originalRange.length>1?(0,_.localize)(2,null):(0,_.localize)(3,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const M=this._originalTextModel.getValueInRange(t.originalRange.toExclusiveRange());yield this._clipboardService.writeText(M)}))),t.originalRange.length>1&&w.push(new k.Action("diff.clipboard.copyDeletedLineContent",E?(0,_.localize)(4,null,t.originalRange.startLineNumber+d):(0,_.localize)(5,null,t.originalRange.startLineNumber+d),void 0,!0,()=>we(this,void 0,void 0,function*(){let M=this._originalTextModel.getLineContent(t.originalRange.startLineNumber+d);M===""&&(M=this._originalTextModel.getEndOfLineSequence()===0?` -`:`\r -`),yield this._clipboardService.writeText(M)}))),n.getOption(89)||w.push(new k.Action("diff.inline.revertChange",(0,_.localize)(6,null),void 0,!0,()=>we(this,void 0,void 0,function*(){this._editor.revert(this._diff)}))),w},autoSelectFirstItem:!0})};this._register((0,L.addStandardDisposableListener)(this._diffActions,"mousedown",m=>{const{top:v,height:b}=(0,L.getDomNodePagePosition)(this._diffActions),w=Math.floor(o/3);m.preventDefault(),p(m.posx,v+b+w)})),this._register(n.onMouseMove(m=>{(m.target.type===8||m.target.type===5)&&m.target.detail.viewZoneId===this._getViewZoneId()?(d=this._updateLightBulbPosition(this._marginDomNode,m.event.browserEvent.y,o),this.visibility=!0):this.visibility=!1})),this._register(n.onMouseDown(m=>{m.event.rightButton&&(m.target.type===8||m.target.type===5)&&m.target.detail.viewZoneId===this._getViewZoneId()&&(m.event.preventDefault(),d=this._updateLightBulbPosition(this._marginDomNode,m.event.browserEvent.y,o),p(m.event.posx,m.event.posy+o))}))}_updateLightBulbPosition(s,i,n){const{top:t}=(0,L.getDomNodePagePosition)(s),a=i-t,u=Math.floor(a/n),h=u*n;if(this._diffActions.style.top=`${h}px`,this._viewLineCounts){let r=0;for(let c=0;cthis._editors.original.getScrollTop()),this._modifiedScrollTop=(0,_.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=(0,_.observableSignalFromEvent)("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=(0,_.observableValue)("width",0),this._modifiedViewZonesChangedSignal=(0,_.observableSignalFromEvent)("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=(0,_.observableSignalFromEvent)("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=(0,_.derivedWithStore)("state",(E,I)=>{var M;this._element.replaceChildren();const P=this._diffModel.read(E),x=(M=P?.diff.read(E))===null||M===void 0?void 0:M.movedTexts;if(!x||x.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(E);const T=this._originalEditorLayoutInfo.read(E),A=this._modifiedEditorLayoutInfo.read(E);if(!T||!A){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(E),this._originalViewZonesChangedSignal.read(E);const N=x.map(K=>{function G(ae,ce){const de=ce.getTopForLineNumber(ae.startLineNumber,!0),he=ce.getTopForLineNumber(ae.endLineNumberExclusive,!0);return(de+he)/2}const Z=G(K.lineRangeMapping.original,this._editors.original),J=this._originalScrollTop.read(E),X=G(K.lineRangeMapping.modified,this._editors.modified),H=this._modifiedScrollTop.read(E),B=Z-J,V=X-H,Y=Math.min(Z,X),ie=Math.max(Z,X);return{range:new s.OffsetRange(Y,ie),from:B,to:V,fromWithoutScroll:Z,toWithoutScroll:X,move:K}});N.sort((0,D.tieBreakComparators)((0,D.compareBy)(K=>K.fromWithoutScroll>K.toWithoutScroll,D.booleanComparator),(0,D.compareBy)(K=>K.fromWithoutScroll>K.toWithoutScroll?K.fromWithoutScroll:-K.toWithoutScroll,D.numberComparator)));const F=t.compute(N.map(K=>K.range)),O=10,W=T.verticalScrollbarWidth,U=(F.getTrackCount()-1)*10+O*2,j=W+U+(A.contentLeft-n.movedCodeBlockPadding);let R=0;for(const K of N){const G=F.getTrack(R),Z=W+O+G*10,J=15,X=15,H=j,B=A.glyphMarginWidth+A.lineNumbersWidth,V=18,Y=document.createElementNS("http://www.w3.org/2000/svg","rect");Y.classList.add("arrow-rectangle"),Y.setAttribute("x",`${H-B}`),Y.setAttribute("y",`${K.to-V/2}`),Y.setAttribute("width",`${B}`),Y.setAttribute("height",`${V}`),this._element.appendChild(Y);const ie=document.createElementNS("http://www.w3.org/2000/svg","g"),ae=document.createElementNS("http://www.w3.org/2000/svg","path");ae.setAttribute("d",`M 0 ${K.from} L ${Z} ${K.from} L ${Z} ${K.to} L ${H-X} ${K.to}`),ae.setAttribute("fill","none"),ie.appendChild(ae);const ce=document.createElementNS("http://www.w3.org/2000/svg","polygon");ce.classList.add("arrow"),I.add((0,_.autorun)(de=>{ae.classList.toggle("currentMove",K.move===P.activeMovedText.read(de)),ce.classList.toggle("currentMove",K.move===P.activeMovedText.read(de))})),ce.setAttribute("points",`${H-X},${K.to-J/2} ${H},${K.to} ${H-X},${K.to+J/2}`),ie.appendChild(ce),this._element.appendChild(ie),R++}this.width.set(U,void 0)}),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register((0,f.toDisposable)(()=>this._element.remove())),this._register((0,_.autorun)(E=>{const I=this._originalEditorLayoutInfo.read(E),M=this._modifiedEditorLayoutInfo.read(E);!I||!M||(this._element.style.left=`${I.width-I.verticalScrollbarWidth}px`,this._element.style.height=`${I.height}px`,this._element.style.width=`${I.verticalScrollbarWidth+I.contentLeft-n.movedCodeBlockPadding+this.width.read(E)}px`)})),this._register((0,_.keepAlive)(this._state,!0));const l=(0,_.derived)(E=>{const I=this._diffModel.read(E),M=I?.diff.read(E);return M?M.movedTexts.map(P=>({move:P,original:new C.PlaceholderViewZone((0,_.constObservable)(P.lineRangeMapping.original.startLineNumber-1),18),modified:new C.PlaceholderViewZone((0,_.constObservable)(P.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register((0,C.applyViewZones)(this._editors.original,l.map(E=>E.map(I=>I.original)))),this._register((0,C.applyViewZones)(this._editors.modified,l.map(E=>E.map(I=>I.modified)))),this._register((0,_.autorunWithStore)((E,I)=>{const M=l.read(E);for(const P of M)I.add(new a(this._editors.original,P.original,P.move,"original",this._diffModel.get())),I.add(new a(this._editors.modified,P.modified,P.move,"modified",this._diffModel.get()))}));const p=(0,_.observableFromEvent)(this._editors.original.onDidChangeCursorPosition,()=>this._editors.original.getPosition()),m=(0,_.observableFromEvent)(this._editors.modified.onDidChangeCursorPosition,()=>this._editors.modified.getPosition()),v=(0,_.observableSignalFromEvent)("original.onDidFocusEditorWidget",E=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>E(void 0),0))),b=(0,_.observableSignalFromEvent)("modified.onDidFocusEditorWidget",E=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>E(void 0),0)));let w="modified";this._register((0,_.autorunHandleChanges)({createEmptyChangeSummary:()=>{},handleChange:(E,I)=>(E.didChange(v)&&(w="original"),E.didChange(b)&&(w="modified"),!0)},E=>{v.read(E),b.read(E);const I=this._diffModel.read(E);if(!I)return;const M=I.diff.read(E);let P;if(M&&w==="original"){const x=p.read(E);x&&(P=M.movedTexts.find(T=>T.lineRangeMapping.original.contains(x.lineNumber)))}if(M&&w==="modified"){const x=m.read(E);x&&(P=M.movedTexts.find(T=>T.lineRangeMapping.modified.contains(x.lineNumber)))}P!==I.movedTextToCompare.get()&&I.movedTextToCompare.set(void 0,void 0),I.setActiveMovedText(P)}))}}e.MovedBlocksLinesPart=n,n.movedCodeBlockPadding=4;class t{static compute(h){const r=[],c=[];for(const o of h){let d=r.findIndex(l=>!l.intersectsStrict(o));d===-1&&(r.length>=6?d=(0,D.findMaxIdxBy)(r,(0,D.compareBy)(p=>p.intersectWithRangeLength(o),D.numberComparator)):(d=r.length,r.push(new s.OffsetRangeSet))),r[d].addRange(o),c.push(d)}return new t(r.length,c)}constructor(h,r){this._trackCount=h,this.trackPerLineIdx=r}getTrack(h){return this.trackPerLineIdx[h]}getTrackCount(){return this._trackCount}}class a extends C.ViewZoneOverlayWidget{constructor(h,r,c,o,d){const l=(0,L.h)("div.diff-hidden-lines-widget");super(h,r,l.root),this._editor=h,this._move=c,this._kind=o,this._diffModel=d,this._nodes=(0,L.h)("div.diff-moved-code-block",{style:{marginRight:"4px"}},[(0,L.h)("div.text-content@textContent"),(0,L.h)("div.action-bar@actionBar")]),l.root.appendChild(this._nodes.root);const p=(0,_.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register((0,C.applyStyle)(this._nodes.root,{paddingRight:p.map(E=>E.verticalScrollbarWidth)}));let m;c.changes.length>0?m=this._kind==="original"?(0,i.localize)(0,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive):(0,i.localize)(1,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive):m=this._kind==="original"?(0,i.localize)(2,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive):(0,i.localize)(3,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive);const v=this._register(new k.ActionBar(this._nodes.actionBar,{highlightToggledItems:!0})),b=new y.Action("",m,"",!1);v.push(b,{icon:!1,label:!0});const w=new y.Action("","Compare",g.ThemeIcon.asClassName(S.Codicon.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===c?void 0:this._move,void 0)});this._register((0,_.autorun)(E=>{const I=this._diffModel.movedTextToCompare.read(E)===c;w.checked=I})),v.push(w,{icon:!1,label:!0})}}}),define(ne[614],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffEditorWidget2/unchangedRanges",e)}),define(ne[615],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/diffReview",e)}),define(ne[616],se([3,4]),function(Q,e){return Q.create("vs/editor/browser/widget/inlineDiffMargin",e)}),define(ne[617],se([1,0,616,7,39,2,5,25,26,17]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineDiffMargin=void 0;class C extends D.Disposable{get visibility(){return this._visibility}set visibility(i){this._visibility!==i&&(this._visibility=i,i?this._diffActions.style.visibility="visible":this._diffActions.style.visibility="hidden")}constructor(i,n,t,a,u,h){super(),this._viewZoneId=i,this._marginDomNode=n,this.editor=t,this.diff=a,this._contextMenuService=u,this._clipboardService=h,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=_.ThemeIcon.asClassName(f.Codicon.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const r=t.getOption(65),c=t.getModel().getEOL();this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${r}px`,this._diffActions.style.lineHeight=`${r}px`,this._marginDomNode.appendChild(this._diffActions);const o=[],d=a.modifiedEndLineNumber===0;o.push(new y.Action("diff.clipboard.copyDeletedContent",d?a.originalEndLineNumber>a.modifiedStartLineNumber?L.localize(0,null):L.localize(1,null):a.originalEndLineNumber>a.modifiedStartLineNumber?L.localize(2,null):L.localize(3,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=new S.Range(a.originalStartLineNumber,1,a.originalEndLineNumber+1,1),E=a.originalModel.getValueInRange(w);yield this._clipboardService.writeText(E)})));let l=0,p;a.originalEndLineNumber>a.modifiedStartLineNumber&&(p=new y.Action("diff.clipboard.copyDeletedLineContent",d?L.localize(4,null,a.originalStartLineNumber):L.localize(5,null,a.originalStartLineNumber),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=a.originalModel.getLineContent(a.originalStartLineNumber+l);if(w===""){const E=a.originalModel.getEndOfLineSequence();yield this._clipboardService.writeText(E===0?` -`:`\r -`)}else yield this._clipboardService.writeText(w)})),o.push(p)),t.getOption(89)||o.push(new y.Action("diff.inline.revertChange",L.localize(6,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=new S.Range(a.originalStartLineNumber,1,a.originalEndLineNumber,a.originalModel.getLineMaxColumn(a.originalEndLineNumber)),E=a.originalModel.getValueInRange(w);if(a.modifiedEndLineNumber===0){const I=t.getModel().getLineMaxColumn(a.modifiedStartLineNumber);t.executeEdits("diffEditor",[{range:new S.Range(a.modifiedStartLineNumber,I,a.modifiedStartLineNumber,I),text:c+E}])}else{const I=t.getModel().getLineMaxColumn(a.modifiedEndLineNumber);t.executeEdits("diffEditor",[{range:new S.Range(a.modifiedStartLineNumber,1,a.modifiedEndLineNumber,I),text:E}])}})));const v=t.getOption(125)&&!g.isIOS,b=(w,E)=>{var I;this._contextMenuService.showContextMenu({domForShadowRoot:v&&(I=t.getDomNode())!==null&&I!==void 0?I:void 0,getAnchor:()=>({x:w,y:E}),getActions:()=>(p&&(p.label=d?L.localize(7,null,a.originalStartLineNumber+l):L.localize(8,null,a.originalStartLineNumber+l)),o),autoSelectFirstItem:!0})};this._register(k.addStandardDisposableListener(this._diffActions,"mousedown",w=>{const{top:E,height:I}=k.getDomNodePagePosition(this._diffActions),M=Math.floor(r/3);w.preventDefault(),b(w.posx,E+I+M)})),this._register(t.onMouseMove(w=>{w.target.type===8||w.target.type===5?w.target.detail.viewZoneId===this._viewZoneId?(this.visibility=!0,l=this._updateLightBulbPosition(this._marginDomNode,w.event.browserEvent.y,r)):this.visibility=!1:this.visibility=!1})),this._register(t.onMouseDown(w=>{w.event.rightButton&&(w.target.type===8||w.target.type===5)&&w.target.detail.viewZoneId===this._viewZoneId&&(w.event.preventDefault(),l=this._updateLightBulbPosition(this._marginDomNode,w.event.browserEvent.y,r),b(w.event.posx,w.event.posy+r))}))}_updateLightBulbPosition(i,n,t){const{top:a}=k.getDomNodePagePosition(i),u=n-a,h=Math.floor(u/t),r=h*t;if(this._diffActions.style.top=`${r}px`,this.diff.viewLineCounts){let c=0;for(let o=0;o"u"?this.defaultValue:le}compute(le,pe,Ce){return Ce}}function a(me,le){return typeof me>"u"?le:me==="false"?!1:!!me}e.boolean=a;class u extends t{constructor(le,pe,Ce,be=void 0){typeof be<"u"&&(be.type="boolean",be.default=Ce),super(le,pe,Ce,be)}validate(le){return a(le,this.defaultValue)}}function h(me,le,pe,Ce){if(typeof me>"u")return le;let be=parseInt(me,10);return isNaN(be)?le:(be=Math.max(pe,be),be=Math.min(Ce,be),be|0)}e.clampedInt=h;class r extends t{static clampedInt(le,pe,Ce,be){return h(le,pe,Ce,be)}constructor(le,pe,Ce,be,Ie,Ne=void 0){typeof Ne<"u"&&(Ne.type="integer",Ne.default=Ce,Ne.minimum=be,Ne.maximum=Ie),super(le,pe,Ce,Ne),this.minimum=be,this.maximum=Ie}validate(le){return r.clampedInt(le,this.defaultValue,this.minimum,this.maximum)}}function c(me,le,pe,Ce){if(typeof me>"u")return le;const be=o.float(me,le);return o.clamp(be,pe,Ce)}e.clampedFloat=c;class o extends t{static clamp(le,pe,Ce){return leCe?Ce:le}static float(le,pe){if(typeof le=="number")return le;if(typeof le>"u")return pe;const Ce=parseFloat(le);return isNaN(Ce)?pe:Ce}constructor(le,pe,Ce,be,Ie){typeof Ie<"u"&&(Ie.type="number",Ie.default=Ce),super(le,pe,Ce,Ie),this.validationFn=be}validate(le){return this.validationFn(o.float(le,this.defaultValue))}}class d extends t{static string(le,pe){return typeof le!="string"?pe:le}constructor(le,pe,Ce,be=void 0){typeof be<"u"&&(be.type="string",be.default=Ce),super(le,pe,Ce,be)}validate(le){return d.string(le,this.defaultValue)}}function l(me,le,pe,Ce){return typeof me!="string"?le:Ce&&me in Ce?Ce[me]:pe.indexOf(me)===-1?le:me}e.stringSet=l;class p extends t{constructor(le,pe,Ce,be,Ie=void 0){typeof Ie<"u"&&(Ie.type="string",Ie.enum=be,Ie.default=Ce),super(le,pe,Ce,Ie),this._allowedValues=be}validate(le){return l(le,this.defaultValue,this._allowedValues)}}class m extends C{constructor(le,pe,Ce,be,Ie,Ne,Re=void 0){typeof Re<"u"&&(Re.type="string",Re.enum=Ie,Re.default=be),super(le,pe,Ce,Re),this._allowedValues=Ie,this._convert=Ne}validate(le){return typeof le!="string"?this.defaultValue:this._allowedValues.indexOf(le)===-1?this.defaultValue:this._convert(le)}}function v(me){switch(me){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class b extends C{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[f.localize(0,null),f.localize(1,null),f.localize(2,null)],default:"auto",tags:["accessibility"],description:f.localize(3,null)})}validate(le){switch(le){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(le,pe,Ce){return Ce===0?le.accessibilitySupport:Ce}}class w extends C{constructor(){const le={insertSpace:!0,ignoreEmptyLines:!0};super(22,"comments",le,{"editor.comments.insertSpace":{type:"boolean",default:le.insertSpace,description:f.localize(4,null)},"editor.comments.ignoreEmptyLines":{type:"boolean",default:le.ignoreEmptyLines,description:f.localize(5,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{insertSpace:a(pe.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:a(pe.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function E(me){switch(me){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var I;(function(me){me[me.Line=1]="Line",me[me.Block=2]="Block",me[me.Underline=3]="Underline",me[me.LineThin=4]="LineThin",me[me.BlockOutline=5]="BlockOutline",me[me.UnderlineThin=6]="UnderlineThin"})(I||(e.TextEditorCursorStyle=I={}));function M(me){switch(me){case"line":return I.Line;case"block":return I.Block;case"underline":return I.Underline;case"line-thin":return I.LineThin;case"block-outline":return I.BlockOutline;case"underline-thin":return I.UnderlineThin}}class P extends n{constructor(){super(139)}compute(le,pe,Ce){const be=["monaco-editor"];return pe.get(38)&&be.push(pe.get(38)),le.extraEditorClassName&&be.push(le.extraEditorClassName),pe.get(72)==="default"?be.push("mouse-default"):pe.get(72)==="copy"&&be.push("mouse-copy"),pe.get(109)&&be.push("showUnused"),pe.get(137)&&be.push("showDeprecated"),be.join(" ")}}class x extends u{constructor(){super(36,"emptySelectionClipboard",!0,{description:f.localize(6,null)})}compute(le,pe,Ce){return Ce&&le.emptySelectionClipboard}}class T extends C{constructor(){const le={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(40,"find",le,{"editor.find.cursorMoveOnType":{type:"boolean",default:le.cursorMoveOnType,description:f.localize(7,null)},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:le.seedSearchStringFromSelection,enumDescriptions:[f.localize(8,null),f.localize(9,null),f.localize(10,null)],description:f.localize(11,null)},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:le.autoFindInSelection,enumDescriptions:[f.localize(12,null),f.localize(13,null),f.localize(14,null)],description:f.localize(15,null)},"editor.find.globalFindClipboard":{type:"boolean",default:le.globalFindClipboard,description:f.localize(16,null),included:y.isMacintosh},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:le.addExtraSpaceOnTop,description:f.localize(17,null)},"editor.find.loop":{type:"boolean",default:le.loop,description:f.localize(18,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{cursorMoveOnType:a(pe.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof le.seedSearchStringFromSelection=="boolean"?le.seedSearchStringFromSelection?"always":"never":l(pe.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof le.autoFindInSelection=="boolean"?le.autoFindInSelection?"always":"never":l(pe.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:a(pe.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:a(pe.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:a(pe.loop,this.defaultValue.loop)}}}class A extends C{constructor(){super(50,"fontLigatures",A.OFF,{anyOf:[{type:"boolean",description:f.localize(19,null)},{type:"string",description:f.localize(20,null)}],description:f.localize(21,null),default:!1})}validate(le){return typeof le>"u"?this.defaultValue:typeof le=="string"?le==="false"?A.OFF:le==="true"?A.ON:le:le?A.ON:A.OFF}}e.EditorFontLigatures=A,A.OFF='"liga" off, "calt" off',A.ON='"liga" on, "calt" on';class N extends C{constructor(){super(53,"fontVariations",N.OFF,{anyOf:[{type:"boolean",description:f.localize(22,null)},{type:"string",description:f.localize(23,null)}],description:f.localize(24,null),default:!1})}validate(le){return typeof le>"u"?this.defaultValue:typeof le=="string"?le==="false"?N.OFF:le==="true"?N.TRANSLATE:le:le?N.TRANSLATE:N.OFF}compute(le,pe,Ce){return le.fontInfo.fontVariationSettings}}e.EditorFontVariations=N,N.OFF="normal",N.TRANSLATE="translate";class F extends n{constructor(){super(49)}compute(le,pe,Ce){return le.fontInfo}}class O extends t{constructor(){super(51,"fontSize",e.EDITOR_FONT_DEFAULTS.fontSize,{type:"number",minimum:6,maximum:100,default:e.EDITOR_FONT_DEFAULTS.fontSize,description:f.localize(25,null)})}validate(le){const pe=o.float(le,this.defaultValue);return pe===0?e.EDITOR_FONT_DEFAULTS.fontSize:o.clamp(pe,6,100)}compute(le,pe,Ce){return le.fontInfo.fontSize}}class W extends C{constructor(){super(52,"fontWeight",e.EDITOR_FONT_DEFAULTS.fontWeight,{anyOf:[{type:"number",minimum:W.MINIMUM_VALUE,maximum:W.MAXIMUM_VALUE,errorMessage:f.localize(26,null)},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:W.SUGGESTION_VALUES}],default:e.EDITOR_FONT_DEFAULTS.fontWeight,description:f.localize(27,null)})}validate(le){return le==="normal"||le==="bold"?le:String(r.clampedInt(le,e.EDITOR_FONT_DEFAULTS.fontWeight,W.MINIMUM_VALUE,W.MAXIMUM_VALUE))}}W.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],W.MINIMUM_VALUE=1,W.MAXIMUM_VALUE=1e3;class U extends C{constructor(){const le={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},pe={type:"string",enum:["peek","gotoAndPeek","goto"],default:le.multiple,enumDescriptions:[f.localize(28,null),f.localize(29,null),f.localize(30,null)]},Ce=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(57,"gotoLocation",le,{"editor.gotoLocation.multiple":{deprecationMessage:f.localize(31,null)},"editor.gotoLocation.multipleDefinitions":Object.assign({description:f.localize(32,null)},pe),"editor.gotoLocation.multipleTypeDefinitions":Object.assign({description:f.localize(33,null)},pe),"editor.gotoLocation.multipleDeclarations":Object.assign({description:f.localize(34,null)},pe),"editor.gotoLocation.multipleImplementations":Object.assign({description:f.localize(35,null)},pe),"editor.gotoLocation.multipleReferences":Object.assign({description:f.localize(36,null)},pe),"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:le.alternativeDefinitionCommand,enum:Ce,description:f.localize(37,null)},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:le.alternativeTypeDefinitionCommand,enum:Ce,description:f.localize(38,null)},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:le.alternativeDeclarationCommand,enum:Ce,description:f.localize(39,null)},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:le.alternativeImplementationCommand,enum:Ce,description:f.localize(40,null)},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:le.alternativeReferenceCommand,enum:Ce,description:f.localize(41,null)}})}validate(le){var pe,Ce,be,Ie,Ne;if(!le||typeof le!="object")return this.defaultValue;const Re=le;return{multiple:l(Re.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:(pe=Re.multipleDefinitions)!==null&&pe!==void 0?pe:l(Re.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:(Ce=Re.multipleTypeDefinitions)!==null&&Ce!==void 0?Ce:l(Re.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:(be=Re.multipleDeclarations)!==null&&be!==void 0?be:l(Re.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:(Ie=Re.multipleImplementations)!==null&&Ie!==void 0?Ie:l(Re.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:(Ne=Re.multipleReferences)!==null&&Ne!==void 0?Ne:l(Re.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:d.string(Re.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:d.string(Re.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:d.string(Re.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:d.string(Re.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:d.string(Re.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class j extends C{constructor(){const le={enabled:!0,delay:300,sticky:!0,above:!0};super(59,"hover",le,{"editor.hover.enabled":{type:"boolean",default:le.enabled,description:f.localize(42,null)},"editor.hover.delay":{type:"number",default:le.delay,minimum:0,maximum:1e4,description:f.localize(43,null)},"editor.hover.sticky":{type:"boolean",default:le.sticky,description:f.localize(44,null)},"editor.hover.above":{type:"boolean",default:le.above,description:f.localize(45,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),delay:r.clampedInt(pe.delay,this.defaultValue.delay,0,1e4),sticky:a(pe.sticky,this.defaultValue.sticky),above:a(pe.above,this.defaultValue.above)}}}class R extends n{constructor(){super(142)}compute(le,pe,Ce){return R.computeLayout(pe,{memory:le.memory,outerWidth:le.outerWidth,outerHeight:le.outerHeight,isDominatedByLongLines:le.isDominatedByLongLines,lineHeight:le.fontInfo.lineHeight,viewLineCount:le.viewLineCount,lineNumbersDigitCount:le.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:le.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:le.fontInfo.maxDigitWidth,pixelRatio:le.pixelRatio,glyphMarginDecorationLaneCount:le.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(le){const pe=le.height/le.lineHeight,Ce=Math.floor(le.paddingTop/le.lineHeight);let be=Math.floor(le.paddingBottom/le.lineHeight);le.scrollBeyondLastLine&&(be=Math.max(be,pe-1));const Ie=(Ce+le.viewLineCount+be)/(le.pixelRatio*le.height),Ne=Math.floor(le.viewLineCount/Ie);return{typicalViewportLineCount:pe,extraLinesBeforeFirstLine:Ce,extraLinesBeyondLastLine:be,desiredRatio:Ie,minimapLineCount:Ne}}static _computeMinimapLayout(le,pe){const Ce=le.outerWidth,be=le.outerHeight,Ie=le.pixelRatio;if(!le.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(Ie*be),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:be};const Ne=pe.stableMinimapLayoutInput,Re=Ne&&le.outerHeight===Ne.outerHeight&&le.lineHeight===Ne.lineHeight&&le.typicalHalfwidthCharacterWidth===Ne.typicalHalfwidthCharacterWidth&&le.pixelRatio===Ne.pixelRatio&&le.scrollBeyondLastLine===Ne.scrollBeyondLastLine&&le.paddingTop===Ne.paddingTop&&le.paddingBottom===Ne.paddingBottom&&le.minimap.enabled===Ne.minimap.enabled&&le.minimap.side===Ne.minimap.side&&le.minimap.size===Ne.minimap.size&&le.minimap.showSlider===Ne.minimap.showSlider&&le.minimap.renderCharacters===Ne.minimap.renderCharacters&&le.minimap.maxColumn===Ne.minimap.maxColumn&&le.minimap.scale===Ne.minimap.scale&&le.verticalScrollbarWidth===Ne.verticalScrollbarWidth&&le.isViewportWrapping===Ne.isViewportWrapping,Ve=le.lineHeight,ze=le.typicalHalfwidthCharacterWidth,We=le.scrollBeyondLastLine,qe=le.minimap.renderCharacters;let Oe=Ie>=2?Math.round(le.minimap.scale*2):le.minimap.scale;const Ge=le.minimap.maxColumn,Qe=le.minimap.size,st=le.minimap.side,nt=le.verticalScrollbarWidth,ot=le.viewLineCount,ct=le.remainingWidth,lt=le.isViewportWrapping,gt=qe?2:3;let at=Math.floor(Ie*be);const ht=at/Ie;let Be=!1,Te=!1,xe=gt*Oe,He=Oe/Ie,Ye=1;if(Qe==="fill"||Qe==="fit"){const{typicalViewportLineCount:$e,extraLinesBeforeFirstLine:et,extraLinesBeyondLastLine:tt,desiredRatio:ut,minimapLineCount:it}=R.computeContainedMinimapLineCount({viewLineCount:ot,scrollBeyondLastLine:We,paddingTop:le.paddingTop,paddingBottom:le.paddingBottom,height:be,lineHeight:Ve,pixelRatio:Ie});if(ot/it>1)Be=!0,Te=!0,Oe=1,xe=1,He=Oe/Ie;else{let dt=!1,ft=Oe+1;if(Qe==="fit"){const St=Math.ceil((et+ot+tt)*xe);lt&&Re&&ct<=pe.stableFitRemainingWidth?(dt=!0,ft=pe.stableFitMaxMinimapScale):dt=St>at}if(Qe==="fill"||dt){Be=!0;const St=Oe;xe=Math.min(Ve*Ie,Math.max(1,Math.floor(1/ut))),lt&&Re&&ct<=pe.stableFitRemainingWidth&&(ft=pe.stableFitMaxMinimapScale),Oe=Math.min(ft,Math.max(1,Math.floor(xe/gt))),Oe>St&&(Ye=Math.min(2,Oe/St)),He=Oe/Ie/Ye,at=Math.ceil(Math.max($e,et+ot+tt)*xe),lt?(pe.stableMinimapLayoutInput=le,pe.stableFitRemainingWidth=ct,pe.stableFitMaxMinimapScale=Oe):(pe.stableMinimapLayoutInput=null,pe.stableFitRemainingWidth=0)}}}const Ze=Math.floor(Ge*He),Xe=Math.min(Ze,Math.max(0,Math.floor((ct-nt-2)*He/(ze+He)))+e.MINIMAP_GUTTER_WIDTH);let je=Math.floor(Ie*Xe);const Ae=je/Ie;je=Math.floor(je*Ye);const Ue=qe?1:2,Ke=st==="left"?0:Ce-Xe-nt;return{renderMinimap:Ue,minimapLeft:Ke,minimapWidth:Xe,minimapHeightIsEditorHeight:Be,minimapIsSampling:Te,minimapScale:Oe,minimapLineHeight:xe,minimapCanvasInnerWidth:je,minimapCanvasInnerHeight:at,minimapCanvasOuterWidth:Ae,minimapCanvasOuterHeight:ht}}static computeLayout(le,pe){const Ce=pe.outerWidth|0,be=pe.outerHeight|0,Ie=pe.lineHeight|0,Ne=pe.lineNumbersDigitCount|0,Re=pe.typicalHalfwidthCharacterWidth,Ve=pe.maxDigitWidth,ze=pe.pixelRatio,We=pe.viewLineCount,qe=le.get(134),Oe=qe==="inherit"?le.get(133):qe,Ge=Oe==="inherit"?le.get(129):Oe,Qe=le.get(132),st=pe.isDominatedByLongLines,nt=le.get(56),ot=le.get(66).renderType!==0,ct=le.get(67),lt=le.get(103),gt=le.get(82),at=le.get(71),ht=le.get(101),Be=ht.verticalScrollbarSize,Te=ht.verticalHasArrows,xe=ht.arrowSize,He=ht.horizontalScrollbarSize,Ye=le.get(42),Ze=le.get(108)!=="never";let Xe=le.get(64);Ye&&Ze&&(Xe+=16);let je=0;if(ot){const wt=Math.max(Ne,ct);je=Math.round(wt*Ve)}let Ae=0;nt&&(Ae=Ie*pe.glyphMarginDecorationLaneCount);let Ue=0,Ke=Ue+Ae,$e=Ke+je,et=$e+Xe;const tt=Ce-Ae-je-Xe;let ut=!1,it=!1,rt=-1;Oe==="inherit"&&st?(ut=!0,it=!0):Ge==="on"||Ge==="bounded"?it=!0:Ge==="wordWrapColumn"&&(rt=Qe);const dt=R._computeMinimapLayout({outerWidth:Ce,outerHeight:be,lineHeight:Ie,typicalHalfwidthCharacterWidth:Re,pixelRatio:ze,scrollBeyondLastLine:lt,paddingTop:gt.top,paddingBottom:gt.bottom,minimap:at,verticalScrollbarWidth:Be,viewLineCount:We,remainingWidth:tt,isViewportWrapping:it},pe.memory||new g);dt.renderMinimap!==0&&dt.minimapLeft===0&&(Ue+=dt.minimapWidth,Ke+=dt.minimapWidth,$e+=dt.minimapWidth,et+=dt.minimapWidth);const ft=tt-dt.minimapWidth,St=Math.max(1,Math.floor((ft-Be-2)/Re)),mt=Te?xe:0;return it&&(rt=Math.max(1,St),Ge==="bounded"&&(rt=Math.min(rt,Qe))),{width:Ce,height:be,glyphMarginLeft:Ue,glyphMarginWidth:Ae,glyphMarginDecorationLaneCount:pe.glyphMarginDecorationLaneCount,lineNumbersLeft:Ke,lineNumbersWidth:je,decorationsLeft:$e,decorationsWidth:Xe,contentLeft:et,contentWidth:ft,minimap:dt,viewportColumn:St,isWordWrapMinified:ut,isViewportWrapping:it,wrappingColumn:rt,verticalScrollbarWidth:Be,horizontalScrollbarHeight:He,overviewRuler:{top:mt,width:Be,height:be-2*mt,right:0}}}}e.EditorLayoutInfoComputer=R;class K extends C{constructor(){super(136,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[f.localize(46,null),f.localize(47,null)],type:"string",enum:["simple","advanced"],default:"simple",description:f.localize(48,null)}})}validate(le){return l(le,"simple",["simple","advanced"])}compute(le,pe,Ce){return pe.get(2)===2?"advanced":Ce}}class G extends C{constructor(){const le={enabled:!0};super(63,"lightbulb",le,{"editor.lightbulb.enabled":{type:"boolean",default:le.enabled,description:f.localize(49,null)}})}validate(le){return!le||typeof le!="object"?this.defaultValue:{enabled:a(le.enabled,this.defaultValue.enabled)}}}class Z extends C{constructor(){const le={enabled:!1,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(113,"stickyScroll",le,{"editor.stickyScroll.enabled":{type:"boolean",default:le.enabled,description:f.localize(50,null)},"editor.stickyScroll.maxLineCount":{type:"number",default:le.maxLineCount,minimum:1,maximum:10,description:f.localize(51,null)},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:le.defaultModel,description:f.localize(52,null)},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:le.scrollWithEditor,description:f.localize(53,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),maxLineCount:r.clampedInt(pe.maxLineCount,this.defaultValue.maxLineCount,1,10),defaultModel:l(pe.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:a(pe.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class J extends C{constructor(){const le={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(138,"inlayHints",le,{"editor.inlayHints.enabled":{type:"string",default:le.enabled,description:f.localize(54,null),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[f.localize(55,null),f.localize(56,null,y.isMacintosh?"Ctrl+Option":"Ctrl+Alt"),f.localize(57,null,y.isMacintosh?"Ctrl+Option":"Ctrl+Alt"),f.localize(58,null)]},"editor.inlayHints.fontSize":{type:"number",default:le.fontSize,markdownDescription:f.localize(59,null,"`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:le.fontFamily,markdownDescription:f.localize(60,null,"`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:le.padding,description:f.localize(61,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return typeof pe.enabled=="boolean"&&(pe.enabled=pe.enabled?"on":"off"),{enabled:l(pe.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:r.clampedInt(pe.fontSize,this.defaultValue.fontSize,0,100),fontFamily:d.string(pe.fontFamily,this.defaultValue.fontFamily),padding:a(pe.padding,this.defaultValue.padding)}}}class X extends C{constructor(){super(64,"lineDecorationsWidth",10)}validate(le){return typeof le=="string"&&/^\d+(\.\d+)?ch$/.test(le)?-parseFloat(le.substring(0,le.length-2)):r.clampedInt(le,this.defaultValue,0,1e3)}compute(le,pe,Ce){return Ce<0?r.clampedInt(-Ce*le.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):Ce}}class H extends o{constructor(){super(65,"lineHeight",e.EDITOR_FONT_DEFAULTS.lineHeight,le=>o.clamp(le,0,150),{markdownDescription:f.localize(62,null)})}compute(le,pe,Ce){return le.fontInfo.lineHeight}}class B extends C{constructor(){const le={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1};super(71,"minimap",le,{"editor.minimap.enabled":{type:"boolean",default:le.enabled,description:f.localize(63,null)},"editor.minimap.autohide":{type:"boolean",default:le.autohide,description:f.localize(64,null)},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[f.localize(65,null),f.localize(66,null),f.localize(67,null)],default:le.size,description:f.localize(68,null)},"editor.minimap.side":{type:"string",enum:["left","right"],default:le.side,description:f.localize(69,null)},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:le.showSlider,description:f.localize(70,null)},"editor.minimap.scale":{type:"number",default:le.scale,minimum:1,maximum:3,enum:[1,2,3],description:f.localize(71,null)},"editor.minimap.renderCharacters":{type:"boolean",default:le.renderCharacters,description:f.localize(72,null)},"editor.minimap.maxColumn":{type:"number",default:le.maxColumn,description:f.localize(73,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),autohide:a(pe.autohide,this.defaultValue.autohide),size:l(pe.size,this.defaultValue.size,["proportional","fill","fit"]),side:l(pe.side,this.defaultValue.side,["right","left"]),showSlider:l(pe.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:a(pe.renderCharacters,this.defaultValue.renderCharacters),scale:r.clampedInt(pe.scale,1,1,3),maxColumn:r.clampedInt(pe.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}function V(me){return me==="ctrlCmd"?y.isMacintosh?"metaKey":"ctrlKey":"altKey"}class Y extends C{constructor(){super(82,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:f.localize(74,null)},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:f.localize(75,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{top:r.clampedInt(pe.top,0,0,1e3),bottom:r.clampedInt(pe.bottom,0,0,1e3)}}}class ie extends C{constructor(){const le={enabled:!0,cycle:!0};super(84,"parameterHints",le,{"editor.parameterHints.enabled":{type:"boolean",default:le.enabled,description:f.localize(76,null)},"editor.parameterHints.cycle":{type:"boolean",default:le.cycle,description:f.localize(77,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),cycle:a(pe.cycle,this.defaultValue.cycle)}}}class ae extends n{constructor(){super(140)}compute(le,pe,Ce){return le.pixelRatio}}class ce extends C{constructor(){const le={other:"on",comments:"off",strings:"off"},pe=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[f.localize(78,null),f.localize(79,null),f.localize(80,null)]}];super(87,"quickSuggestions",le,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:pe,default:le.strings,description:f.localize(81,null)},comments:{anyOf:pe,default:le.comments,description:f.localize(82,null)},other:{anyOf:pe,default:le.other,description:f.localize(83,null)}},default:le,markdownDescription:f.localize(84,null,"#editor.suggestOnTriggerCharacters#")}),this.defaultValue=le}validate(le){if(typeof le=="boolean"){const ze=le?"on":"off";return{comments:ze,strings:ze,other:ze}}if(!le||typeof le!="object")return this.defaultValue;const{other:pe,comments:Ce,strings:be}=le,Ie=["on","inline","off"];let Ne,Re,Ve;return typeof pe=="boolean"?Ne=pe?"on":"off":Ne=l(pe,this.defaultValue.other,Ie),typeof Ce=="boolean"?Re=Ce?"on":"off":Re=l(Ce,this.defaultValue.comments,Ie),typeof be=="boolean"?Ve=be?"on":"off":Ve=l(be,this.defaultValue.strings,Ie),{other:Ne,comments:Re,strings:Ve}}}class de extends C{constructor(){super(66,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[f.localize(85,null),f.localize(86,null),f.localize(87,null),f.localize(88,null)],default:"on",description:f.localize(89,null)})}validate(le){let pe=this.defaultValue.renderType,Ce=this.defaultValue.renderFn;return typeof le<"u"&&(typeof le=="function"?(pe=4,Ce=le):le==="interval"?pe=3:le==="relative"?pe=2:le==="on"?pe=1:pe=0),{renderType:pe,renderFn:Ce}}}function he(me){const le=me.get(96);return le==="editable"?me.get(89):le!=="on"}e.filterValidationDecorations=he;class ue extends C{constructor(){const le=[],pe={type:"number",description:f.localize(90,null)};super(100,"rulers",le,{type:"array",items:{anyOf:[pe,{type:["object"],properties:{column:pe,color:{type:"string",description:f.localize(91,null),format:"color-hex"}}}]},default:le,description:f.localize(92,null)})}validate(le){if(Array.isArray(le)){const pe=[];for(const Ce of le)if(typeof Ce=="number")pe.push({column:r.clampedInt(Ce,0,0,1e4),color:null});else if(Ce&&typeof Ce=="object"){const be=Ce;pe.push({column:r.clampedInt(be.column,0,0,1e4),color:be.color})}return pe.sort((Ce,be)=>Ce.column-be.column),pe}return this.defaultValue}}class te extends C{constructor(){super(90,"readOnlyMessage",void 0)}validate(le){return!le||typeof le!="object"?this.defaultValue:le}}function q(me,le){if(typeof me!="string")return le;switch(me){case"hidden":return 2;case"visible":return 3;default:return 1}}class z extends C{constructor(){const le={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1};super(101,"scrollbar",le,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[f.localize(93,null),f.localize(94,null),f.localize(95,null)],default:"auto",description:f.localize(96,null)},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[f.localize(97,null),f.localize(98,null),f.localize(99,null)],default:"auto",description:f.localize(100,null)},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:le.verticalScrollbarSize,description:f.localize(101,null)},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:le.horizontalScrollbarSize,description:f.localize(102,null)},"editor.scrollbar.scrollByPage":{type:"boolean",default:le.scrollByPage,description:f.localize(103,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le,Ce=r.clampedInt(pe.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),be=r.clampedInt(pe.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:r.clampedInt(pe.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:q(pe.vertical,this.defaultValue.vertical),horizontal:q(pe.horizontal,this.defaultValue.horizontal),useShadows:a(pe.useShadows,this.defaultValue.useShadows),verticalHasArrows:a(pe.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:a(pe.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:a(pe.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:a(pe.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:Ce,horizontalSliderSize:r.clampedInt(pe.horizontalSliderSize,Ce,0,1e3),verticalScrollbarSize:be,verticalSliderSize:r.clampedInt(pe.verticalSliderSize,be,0,1e3),scrollByPage:a(pe.scrollByPage,this.defaultValue.scrollByPage)}}}e.inUntrustedWorkspace="inUntrustedWorkspace",e.unicodeHighlightConfigKeys={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};class ee extends C{constructor(){const le={nonBasicASCII:e.inUntrustedWorkspace,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:e.inUntrustedWorkspace,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(123,"unicodeHighlight",le,{[e.unicodeHighlightConfigKeys.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.nonBasicASCII,description:f.localize(104,null)},[e.unicodeHighlightConfigKeys.invisibleCharacters]:{restricted:!0,type:"boolean",default:le.invisibleCharacters,description:f.localize(105,null)},[e.unicodeHighlightConfigKeys.ambiguousCharacters]:{restricted:!0,type:"boolean",default:le.ambiguousCharacters,description:f.localize(106,null)},[e.unicodeHighlightConfigKeys.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.includeComments,description:f.localize(107,null)},[e.unicodeHighlightConfigKeys.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.includeStrings,description:f.localize(108,null)},[e.unicodeHighlightConfigKeys.allowedCharacters]:{restricted:!0,type:"object",default:le.allowedCharacters,description:f.localize(109,null),additionalProperties:{type:"boolean"}},[e.unicodeHighlightConfigKeys.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:le.allowedLocales,description:f.localize(110,null)}})}applyUpdate(le,pe){let Ce=!1;pe.allowedCharacters&&le&&(k.equals(le.allowedCharacters,pe.allowedCharacters)||(le=Object.assign(Object.assign({},le),{allowedCharacters:pe.allowedCharacters}),Ce=!0)),pe.allowedLocales&&le&&(k.equals(le.allowedLocales,pe.allowedLocales)||(le=Object.assign(Object.assign({},le),{allowedLocales:pe.allowedLocales}),Ce=!0));const be=super.applyUpdate(le,pe);return Ce?new s(be.newValue,!0):be}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{nonBasicASCII:ge(pe.nonBasicASCII,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),invisibleCharacters:a(pe.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:a(pe.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:ge(pe.includeComments,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),includeStrings:ge(pe.includeStrings,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),allowedCharacters:this.validateBooleanMap(le.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(le.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(le,pe){if(typeof le!="object"||!le)return pe;const Ce={};for(const[be,Ie]of Object.entries(le))Ie===!0&&(Ce[be]=!0);return Ce}}class $ extends C{constructor(){const le={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1};super(61,"inlineSuggest",le,{"editor.inlineSuggest.enabled":{type:"boolean",default:le.enabled,description:f.localize(111,null)},"editor.inlineSuggest.showToolbar":{type:"string",default:le.showToolbar,enum:["always","onHover"],enumDescriptions:[f.localize(112,null),f.localize(113,null)],description:f.localize(114,null)},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:le.suppressSuggestions,description:f.localize(115,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),mode:l(pe.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:l(pe.showToolbar,this.defaultValue.showToolbar,["always","onHover"]),suppressSuggestions:a(pe.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:a(pe.keepOnBlur,this.defaultValue.keepOnBlur)}}}class re extends C{constructor(){const le={enabled:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(14,"bracketPairColorization",le,{"editor.bracketPairColorization.enabled":{type:"boolean",default:le.enabled,markdownDescription:f.localize(116,null,"`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:le.independentColorPoolPerBracketType,description:f.localize(117,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:a(pe.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class oe extends C{constructor(){const le={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(15,"guides",le,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[f.localize(118,null),f.localize(119,null),f.localize(120,null)],default:le.bracketPairs,description:f.localize(121,null)},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[f.localize(122,null),f.localize(123,null),f.localize(124,null)],default:le.bracketPairsHorizontal,description:f.localize(125,null)},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:le.highlightActiveBracketPair,description:f.localize(126,null)},"editor.guides.indentation":{type:"boolean",default:le.indentation,description:f.localize(127,null)},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[f.localize(128,null),f.localize(129,null),f.localize(130,null)],default:le.highlightActiveIndentation,description:f.localize(131,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{bracketPairs:ge(pe.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:ge(pe.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:a(pe.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:a(pe.indentation,this.defaultValue.indentation),highlightActiveIndentation:ge(pe.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function ge(me,le,pe){const Ce=pe.indexOf(me);return Ce===-1?le:pe[Ce]}class ve extends C{constructor(){const le={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(116,"suggest",le,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[f.localize(132,null),f.localize(133,null)],default:le.insertMode,description:f.localize(134,null)},"editor.suggest.filterGraceful":{type:"boolean",default:le.filterGraceful,description:f.localize(135,null)},"editor.suggest.localityBonus":{type:"boolean",default:le.localityBonus,description:f.localize(136,null)},"editor.suggest.shareSuggestSelections":{type:"boolean",default:le.shareSuggestSelections,markdownDescription:f.localize(137,null)},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[f.localize(138,null),f.localize(139,null),f.localize(140,null),f.localize(141,null)],default:le.selectionMode,markdownDescription:f.localize(142,null)},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:le.snippetsPreventQuickSuggestions,description:f.localize(143,null)},"editor.suggest.showIcons":{type:"boolean",default:le.showIcons,description:f.localize(144,null)},"editor.suggest.showStatusBar":{type:"boolean",default:le.showStatusBar,description:f.localize(145,null)},"editor.suggest.preview":{type:"boolean",default:le.preview,description:f.localize(146,null)},"editor.suggest.showInlineDetails":{type:"boolean",default:le.showInlineDetails,description:f.localize(147,null)},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:f.localize(148,null)},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:f.localize(149,null)},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:f.localize(150,null)},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:f.localize(151,null)},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:f.localize(152,null)},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:f.localize(153,null)},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:f.localize(154,null)},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:f.localize(155,null)},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:f.localize(156,null)},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:f.localize(157,null)},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:f.localize(158,null)},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:f.localize(159,null)},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:f.localize(160,null)},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:f.localize(161,null)},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:f.localize(162,null)},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:f.localize(163,null)},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:f.localize(164,null)},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:f.localize(165,null)},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:f.localize(166,null)},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:f.localize(167,null)},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:f.localize(168,null)},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:f.localize(169,null)},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:f.localize(170,null)},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:f.localize(171,null)},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:f.localize(172,null)},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:f.localize(173,null)},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:f.localize(174,null)},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:f.localize(175,null)},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:f.localize(176,null)},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:f.localize(177,null)},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:f.localize(178,null)},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:f.localize(179,null)}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{insertMode:l(pe.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:a(pe.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:a(pe.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:a(pe.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:a(pe.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:l(pe.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:a(pe.showIcons,this.defaultValue.showIcons),showStatusBar:a(pe.showStatusBar,this.defaultValue.showStatusBar),preview:a(pe.preview,this.defaultValue.preview),previewMode:l(pe.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:a(pe.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:a(pe.showMethods,this.defaultValue.showMethods),showFunctions:a(pe.showFunctions,this.defaultValue.showFunctions),showConstructors:a(pe.showConstructors,this.defaultValue.showConstructors),showDeprecated:a(pe.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:a(pe.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:a(pe.showFields,this.defaultValue.showFields),showVariables:a(pe.showVariables,this.defaultValue.showVariables),showClasses:a(pe.showClasses,this.defaultValue.showClasses),showStructs:a(pe.showStructs,this.defaultValue.showStructs),showInterfaces:a(pe.showInterfaces,this.defaultValue.showInterfaces),showModules:a(pe.showModules,this.defaultValue.showModules),showProperties:a(pe.showProperties,this.defaultValue.showProperties),showEvents:a(pe.showEvents,this.defaultValue.showEvents),showOperators:a(pe.showOperators,this.defaultValue.showOperators),showUnits:a(pe.showUnits,this.defaultValue.showUnits),showValues:a(pe.showValues,this.defaultValue.showValues),showConstants:a(pe.showConstants,this.defaultValue.showConstants),showEnums:a(pe.showEnums,this.defaultValue.showEnums),showEnumMembers:a(pe.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:a(pe.showKeywords,this.defaultValue.showKeywords),showWords:a(pe.showWords,this.defaultValue.showWords),showColors:a(pe.showColors,this.defaultValue.showColors),showFiles:a(pe.showFiles,this.defaultValue.showFiles),showReferences:a(pe.showReferences,this.defaultValue.showReferences),showFolders:a(pe.showFolders,this.defaultValue.showFolders),showTypeParameters:a(pe.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:a(pe.showSnippets,this.defaultValue.showSnippets),showUsers:a(pe.showUsers,this.defaultValue.showUsers),showIssues:a(pe.showIssues,this.defaultValue.showIssues)}}}class Se extends C{constructor(){super(111,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:f.localize(180,null),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:f.localize(181,null),default:!0,type:"boolean"}})}validate(le){return!le||typeof le!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:a(le.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:a(le.selectSubwords,this.defaultValue.selectSubwords)}}}class Le extends C{constructor(){super(135,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[f.localize(182,null),f.localize(183,null),f.localize(184,null),f.localize(185,null)],description:f.localize(186,null),default:"same"}})}validate(le){switch(le){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(le,pe,Ce){return pe.get(2)===2?0:Ce}}class De extends n{constructor(){super(143)}compute(le,pe,Ce){const be=pe.get(142);return{isDominatedByLongLines:le.isDominatedByLongLines,isWordWrapMinified:be.isWordWrapMinified,isViewportWrapping:be.isViewportWrapping,wrappingColumn:be.wrappingColumn}}}class ye extends C{constructor(){const le={enabled:!0,showDropSelector:"afterDrop"};super(35,"dropIntoEditor",le,{"editor.dropIntoEditor.enabled":{type:"boolean",default:le.enabled,markdownDescription:f.localize(187,null)},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:f.localize(188,null),enum:["afterDrop","never"],enumDescriptions:[f.localize(189,null),f.localize(190,null)],default:"afterDrop"}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),showDropSelector:l(pe.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}class Ee extends C{constructor(){const le={enabled:!0,showPasteSelector:"afterPaste"};super(83,"pasteAs",le,{"editor.pasteAs.enabled":{type:"boolean",default:le.enabled,markdownDescription:f.localize(191,null)},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:f.localize(192,null),enum:["afterPaste","never"],enumDescriptions:[f.localize(193,null),f.localize(194,null)],default:"afterPaste"}})}validate(le){if(!le||typeof le!="object")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),showPasteSelector:l(pe.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}const Me="Consolas, 'Courier New', monospace",Pe="Menlo, Monaco, 'Courier New', monospace",Fe="'Droid Sans Mono', 'monospace', monospace";e.EDITOR_FONT_DEFAULTS={fontFamily:y.isMacintosh?Pe:y.isLinux?Fe:Me,fontWeight:"normal",fontSize:y.isMacintosh?12:14,lineHeight:0,letterSpacing:0},e.editorOptionsRegistry=[];function _e(me){return e.editorOptionsRegistry[me.id]=me,me}e.EditorOptions={acceptSuggestionOnCommitCharacter:_e(new u(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:f.localize(195,null)})),acceptSuggestionOnEnter:_e(new p(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",f.localize(196,null),""],markdownDescription:f.localize(197,null)})),accessibilitySupport:_e(new b),accessibilityPageSize:_e(new r(3,"accessibilityPageSize",10,1,1073741824,{description:f.localize(198,null),tags:["accessibility"]})),ariaLabel:_e(new d(4,"ariaLabel",f.localize(199,null))),ariaRequired:_e(new u(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:_e(new u(7,"screenReaderAnnounceInlineSuggestion",!0,{description:f.localize(200,null),tags:["accessibility"]})),autoClosingBrackets:_e(new p(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",f.localize(201,null),f.localize(202,null),""],description:f.localize(203,null)})),autoClosingDelete:_e(new p(8,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",f.localize(204,null),""],description:f.localize(205,null)})),autoClosingOvertype:_e(new p(9,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",f.localize(206,null),""],description:f.localize(207,null)})),autoClosingQuotes:_e(new p(10,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",f.localize(208,null),f.localize(209,null),""],description:f.localize(210,null)})),autoIndent:_e(new m(11,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],v,{enumDescriptions:[f.localize(211,null),f.localize(212,null),f.localize(213,null),f.localize(214,null),f.localize(215,null)],description:f.localize(216,null)})),automaticLayout:_e(new u(12,"automaticLayout",!1)),autoSurround:_e(new p(13,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[f.localize(217,null),f.localize(218,null),f.localize(219,null),""],description:f.localize(220,null)})),bracketPairColorization:_e(new re),bracketPairGuides:_e(new oe),stickyTabStops:_e(new u(114,"stickyTabStops",!1,{description:f.localize(221,null)})),codeLens:_e(new u(16,"codeLens",!0,{description:f.localize(222,null)})),codeLensFontFamily:_e(new d(17,"codeLensFontFamily","",{description:f.localize(223,null)})),codeLensFontSize:_e(new r(18,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:f.localize(224,null)})),colorDecorators:_e(new u(19,"colorDecorators",!0,{description:f.localize(225,null)})),colorDecoratorActivatedOn:_e(new p(145,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[f.localize(226,null),f.localize(227,null),f.localize(228,null)],description:f.localize(229,null)})),colorDecoratorsLimit:_e(new r(20,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:f.localize(230,null)})),columnSelection:_e(new u(21,"columnSelection",!1,{description:f.localize(231,null)})),comments:_e(new w),contextmenu:_e(new u(23,"contextmenu",!0)),copyWithSyntaxHighlighting:_e(new u(24,"copyWithSyntaxHighlighting",!0,{description:f.localize(232,null)})),cursorBlinking:_e(new m(25,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],E,{description:f.localize(233,null)})),cursorSmoothCaretAnimation:_e(new p(26,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[f.localize(234,null),f.localize(235,null),f.localize(236,null)],description:f.localize(237,null)})),cursorStyle:_e(new m(27,"cursorStyle",I.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],M,{description:f.localize(238,null)})),cursorSurroundingLines:_e(new r(28,"cursorSurroundingLines",0,0,1073741824,{description:f.localize(239,null)})),cursorSurroundingLinesStyle:_e(new p(29,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[f.localize(240,null),f.localize(241,null)],description:f.localize(242,null)})),cursorWidth:_e(new r(30,"cursorWidth",0,0,1073741824,{markdownDescription:f.localize(243,null)})),disableLayerHinting:_e(new u(31,"disableLayerHinting",!1)),disableMonospaceOptimizations:_e(new u(32,"disableMonospaceOptimizations",!1)),domReadOnly:_e(new u(33,"domReadOnly",!1)),dragAndDrop:_e(new u(34,"dragAndDrop",!0,{description:f.localize(244,null)})),emptySelectionClipboard:_e(new x),dropIntoEditor:_e(new ye),stickyScroll:_e(new Z),experimentalWhitespaceRendering:_e(new p(37,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[f.localize(245,null),f.localize(246,null),f.localize(247,null)],description:f.localize(248,null)})),extraEditorClassName:_e(new d(38,"extraEditorClassName","")),fastScrollSensitivity:_e(new o(39,"fastScrollSensitivity",5,me=>me<=0?5:me,{markdownDescription:f.localize(249,null)})),find:_e(new T),fixedOverflowWidgets:_e(new u(41,"fixedOverflowWidgets",!1)),folding:_e(new u(42,"folding",!0,{description:f.localize(250,null)})),foldingStrategy:_e(new p(43,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[f.localize(251,null),f.localize(252,null)],description:f.localize(253,null)})),foldingHighlight:_e(new u(44,"foldingHighlight",!0,{description:f.localize(254,null)})),foldingImportsByDefault:_e(new u(45,"foldingImportsByDefault",!1,{description:f.localize(255,null)})),foldingMaximumRegions:_e(new r(46,"foldingMaximumRegions",5e3,10,65e3,{description:f.localize(256,null)})),unfoldOnClickAfterEndOfLine:_e(new u(47,"unfoldOnClickAfterEndOfLine",!1,{description:f.localize(257,null)})),fontFamily:_e(new d(48,"fontFamily",e.EDITOR_FONT_DEFAULTS.fontFamily,{description:f.localize(258,null)})),fontInfo:_e(new F),fontLigatures2:_e(new A),fontSize:_e(new O),fontWeight:_e(new W),fontVariations:_e(new N),formatOnPaste:_e(new u(54,"formatOnPaste",!1,{description:f.localize(259,null)})),formatOnType:_e(new u(55,"formatOnType",!1,{description:f.localize(260,null)})),glyphMargin:_e(new u(56,"glyphMargin",!0,{description:f.localize(261,null)})),gotoLocation:_e(new U),hideCursorInOverviewRuler:_e(new u(58,"hideCursorInOverviewRuler",!1,{description:f.localize(262,null)})),hover:_e(new j),inDiffEditor:_e(new u(60,"inDiffEditor",!1)),letterSpacing:_e(new o(62,"letterSpacing",e.EDITOR_FONT_DEFAULTS.letterSpacing,me=>o.clamp(me,-5,20),{description:f.localize(263,null)})),lightbulb:_e(new G),lineDecorationsWidth:_e(new X),lineHeight:_e(new H),lineNumbers:_e(new de),lineNumbersMinChars:_e(new r(67,"lineNumbersMinChars",5,1,300)),linkedEditing:_e(new u(68,"linkedEditing",!1,{description:f.localize(264,null)})),links:_e(new u(69,"links",!0,{description:f.localize(265,null)})),matchBrackets:_e(new p(70,"matchBrackets","always",["always","near","never"],{description:f.localize(266,null)})),minimap:_e(new B),mouseStyle:_e(new p(72,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:_e(new o(73,"mouseWheelScrollSensitivity",1,me=>me===0?1:me,{markdownDescription:f.localize(267,null)})),mouseWheelZoom:_e(new u(74,"mouseWheelZoom",!1,{markdownDescription:f.localize(268,null)})),multiCursorMergeOverlapping:_e(new u(75,"multiCursorMergeOverlapping",!0,{description:f.localize(269,null)})),multiCursorModifier:_e(new m(76,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],V,{markdownEnumDescriptions:[f.localize(270,null),f.localize(271,null)],markdownDescription:f.localize(272,null)})),multiCursorPaste:_e(new p(77,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[f.localize(273,null),f.localize(274,null)],markdownDescription:f.localize(275,null)})),multiCursorLimit:_e(new r(78,"multiCursorLimit",1e4,1,1e5,{markdownDescription:f.localize(276,null)})),occurrencesHighlight:_e(new u(79,"occurrencesHighlight",!0,{description:f.localize(277,null)})),overviewRulerBorder:_e(new u(80,"overviewRulerBorder",!0,{description:f.localize(278,null)})),overviewRulerLanes:_e(new r(81,"overviewRulerLanes",3,0,3)),padding:_e(new Y),pasteAs:_e(new Ee),parameterHints:_e(new ie),peekWidgetDefaultFocus:_e(new p(85,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[f.localize(279,null),f.localize(280,null)],description:f.localize(281,null)})),definitionLinkOpensInPeek:_e(new u(86,"definitionLinkOpensInPeek",!1,{description:f.localize(282,null)})),quickSuggestions:_e(new ce),quickSuggestionsDelay:_e(new r(88,"quickSuggestionsDelay",10,0,1073741824,{description:f.localize(283,null)})),readOnly:_e(new u(89,"readOnly",!1)),readOnlyMessage:_e(new te),renameOnType:_e(new u(91,"renameOnType",!1,{description:f.localize(284,null),markdownDeprecationMessage:f.localize(285,null)})),renderControlCharacters:_e(new u(92,"renderControlCharacters",!0,{description:f.localize(286,null),restricted:!0})),renderFinalNewline:_e(new p(93,"renderFinalNewline",y.isLinux?"dimmed":"on",["off","on","dimmed"],{description:f.localize(287,null)})),renderLineHighlight:_e(new p(94,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",f.localize(288,null)],description:f.localize(289,null)})),renderLineHighlightOnlyWhenFocus:_e(new u(95,"renderLineHighlightOnlyWhenFocus",!1,{description:f.localize(290,null)})),renderValidationDecorations:_e(new p(96,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:_e(new p(97,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",f.localize(291,null),f.localize(292,null),f.localize(293,null),""],description:f.localize(294,null)})),revealHorizontalRightPadding:_e(new r(98,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:_e(new u(99,"roundedSelection",!0,{description:f.localize(295,null)})),rulers:_e(new ue),scrollbar:_e(new z),scrollBeyondLastColumn:_e(new r(102,"scrollBeyondLastColumn",4,0,1073741824,{description:f.localize(296,null)})),scrollBeyondLastLine:_e(new u(103,"scrollBeyondLastLine",!0,{description:f.localize(297,null)})),scrollPredominantAxis:_e(new u(104,"scrollPredominantAxis",!0,{description:f.localize(298,null)})),selectionClipboard:_e(new u(105,"selectionClipboard",!0,{description:f.localize(299,null),included:y.isLinux})),selectionHighlight:_e(new u(106,"selectionHighlight",!0,{description:f.localize(300,null)})),selectOnLineNumbers:_e(new u(107,"selectOnLineNumbers",!0)),showFoldingControls:_e(new p(108,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[f.localize(301,null),f.localize(302,null),f.localize(303,null)],description:f.localize(304,null)})),showUnused:_e(new u(109,"showUnused",!0,{description:f.localize(305,null)})),showDeprecated:_e(new u(137,"showDeprecated",!0,{description:f.localize(306,null)})),inlayHints:_e(new J),snippetSuggestions:_e(new p(110,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[f.localize(307,null),f.localize(308,null),f.localize(309,null),f.localize(310,null)],description:f.localize(311,null)})),smartSelect:_e(new Se),smoothScrolling:_e(new u(112,"smoothScrolling",!1,{description:f.localize(312,null)})),stopRenderingLineAfter:_e(new r(115,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:_e(new ve),inlineSuggest:_e(new $),inlineCompletionsAccessibilityVerbose:_e(new u(146,"inlineCompletionsAccessibilityVerbose",!1,{description:f.localize(313,null)})),suggestFontSize:_e(new r(117,"suggestFontSize",0,0,1e3,{markdownDescription:f.localize(314,null,"`0`","`#editor.fontSize#`")})),suggestLineHeight:_e(new r(118,"suggestLineHeight",0,0,1e3,{markdownDescription:f.localize(315,null,"`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:_e(new u(119,"suggestOnTriggerCharacters",!0,{description:f.localize(316,null)})),suggestSelection:_e(new p(120,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[f.localize(317,null),f.localize(318,null),f.localize(319,null)],description:f.localize(320,null)})),tabCompletion:_e(new p(121,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[f.localize(321,null),f.localize(322,null),f.localize(323,null)],description:f.localize(324,null)})),tabIndex:_e(new r(122,"tabIndex",0,-1,1073741824)),unicodeHighlight:_e(new ee),unusualLineTerminators:_e(new p(124,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[f.localize(325,null),f.localize(326,null),f.localize(327,null)],description:f.localize(328,null)})),useShadowDOM:_e(new u(125,"useShadowDOM",!0)),useTabStops:_e(new u(126,"useTabStops",!0,{description:f.localize(329,null)})),wordBreak:_e(new p(127,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[f.localize(330,null),f.localize(331,null)],description:f.localize(332,null)})),wordSeparators:_e(new d(128,"wordSeparators",S.USUAL_WORD_SEPARATORS,{description:f.localize(333,null)})),wordWrap:_e(new p(129,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[f.localize(334,null),f.localize(335,null),f.localize(336,null),f.localize(337,null)],description:f.localize(338,null)})),wordWrapBreakAfterCharacters:_e(new d(130,"wordWrapBreakAfterCharacters"," })]?|/&.,;\xA2\xB0\u2032\u2033\u2030\u2103\u3001\u3002\uFF61\uFF64\uFFE0\uFF0C\uFF0E\uFF1A\uFF1B\uFF1F\uFF01\uFF05\u30FB\uFF65\u309D\u309E\u30FD\u30FE\u30FC\u30A1\u30A3\u30A5\u30A7\u30A9\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u3041\u3043\u3045\u3047\u3049\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u31F0\u31F1\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3005\u303B\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D\uFF6E\uFF6F\uFF70\u201D\u3009\u300B\u300D\u300F\u3011\u3015\uFF09\uFF3D\uFF5D\uFF63")),wordWrapBreakBeforeCharacters:_e(new d(131,"wordWrapBreakBeforeCharacters","([{\u2018\u201C\u3008\u300A\u300C\u300E\u3010\u3014\uFF08\uFF3B\uFF5B\uFF62\xA3\xA5\uFF04\uFFE1\uFFE5+\uFF0B")),wordWrapColumn:_e(new r(132,"wordWrapColumn",80,1,1073741824,{markdownDescription:f.localize(339,null)})),wordWrapOverride1:_e(new p(133,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:_e(new p(134,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:_e(new P),defaultColorDecorators:_e(new u(144,"defaultColorDecorators",!1,{markdownDescription:f.localize(340,null)})),pixelRatio:_e(new ae),tabFocusMode:_e(new u(141,"tabFocusMode",!1,{markdownDescription:f.localize(341,null)})),layoutInfo:_e(new R),wrappingInfo:_e(new De),wrappingIndent:_e(new Le),wrappingStrategy:_e(new K)}}),define(ne[620],se([1,0,7,35,11,59,36,12,5,173]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewCursor=void 0;class C{constructor(n,t,a,u,h,r,c){this.top=n,this.left=t,this.paddingLeft=a,this.width=u,this.height=h,this.textContent=r,this.textContentClassName=c}}class s{constructor(n){this._context=n;const t=this._context.configuration.options,a=t.get(49);this._cursorStyle=t.get(27),this._lineHeight=t.get(65),this._typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(30),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,k.createFastDomNode)(document.createElement("div")),this._domNode.setClassName(`cursor ${g.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),(0,D.applyFontInfo)(this._domNode,a),this._domNode.setDisplay("none"),this._position=new f.Position(1,1),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(n){const t=this._context.configuration.options,a=t.get(49);return this._cursorStyle=t.get(27),this._lineHeight=t.get(65),this._typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(30),this._typicalHalfwidthCharacterWidth),(0,D.applyFontInfo)(this._domNode,a),!0}onCursorPositionChanged(n,t){return t?this._domNode.domNode.style.transitionProperty="none":this._domNode.domNode.style.transitionProperty="",this._position=n,!0}_getGraphemeAwarePosition(){const{lineNumber:n,column:t}=this._position,a=this._context.viewModel.getLineContent(n),[u,h]=y.getCharContainingOffset(a,t-1);return[new f.Position(n,u+1),a.substring(u,h)]}_prepareRender(n){let t="",a="";const[u,h]=this._getGraphemeAwarePosition();if(this._cursorStyle===S.TextEditorCursorStyle.Line||this._cursorStyle===S.TextEditorCursorStyle.LineThin){const m=n.visibleRangeForPosition(u);if(!m||m.outsideRenderedLine)return null;let v;this._cursorStyle===S.TextEditorCursorStyle.Line?(v=L.computeScreenAwareSize(this._lineCursorWidth>0?this._lineCursorWidth:2),v>2&&(t=h,a=this._getTokenClassName(u))):v=L.computeScreenAwareSize(1);let b=m.left,w=0;v>=2&&b>=1&&(w=1,b-=w);const E=n.getVerticalOffsetForLineNumber(u.lineNumber)-n.bigNumbersDelta;return new C(E,b,w,v,this._lineHeight,t,a)}const r=n.linesVisibleRangesForRange(new _.Range(u.lineNumber,u.column,u.lineNumber,u.column+h.length),!1);if(!r||r.length===0)return null;const c=r[0];if(c.outsideRenderedLine||c.ranges.length===0)return null;const o=c.ranges[0],d=h===" "?this._typicalHalfwidthCharacterWidth:o.width<1?this._typicalHalfwidthCharacterWidth:o.width;this._cursorStyle===S.TextEditorCursorStyle.Block&&(t=h,a=this._getTokenClassName(u));let l=n.getVerticalOffsetForLineNumber(u.lineNumber)-n.bigNumbersDelta,p=this._lineHeight;return(this._cursorStyle===S.TextEditorCursorStyle.Underline||this._cursorStyle===S.TextEditorCursorStyle.UnderlineThin)&&(l+=this._lineHeight-2,p=2),new C(l,o.left,0,d,p,t,a)}_getTokenClassName(n){const t=this._context.viewModel.getViewLineData(n.lineNumber),a=t.tokens.findTokenIndexAtOffset(n.column-1);return t.tokens.getClassName(a)}prepareRender(n){this._renderData=this._prepareRender(n)}render(n){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${g.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ${this._renderData.textContentClassName}`),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}e.ViewCursor=s}),define(ne[621],se([1,0,42,271,36]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorOptions=void 0;class D{get editorOptions(){return this._options}constructor(_,g){this.diffEditorWidth=g,this.couldShowInlineViewBecauseOfSize=(0,L.derived)(s=>this._options.read(s).renderSideBySide&&this.diffEditorWidth.read(s)<=this._options.read(s).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=(0,L.derived)(s=>this._options.read(s).renderOverviewRuler),this.renderSideBySide=(0,L.derived)(s=>this._options.read(s).renderSideBySide&&!(this._options.read(s).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(s))),this.readOnly=(0,L.derived)(s=>this._options.read(s).readOnly),this.shouldRenderRevertArrows=(0,L.derived)(s=>!(!this._options.read(s).renderMarginRevertIcon||!this.renderSideBySide.read(s)||this.readOnly.read(s))),this.renderIndicators=(0,L.derived)(s=>this._options.read(s).renderIndicators),this.enableSplitViewResizing=(0,L.derived)(s=>this._options.read(s).enableSplitViewResizing),this.splitViewDefaultRatio=(0,L.derived)(s=>this._options.read(s).splitViewDefaultRatio),this.ignoreTrimWhitespace=(0,L.derived)(s=>this._options.read(s).ignoreTrimWhitespace),this.maxComputationTimeMs=(0,L.derived)(s=>this._options.read(s).maxComputationTime),this.showMoves=(0,L.derived)(s=>this._options.read(s).experimental.showMoves&&this.renderSideBySide.read(s)),this.isInEmbeddedEditor=(0,L.derived)(s=>this._options.read(s).isInEmbeddedEditor),this.diffWordWrap=(0,L.derived)(s=>this._options.read(s).diffWordWrap),this.originalEditable=(0,L.derived)(s=>this._options.read(s).originalEditable),this.diffCodeLens=(0,L.derived)(s=>this._options.read(s).diffCodeLens),this.accessibilityVerbose=(0,L.derived)(s=>this._options.read(s).accessibilityVerbose),this.diffAlgorithm=(0,L.derived)(s=>this._options.read(s).diffAlgorithm),this.showEmptyDecorations=(0,L.derived)(s=>this._options.read(s).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=(0,L.derived)(s=>this._options.read(s).onlyShowAccessibleDiffViewer),this.hideUnchangedRegions=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsminimumLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.minimumLineCount);const C=Object.assign(Object.assign({},_),S(_,k.diffEditorDefaultOptions));this._options=(0,L.observableValue)("options",C)}updateOptions(_){const g=S(_,this._options.get()),C=Object.assign(Object.assign(Object.assign({},this._options.get()),_),g);this._options.set(C,void 0,{changedOptions:_})}}e.DiffEditorOptions=D;function S(f,_){var g,C,s,i,n,t,a,u;return{enableSplitViewResizing:(0,y.boolean)(f.enableSplitViewResizing,_.enableSplitViewResizing),splitViewDefaultRatio:(0,y.clampedFloat)(f.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,y.boolean)(f.renderSideBySide,_.renderSideBySide),renderMarginRevertIcon:(0,y.boolean)(f.renderMarginRevertIcon,_.renderMarginRevertIcon),maxComputationTime:(0,y.clampedInt)(f.maxComputationTime,_.maxComputationTime,0,1073741824),maxFileSize:(0,y.clampedInt)(f.maxFileSize,_.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,y.boolean)(f.ignoreTrimWhitespace,_.ignoreTrimWhitespace),renderIndicators:(0,y.boolean)(f.renderIndicators,_.renderIndicators),originalEditable:(0,y.boolean)(f.originalEditable,_.originalEditable),diffCodeLens:(0,y.boolean)(f.diffCodeLens,_.diffCodeLens),renderOverviewRuler:(0,y.boolean)(f.renderOverviewRuler,_.renderOverviewRuler),diffWordWrap:(0,y.stringSet)(f.diffWordWrap,_.diffWordWrap,["off","on","inherit"]),diffAlgorithm:(0,y.stringSet)(f.diffAlgorithm,_.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:(0,y.boolean)(f.accessibilityVerbose,_.accessibilityVerbose),experimental:{showMoves:(0,y.boolean)((g=f.experimental)===null||g===void 0?void 0:g.showMoves,_.experimental.showMoves),showEmptyDecorations:(0,y.boolean)((C=f.experimental)===null||C===void 0?void 0:C.showEmptyDecorations,_.experimental.showEmptyDecorations)},hideUnchangedRegions:{enabled:(0,y.boolean)((i=(s=f.hideUnchangedRegions)===null||s===void 0?void 0:s.enabled)!==null&&i!==void 0?i:(n=f.experimental)===null||n===void 0?void 0:n.collapseUnchangedRegions,_.hideUnchangedRegions.enabled),contextLineCount:(0,y.clampedInt)((t=f.hideUnchangedRegions)===null||t===void 0?void 0:t.contextLineCount,_.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:(0,y.clampedInt)((a=f.hideUnchangedRegions)===null||a===void 0?void 0:a.minimumLineCount,_.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:(0,y.clampedInt)((u=f.hideUnchangedRegions)===null||u===void 0?void 0:u.revealLineCount,_.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:(0,y.boolean)(f.isInEmbeddedEditor,_.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:(0,y.boolean)(f.onlyShowAccessibleDiffViewer,_.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:(0,y.clampedInt)(f.renderSideBySideInlineBreakpoint,_.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:(0,y.boolean)(f.useInlineViewWhenSpaceIsLimited,_.useInlineViewWhenSpaceIsLimited)}}}),define(ne[231],se([1,0,17,36,145]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FontInfo=e.SERIALIZED_FONT_INFO_VERSION=e.BareFontInfo=void 0;const D=L.isMacintosh?1.5:1.35,S=8;class f{static createFromValidatedSettings(C,s,i){const n=C.get(48),t=C.get(52),a=C.get(51),u=C.get(50),h=C.get(53),r=C.get(65),c=C.get(62);return f._create(n,t,a,u,h,r,c,s,i)}static _create(C,s,i,n,t,a,u,h,r){a===0?a=D*i:a{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()},5e3))}_evictUntrustedReadings(){const s=this._cache.getValues();let i=!1;for(const n of s)n.isTrusted||(i=!0,this._cache.remove(n));i&&this._onDidChange.fire()}readFontInfo(s){if(!this._cache.has(s)){let i=this._actualReadFontInfo(s);(i.typicalHalfwidthCharacterWidth<=2||i.typicalFullwidthCharacterWidth<=2||i.spaceWidth<=2||i.maxDigitWidth<=2)&&(i=new f.FontInfo({pixelRatio:L.PixelRatio.value,fontFamily:i.fontFamily,fontWeight:i.fontWeight,fontSize:i.fontSize,fontFeatureSettings:i.fontFeatureSettings,fontVariationSettings:i.fontVariationSettings,lineHeight:i.lineHeight,letterSpacing:i.letterSpacing,isMonospace:i.isMonospace,typicalHalfwidthCharacterWidth:Math.max(i.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(i.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:i.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(i.spaceWidth,5),middotWidth:Math.max(i.middotWidth,5),wsmiddotWidth:Math.max(i.wsmiddotWidth,5),maxDigitWidth:Math.max(i.maxDigitWidth,5)},!1)),this._writeToCache(s,i)}return this._cache.get(s)}_createRequest(s,i,n,t){const a=new D.CharWidthRequest(s,i);return n.push(a),t?.push(a),a}_actualReadFontInfo(s){const i=[],n=[],t=this._createRequest("n",0,i,n),a=this._createRequest("\uFF4D",0,i,null),u=this._createRequest(" ",0,i,n),h=this._createRequest("0",0,i,n),r=this._createRequest("1",0,i,n),c=this._createRequest("2",0,i,n),o=this._createRequest("3",0,i,n),d=this._createRequest("4",0,i,n),l=this._createRequest("5",0,i,n),p=this._createRequest("6",0,i,n),m=this._createRequest("7",0,i,n),v=this._createRequest("8",0,i,n),b=this._createRequest("9",0,i,n),w=this._createRequest("\u2192",0,i,n),E=this._createRequest("\uFFEB",0,i,null),I=this._createRequest("\xB7",0,i,n),M=this._createRequest(String.fromCharCode(11825),0,i,null),P="|/-_ilm%";for(let F=0,O=P.length;F.001){T=!1;break}}let N=!0;return T&&E.width!==A&&(N=!1),E.width>w.width&&(N=!1),new f.FontInfo({pixelRatio:L.PixelRatio.value,fontFamily:s.fontFamily,fontWeight:s.fontWeight,fontSize:s.fontSize,fontFeatureSettings:s.fontFeatureSettings,fontVariationSettings:s.fontVariationSettings,lineHeight:s.lineHeight,letterSpacing:s.letterSpacing,isMonospace:T,typicalHalfwidthCharacterWidth:t.width,typicalFullwidthCharacterWidth:a.width,canUseHalfwidthRightwardsArrow:N,spaceWidth:u.width,middotWidth:I.width,wsmiddotWidth:M.width,maxDigitWidth:x},!0)}}e.FontMeasurementsImpl=_;class g{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(s){const i=s.getId();return!!this._values[i]}get(s){const i=s.getId();return this._values[i]}put(s,i){const n=s.getId();this._keys[n]=s,this._values[n]=i}remove(s){const i=s.getId();delete this._keys[i],delete this._values[i]}getValues(){return Object.keys(this._keys).map(s=>this._values[s])}}e.FontMeasurements=new _}),define(ne[325],se([1,0,12,5,67,36]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isModelDecorationInString=e.isModelDecorationInComment=e.isModelDecorationVisible=e.ViewModelDecorations=void 0;class S{constructor(i,n,t,a,u){this.editorId=i,this.model=n,this.configuration=t,this._linesCollection=a,this._coordinatesConverter=u,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(i){const n=i.id;let t=this._decorationsCache[n];if(!t){const a=i.range,u=i.options;let h;if(u.isWholeLine){const r=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(a.startLineNumber,1),0,!1,!0),c=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(a.endLineNumber,this.model.getLineMaxColumn(a.endLineNumber)),1);h=new k.Range(r.lineNumber,r.column,c.lineNumber,c.column)}else h=this._coordinatesConverter.convertModelRangeToViewRange(a,1);t=new y.ViewModelDecoration(h,u),this._decorationsCache[n]=t}return t}getMinimapDecorationsInRange(i){return this._getDecorationsInRange(i,!0,!1).decorations}getDecorationsViewportData(i){let n=this._cachedModelDecorationsResolver!==null;return n=n&&i.equalsRange(this._cachedModelDecorationsResolverViewRange),n||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(i,!1,!1),this._cachedModelDecorationsResolverViewRange=i),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(i,n=!1,t=!1){const a=new k.Range(i,this._linesCollection.getViewLineMinColumn(i),i,this._linesCollection.getViewLineMaxColumn(i));return this._getDecorationsInRange(a,n,t).inlineDecorations[0]}_getDecorationsInRange(i,n,t){const a=this._linesCollection.getDecorationsInRange(i,this.editorId,(0,D.filterValidationDecorations)(this.configuration.options),n,t),u=i.startLineNumber,h=i.endLineNumber,r=[];let c=0;const o=[];for(let d=u;d<=h;d++)o[d-u]=[];for(let d=0,l=a.length;dn===1)}e.isModelDecorationInComment=_;function g(s,i){return C(s,i.range,n=>n===2)}e.isModelDecorationInString=g;function C(s,i,n){for(let t=i.startLineNumber;t<=i.endLineNumber;t++){const a=s.tokenization.getLineTokens(t),u=t===i.startLineNumber,h=t===i.endLineNumber;let r=u?a.findTokenIndexAtOffset(i.startColumn-1):0;for(;ri.endColumn-1);){if(!n(a.getStandardTokenType(r)))return!1;r++}}return!0}}),define(ne[622],se([3,4]),function(Q,e){return Q.create("vs/editor/common/core/editorColorRegistry",e)}),define(ne[623],se([3,4]),function(Q,e){return Q.create("vs/editor/common/editorContextKeys",e)}),define(ne[624],se([3,4]),function(Q,e){return Q.create("vs/editor/common/languages",e)}),define(ne[29],se([1,0,25,22,5,515,624]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenizationRegistry=e.LazyTokenizationSupport=e.InlayHintKind=e.Command=e.FoldingRangeKind=e.TextEdit=e.SymbolKinds=e.getAriaLabelForSymbol=e.symbolKindNames=e.isLocationLink=e.DocumentHighlightKind=e.SignatureHelpTriggerKind=e.SelectedSuggestionInfo=e.InlineCompletionTriggerKind=e.CompletionItemKinds=e.EncodedTokenizationResult=e.TokenizationResult=e.Token=void 0;class f{constructor(m,v,b){this.offset=m,this.type=v,this.language=b,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}e.Token=f;class _{constructor(m,v){this.tokens=m,this.endState=v,this._tokenizationResultBrand=void 0}}e.TokenizationResult=_;class g{constructor(m,v){this.tokens=m,this.endState=v,this._encodedTokenizationResultBrand=void 0}}e.EncodedTokenizationResult=g;var C;(function(p){const m=new Map;m.set(0,L.Codicon.symbolMethod),m.set(1,L.Codicon.symbolFunction),m.set(2,L.Codicon.symbolConstructor),m.set(3,L.Codicon.symbolField),m.set(4,L.Codicon.symbolVariable),m.set(5,L.Codicon.symbolClass),m.set(6,L.Codicon.symbolStruct),m.set(7,L.Codicon.symbolInterface),m.set(8,L.Codicon.symbolModule),m.set(9,L.Codicon.symbolProperty),m.set(10,L.Codicon.symbolEvent),m.set(11,L.Codicon.symbolOperator),m.set(12,L.Codicon.symbolUnit),m.set(13,L.Codicon.symbolValue),m.set(15,L.Codicon.symbolEnum),m.set(14,L.Codicon.symbolConstant),m.set(15,L.Codicon.symbolEnum),m.set(16,L.Codicon.symbolEnumMember),m.set(17,L.Codicon.symbolKeyword),m.set(27,L.Codicon.symbolSnippet),m.set(18,L.Codicon.symbolText),m.set(19,L.Codicon.symbolColor),m.set(20,L.Codicon.symbolFile),m.set(21,L.Codicon.symbolReference),m.set(22,L.Codicon.symbolCustomColor),m.set(23,L.Codicon.symbolFolder),m.set(24,L.Codicon.symbolTypeParameter),m.set(25,L.Codicon.account),m.set(26,L.Codicon.issues);function v(E){let I=m.get(E);return I||(console.info("No codicon found for CompletionItemKind "+E),I=L.Codicon.symbolProperty),I}p.toIcon=v;const b=new Map;b.set("method",0),b.set("function",1),b.set("constructor",2),b.set("field",3),b.set("variable",4),b.set("class",5),b.set("struct",6),b.set("interface",7),b.set("module",8),b.set("property",9),b.set("event",10),b.set("operator",11),b.set("unit",12),b.set("value",13),b.set("constant",14),b.set("enum",15),b.set("enum-member",16),b.set("enumMember",16),b.set("keyword",17),b.set("snippet",27),b.set("text",18),b.set("color",19),b.set("file",20),b.set("reference",21),b.set("customcolor",22),b.set("folder",23),b.set("type-parameter",24),b.set("typeParameter",24),b.set("account",25),b.set("issue",26);function w(E,I){let M=b.get(E);return typeof M>"u"&&!I&&(M=9),M}p.fromString=w})(C||(e.CompletionItemKinds=C={}));var s;(function(p){p[p.Automatic=0]="Automatic",p[p.Explicit=1]="Explicit"})(s||(e.InlineCompletionTriggerKind=s={}));class i{constructor(m,v,b,w){this.range=m,this.text=v,this.completionKind=b,this.isSnippetText=w}equals(m){return y.Range.lift(this.range).equalsRange(m.range)&&this.text===m.text&&this.completionKind===m.completionKind&&this.isSnippetText===m.isSnippetText}}e.SelectedSuggestionInfo=i;var n;(function(p){p[p.Invoke=1]="Invoke",p[p.TriggerCharacter=2]="TriggerCharacter",p[p.ContentChange=3]="ContentChange"})(n||(e.SignatureHelpTriggerKind=n={}));var t;(function(p){p[p.Text=0]="Text",p[p.Read=1]="Read",p[p.Write=2]="Write"})(t||(e.DocumentHighlightKind=t={}));function a(p){return p&&k.URI.isUri(p.uri)&&y.Range.isIRange(p.range)&&(y.Range.isIRange(p.originSelectionRange)||y.Range.isIRange(p.targetSelectionRange))}e.isLocationLink=a,e.symbolKindNames={[17]:(0,S.localize)(0,null),[16]:(0,S.localize)(1,null),[4]:(0,S.localize)(2,null),[13]:(0,S.localize)(3,null),[8]:(0,S.localize)(4,null),[9]:(0,S.localize)(5,null),[21]:(0,S.localize)(6,null),[23]:(0,S.localize)(7,null),[7]:(0,S.localize)(8,null),[0]:(0,S.localize)(9,null),[11]:(0,S.localize)(10,null),[10]:(0,S.localize)(11,null),[19]:(0,S.localize)(12,null),[5]:(0,S.localize)(13,null),[1]:(0,S.localize)(14,null),[2]:(0,S.localize)(15,null),[20]:(0,S.localize)(16,null),[15]:(0,S.localize)(17,null),[18]:(0,S.localize)(18,null),[24]:(0,S.localize)(19,null),[3]:(0,S.localize)(20,null),[6]:(0,S.localize)(21,null),[14]:(0,S.localize)(22,null),[22]:(0,S.localize)(23,null),[25]:(0,S.localize)(24,null),[12]:(0,S.localize)(25,null)};function u(p,m){return(0,S.localize)(26,null,p,e.symbolKindNames[m])}e.getAriaLabelForSymbol=u;var h;(function(p){const m=new Map;m.set(0,L.Codicon.symbolFile),m.set(1,L.Codicon.symbolModule),m.set(2,L.Codicon.symbolNamespace),m.set(3,L.Codicon.symbolPackage),m.set(4,L.Codicon.symbolClass),m.set(5,L.Codicon.symbolMethod),m.set(6,L.Codicon.symbolProperty),m.set(7,L.Codicon.symbolField),m.set(8,L.Codicon.symbolConstructor),m.set(9,L.Codicon.symbolEnum),m.set(10,L.Codicon.symbolInterface),m.set(11,L.Codicon.symbolFunction),m.set(12,L.Codicon.symbolVariable),m.set(13,L.Codicon.symbolConstant),m.set(14,L.Codicon.symbolString),m.set(15,L.Codicon.symbolNumber),m.set(16,L.Codicon.symbolBoolean),m.set(17,L.Codicon.symbolArray),m.set(18,L.Codicon.symbolObject),m.set(19,L.Codicon.symbolKey),m.set(20,L.Codicon.symbolNull),m.set(21,L.Codicon.symbolEnumMember),m.set(22,L.Codicon.symbolStruct),m.set(23,L.Codicon.symbolEvent),m.set(24,L.Codicon.symbolOperator),m.set(25,L.Codicon.symbolTypeParameter);function v(b){let w=m.get(b);return w||(console.info("No codicon found for SymbolKind "+b),w=L.Codicon.symbolProperty),w}p.toIcon=v})(h||(e.SymbolKinds=h={}));class r{}e.TextEdit=r;class c{static fromValue(m){switch(m){case"comment":return c.Comment;case"imports":return c.Imports;case"region":return c.Region}return new c(m)}constructor(m){this.value=m}}e.FoldingRangeKind=c,c.Comment=new c("comment"),c.Imports=new c("imports"),c.Region=new c("region");var o;(function(p){function m(v){return!v||typeof v!="object"?!1:typeof v.id=="string"&&typeof v.title=="string"}p.is=m})(o||(e.Command=o={}));var d;(function(p){p[p.Type=1]="Type",p[p.Parameter=2]="Parameter"})(d||(e.InlayHintKind=d={}));class l{constructor(m){this.createSupport=m,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(m=>{m&&m.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}e.LazyTokenizationSupport=l,e.TokenizationRegistry=new D.TokenizationRegistry}),define(ne[154],se([1,0,29]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.nullTokenizeEncoded=e.nullTokenize=e.NullState=void 0,e.NullState=new class{clone(){return this}equals(D){return this===D}};function k(D,S){return new L.TokenizationResult([new L.Token(0,"",D)],S)}e.nullTokenize=k;function y(D,S){const f=new Uint32Array(2);return f[0]=0,f[1]=(D<<0|0<<8|0<<11|1<<15|2<<24)>>>0,new L.EncodedTokenizationResult(f,S===null?e.NullState:S)}e.nullTokenizeEncoded=y}),define(ne[326],se([1,0,11,86,29,154]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e._tokenizeToString=e.tokenizeLineToHTML=e.tokenizeToString=void 0;const S={getInitialState:()=>D.NullState,tokenizeEncoded:(C,s,i)=>(0,D.nullTokenizeEncoded)(0,i)};function f(C,s,i){return we(this,void 0,void 0,function*(){if(!i)return g(s,C.languageIdCodec,S);const n=yield y.TokenizationRegistry.getOrCreate(i);return g(s,C.languageIdCodec,n||S)})}e.tokenizeToString=f;function _(C,s,i,n,t,a,u){let h="
    ",r=n,c=0,o=!0;for(let d=0,l=s.getCount();d0;)u&&o?(m+=" ",o=!1):(m+=" ",o=!0),b--;break}case 60:m+="<",o=!1;break;case 62:m+=">",o=!1;break;case 38:m+="&",o=!1;break;case 0:m+="�",o=!1;break;case 65279:case 8232:case 8233:case 133:m+="\uFFFD",o=!1;break;case 13:m+="​",o=!1;break;case 32:u&&o?(m+=" ",o=!1):(m+=" ",o=!0);break;default:m+=String.fromCharCode(v),o=!1}}if(h+=`${m}`,p>t||r>=t)break}return h+="
    ",h}e.tokenizeLineToHTML=_;function g(C,s,i){let n='
    ';const t=L.splitLines(C);let a=i.getInitialState();for(let u=0,h=t.length;u0&&(n+="
    ");const c=i.tokenizeEncoded(r,!0,a);k.LineTokens.convertToEndOffset(c.tokens,r.length);const d=new k.LineTokens(c.tokens,r,s).inflate();let l=0;for(let p=0,m=d.getCount();p${L.escape(r.substring(l,b))}`,l=b}a=c.endState}return n+="
    ",n}e._tokenizeToString=g}),define(ne[625],se([1,0,13,9,17,58,122,66,90,154,508,288,86]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultBackgroundTokenizer=e.RangePriorityQueueImpl=e.TokenizationStateStore=e.TrackingTokenizationStateStore=e.TokenizerWithStateStoreAndTextModel=e.TokenizerWithStateStore=void 0;class n{constructor(d,l){this.tokenizationSupport=l,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new a(d)}getStartState(d){return this.store.getStartState(d,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}e.TokenizerWithStateStore=n;class t extends n{constructor(d,l,p,m){super(d,l),this._textModel=p,this._languageIdCodec=m}updateTokensUntilLine(d,l){const p=this._textModel.getLanguageId();for(;;){const m=this.getFirstInvalidLine();if(!m||m.lineNumber>l)break;const v=this._textModel.getLineContent(m.lineNumber),b=r(this._languageIdCodec,p,this.tokenizationSupport,v,!0,m.startState);d.add(m.lineNumber,b.tokens),this.store.setEndState(m.lineNumber,b.endState)}}getTokenTypeIfInsertingCharacter(d,l){const p=this.getStartState(d.lineNumber);if(!p)return 0;const m=this._textModel.getLanguageId(),v=this._textModel.getLineContent(d.lineNumber),b=v.substring(0,d.column-1)+l+v.substring(d.column-1),w=r(this._languageIdCodec,m,this.tokenizationSupport,b,!0,p),E=new i.LineTokens(w.tokens,b,this._languageIdCodec);if(E.getCount()===0)return 0;const I=E.findTokenIndexAtOffset(d.column-1);return E.getStandardTokenType(I)}tokenizeLineWithEdit(d,l,p){const m=d.lineNumber,v=d.column,b=this.getStartState(m);if(!b)return null;const w=this._textModel.getLineContent(m),E=w.substring(0,v-1)+p+w.substring(v-1+l),I=this._textModel.getLanguageIdAtPosition(m,0),M=r(this._languageIdCodec,I,this.tokenizationSupport,E,!0,b);return new i.LineTokens(M.tokens,E,this._languageIdCodec)}isCheapToTokenize(d){const l=this.store.getFirstInvalidEndStateLineNumberOrMax();return d1&&w>=1;w--){const E=this._textModel.getLineFirstNonWhitespaceColumn(w);if(E!==0&&E0&&p>0&&(p--,l--),this._lineEndStates.replace(d.startLineNumber,p,l)}}e.TokenizationStateStore=u;class h{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(d){const l=this._ranges.findIndex(p=>p.contains(d));if(l!==-1){const p=this._ranges[l];p.start===d?p.endExclusive===d+1?this._ranges.splice(l,1):this._ranges[l]=new _.OffsetRange(d+1,p.endExclusive):p.endExclusive===d+1?this._ranges[l]=new _.OffsetRange(p.start,d):this._ranges.splice(l,1,new _.OffsetRange(p.start,d),new _.OffsetRange(d+1,p.endExclusive))}}addRange(d){_.OffsetRange.addRange(d,this._ranges)}addRangeAndResize(d,l){let p=0;for(;!(p>=this._ranges.length||d.start<=this._ranges[p].endExclusive);)p++;let m=p;for(;!(m>=this._ranges.length||d.endExclusived.toString()).join(" + ")}}e.RangePriorityQueueImpl=h;function r(o,d,l,p,m,v){let b=null;if(l)try{b=l.tokenizeEncoded(p,m,v.clone())}catch(w){(0,k.onUnexpectedError)(w)}return b||(b=(0,g.nullTokenizeEncoded)(o.encodeLanguageId(d),v)),i.LineTokens.convertToEndOffset(b.tokens,p.length),b}class c{constructor(d,l){this._tokenizerWithStateStore=d,this._backgroundTokenStore=l,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._isScheduled||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._isScheduled=!0,(0,L.runWhenIdle)(d=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(d)}))}_backgroundTokenizeWithDeadline(d){const l=Date.now()+d.timeRemaining(),p=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()1||this._tokenizeOneInvalidLine(l)>=d)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(l.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(d){var l;const p=(l=this._tokenizerWithStateStore)===null||l===void 0?void 0:l.getFirstInvalidLine();return p?(this._tokenizerWithStateStore.updateTokensUntilLine(d,p.lineNumber),p.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(d,l){this._tokenizerWithStateStore.store.invalidateEndStateRange(new f.LineRange(d,l))}}e.DefaultBackgroundTokenizer=c}),define(ne[626],se([1,0,14,13,9,6,2,122,66,12,147,29,282,625,288,518,520]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenizationTextModelPart=void 0;class h extends i.TextModelPart{constructor(d,l,p,m,v,b){super(),this._languageService=d,this._languageConfigurationService=l,this._textModel=p,this._bracketPairsTextModelPart=m,this._languageId=v,this._attachedViews=b,this._semanticTokens=new u.SparseTokensStore(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new D.Emitter),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new D.Emitter),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new D.Emitter),this.onDidChangeTokens=this._onDidChangeTokens.event,this.grammarTokens=this._register(new r(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews)),this._register(this._languageConfigurationService.onDidChange(w=>{w.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(this.grammarTokens.onDidChangeTokens(w=>{this._emitModelTokensChangedEvent(w)})),this._register(this.grammarTokens.onDidChangeBackgroundTokenizationState(w=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()}))}handleDidChangeContent(d){if(d.isFlush)this._semanticTokens.flush();else if(!d.isEolChange)for(const l of d.changes){const[p,m,v]=(0,f.countEOL)(l.text);this._semanticTokens.acceptEdit(l.range,p,m,v,l.text.length>0?l.text.charCodeAt(0):0)}this.grammarTokens.handleDidChangeContent(d)}handleDidChangeAttached(){this.grammarTokens.handleDidChangeAttached()}getLineTokens(d){this.validateLineNumber(d);const l=this.grammarTokens.getLineTokens(d);return this._semanticTokens.addSparseTokens(d,l)}_emitModelTokensChangedEvent(d){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(d),this._onDidChangeTokens.fire(d))}validateLineNumber(d){if(d<1||d>this._textModel.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber")}get hasTokens(){return this.grammarTokens.hasTokens}resetTokenization(){this.grammarTokens.resetTokenization()}get backgroundTokenizationState(){return this.grammarTokens.backgroundTokenizationState}forceTokenization(d){this.validateLineNumber(d),this.grammarTokens.forceTokenization(d)}isCheapToTokenize(d){return this.validateLineNumber(d),this.grammarTokens.isCheapToTokenize(d)}tokenizeIfCheap(d){this.validateLineNumber(d),this.grammarTokens.tokenizeIfCheap(d)}getTokenTypeIfInsertingCharacter(d,l,p){return this.grammarTokens.getTokenTypeIfInsertingCharacter(d,l,p)}tokenizeLineWithEdit(d,l,p){return this.grammarTokens.tokenizeLineWithEdit(d,l,p)}setSemanticTokens(d,l){this._semanticTokens.set(d,l),this._emitModelTokensChangedEvent({semanticTokensApplied:d!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(d,l){if(this.hasCompleteSemanticTokens())return;const p=this._textModel.validateRange(this._semanticTokens.setPartial(d,l));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:p.startLineNumber,toLineNumber:p.endLineNumber}]})}getWordAtPosition(d){this.assertNotDisposed();const l=this._textModel.validatePosition(d),p=this._textModel.getLineContent(l.lineNumber),m=this.getLineTokens(l.lineNumber),v=m.findTokenIndexAtOffset(l.column-1),[b,w]=h._findLanguageBoundaries(m,v),E=(0,C.getWordAtText)(l.column,this.getLanguageConfiguration(m.getLanguageId(v)).getWordDefinition(),p.substring(b,w),b);if(E&&E.startColumn<=d.column&&d.column<=E.endColumn)return E;if(v>0&&b===l.column-1){const[I,M]=h._findLanguageBoundaries(m,v-1),P=(0,C.getWordAtText)(l.column,this.getLanguageConfiguration(m.getLanguageId(v-1)).getWordDefinition(),p.substring(I,M),I);if(P&&P.startColumn<=d.column&&d.column<=P.endColumn)return P}return null}getLanguageConfiguration(d){return this._languageConfigurationService.getLanguageConfiguration(d)}static _findLanguageBoundaries(d,l){const p=d.getLanguageId(l);let m=0;for(let b=l;b>=0&&d.getLanguageId(b)===p;b--)m=d.getStartOffset(b);let v=d.getLineContent().length;for(let b=l,w=d.getCount();b{const b=this.getLanguageId();v.changedLanguages.indexOf(b)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(m.onDidChangeVisibleRanges(({view:v,state:b})=>{if(b){let w=this._attachedViewStates.get(v);w||(w=new c(()=>this.refreshRanges(w.lineRanges)),this._attachedViewStates.set(v,w)),w.handleStateChange(b)}else this._attachedViewStates.deleteAndDispose(v)}))}resetTokenization(d=!0){var l;this._tokens.flush(),(l=this._debugBackgroundTokens)===null||l===void 0||l.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new n.TrackingTokenizationStateStore(this._textModel.getLineCount())),d&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const p=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const b=s.TokenizationRegistry.get(this.getLanguageId());if(!b)return[null,null];let w;try{w=b.getInitialState()}catch(E){return(0,y.onUnexpectedError)(E),[null,null]}return[b,w]},[m,v]=p();if(m&&v?this._tokenizer=new n.TokenizerWithStateStoreAndTextModel(this._textModel.getLineCount(),m,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const b={setTokens:w=>{this.setTokens(w)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const w=2;this._backgroundTokenizationState=w,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(w,E)=>{var I;if(!this._tokenizer)return;const M=this._tokenizer.store.getFirstInvalidEndStateLineNumber();M!==null&&w>=M&&((I=this._tokenizer)===null||I===void 0||I.store.setEndState(w,E))}};m&&m.createBackgroundTokenizer&&!m.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=m.createBackgroundTokenizer(this._textModel,b)),this._backgroundTokenizer.value||(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new n.DefaultBackgroundTokenizer(this._tokenizer,b),this._defaultBackgroundTokenizer.handleChanges()),m?.backgroundTokenizerShouldOnlyVerifyTokens&&m.createBackgroundTokenizer?(this._debugBackgroundTokens=new a.ContiguousTokensStore(this._languageIdCodec),this._debugBackgroundStates=new n.TrackingTokenizationStateStore(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=m.createBackgroundTokenizer(this._textModel,{setTokens:w=>{var E;(E=this._debugBackgroundTokens)===null||E===void 0||E.setMultilineTokens(w,this._textModel)},backgroundTokenizationFinished(){},setEndState:(w,E)=>{var I;(I=this._debugBackgroundStates)===null||I===void 0||I.setEndState(w,E)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var d;(d=this._defaultBackgroundTokenizer)===null||d===void 0||d.handleChanges()}handleDidChangeContent(d){var l,p,m;if(d.isFlush)this.resetTokenization(!1);else if(!d.isEolChange){for(const v of d.changes){const[b,w]=(0,f.countEOL)(v.text);this._tokens.acceptEdit(v.range,b,w),(l=this._debugBackgroundTokens)===null||l===void 0||l.acceptEdit(v.range,b,w)}(p=this._debugBackgroundStates)===null||p===void 0||p.acceptChanges(d.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(d.changes),(m=this._defaultBackgroundTokenizer)===null||m===void 0||m.handleChanges()}}setTokens(d){const{changes:l}=this._tokens.setMultilineTokens(d,this._textModel);return l.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:l}),{changes:l}}refreshAllVisibleLineTokens(){const d=_.LineRange.joinMany([...this._attachedViewStates].map(([l,p])=>p.lineRanges));this.refreshRanges(d)}refreshRanges(d){for(const l of d)this.refreshRange(l.startLineNumber,l.endLineNumberExclusive-1)}refreshRange(d,l){var p,m;if(!this._tokenizer)return;d=Math.max(1,Math.min(this._textModel.getLineCount(),d)),l=Math.min(this._textModel.getLineCount(),l);const v=new t.ContiguousMultilineTokensBuilder,{heuristicTokens:b}=this._tokenizer.tokenizeHeuristically(v,d,l),w=this.setTokens(v.finalize());if(b)for(const E of w.changes)(p=this._backgroundTokenizer.value)===null||p===void 0||p.requestTokens(E.fromLineNumber,E.toLineNumber+1);(m=this._defaultBackgroundTokenizer)===null||m===void 0||m.checkFinished()}forceTokenization(d){var l,p;const m=new t.ContiguousMultilineTokensBuilder;(l=this._tokenizer)===null||l===void 0||l.updateTokensUntilLine(m,d),this.setTokens(m.finalize()),(p=this._defaultBackgroundTokenizer)===null||p===void 0||p.checkFinished()}isCheapToTokenize(d){return this._tokenizer?this._tokenizer.isCheapToTokenize(d):!0}tokenizeIfCheap(d){this.isCheapToTokenize(d)&&this.forceTokenization(d)}getLineTokens(d){var l;const p=this._textModel.getLineContent(d),m=this._tokens.getTokens(this._textModel.getLanguageId(),d-1,p);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>d&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>d){const v=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),d-1,p);!m.equals(v)&&(!((l=this._debugBackgroundTokenizer.value)===null||l===void 0)&&l.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(d)}return m}getTokenTypeIfInsertingCharacter(d,l,p){if(!this._tokenizer)return 0;const m=this._textModel.validatePosition(new g.Position(d,l));return this.forceTokenization(m.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(m,p)}tokenizeLineWithEdit(d,l,p){if(!this._tokenizer)return null;const m=this._textModel.validatePosition(d);return this.forceTokenization(m.lineNumber),this._tokenizer.tokenizeLineWithEdit(m,l,p)}get hasTokens(){return this._tokens.hasTokens}}class c extends S.Disposable{get lineRanges(){return this._lineRanges}constructor(d){super(),this._refreshTokens=d,this.runner=this._register(new k.RunOnceScheduler(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){(0,L.equals)(this._computedLineRanges,this._lineRanges,(d,l)=>d.equals(l))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(d){this._lineRanges=d.visibleLineRanges,d.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}}),define(ne[327],se([1,0,19,6,63,22,12,5,24,29,208]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoBaseAPI=e.KeyMod=void 0;class s{static chord(t,a){return(0,y.KeyChord)(t,a)}}e.KeyMod=s,s.CtrlCmd=2048,s.Shift=1024,s.Alt=512,s.WinCtrl=256;function i(){return{editor:void 0,languages:void 0,CancellationTokenSource:L.CancellationTokenSource,Emitter:k.Emitter,KeyCode:C.KeyCode,KeyMod:s,Position:S.Position,Range:f.Range,Selection:_.Selection,SelectionDirection:C.SelectionDirection,MarkerSeverity:C.MarkerSeverity,MarkerTag:C.MarkerTag,Uri:D.URI,Token:g.Token}}e.createMonacoBaseAPI=i}),define(ne[627],se([1,0,168,22,12,5,512,147,495,501,327,58,286,492,47,494]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=e.EditorSimpleWorker=void 0;class u extends S.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(o){const d=[];for(let l=0;lthis._lines.length)d=this._lines.length,l=this._lines[d-1].length+1,p=!0;else{const m=this._lines[d-1].length+1;l<1?(l=1,p=!0):l>m&&(l=m,p=!0)}return p?{lineNumber:d,column:l}:o}}class h{constructor(o,d){this._host=o,this._models=Object.create(null),this._foreignModuleFactory=d,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(o){return this._models[o]}_getModels(){const o=[];return Object.keys(this._models).forEach(d=>o.push(this._models[d])),o}acceptNewModel(o){this._models[o.url]=new u(k.URI.parse(o.url),o.lines,o.EOL,o.versionId)}acceptModelChanged(o,d){if(!this._models[o])return;this._models[o].onEvents(d)}acceptRemovedModel(o){this._models[o]&&delete this._models[o]}computeUnicodeHighlights(o,d,l){return we(this,void 0,void 0,function*(){const p=this._getModel(o);return p?i.UnicodeTextModelHighlighter.computeUnicodeHighlights(p,d,l):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}})}computeDiff(o,d,l,p){return we(this,void 0,void 0,function*(){const m=this._getModel(o),v=this._getModel(d);return!m||!v?null:h.computeDiff(m,v,l,p)})}static computeDiff(o,d,l,p){const m=p==="advanced"?n.linesDiffComputers.getAdvanced():n.linesDiffComputers.getLegacy(),v=o.getLinesContent(),b=d.getLinesContent(),w=m.computeDiff(v,b,l),E=w.changes.length>0?!1:this._modelsAreIdentical(o,d);function I(M){return M.map(P=>{var x;return[P.originalRange.startLineNumber,P.originalRange.endLineNumberExclusive,P.modifiedRange.startLineNumber,P.modifiedRange.endLineNumberExclusive,(x=P.innerChanges)===null||x===void 0?void 0:x.map(T=>[T.originalRange.startLineNumber,T.originalRange.startColumn,T.originalRange.endLineNumber,T.originalRange.endColumn,T.modifiedRange.startLineNumber,T.modifiedRange.startColumn,T.modifiedRange.endLineNumber,T.modifiedRange.endColumn])]})}return{identical:E,quitEarly:w.hitTimeout,changes:I(w.changes),moves:w.moves.map(M=>[M.lineRangeMapping.original.startLineNumber,M.lineRangeMapping.original.endLineNumberExclusive,M.lineRangeMapping.modified.startLineNumber,M.lineRangeMapping.modified.endLineNumberExclusive,I(M.changes)])}}static _modelsAreIdentical(o,d){const l=o.getLineCount(),p=d.getLineCount();if(l!==p)return!1;for(let m=1;m<=l;m++){const v=o.getLineContent(m),b=d.getLineContent(m);if(v!==b)return!1}return!0}computeMoreMinimalEdits(o,d,l){return we(this,void 0,void 0,function*(){const p=this._getModel(o);if(!p)return d;const m=[];let v;d=d.slice(0).sort((b,w)=>{if(b.range&&w.range)return D.Range.compareRangesUsingStarts(b.range,w.range);const E=b.range?0:1,I=w.range?0:1;return E-I});for(let{range:b,text:w,eol:E}of d){if(typeof E=="number"&&(v=E),D.Range.isEmpty(b)&&!w)continue;const I=p.getValueInRange(b);if(w=w.replace(/\r\n|\n|\r/g,p.eol),I===w)continue;if(Math.max(w.length,I.length)>h._diffLimit){m.push({range:b,text:w});continue}const M=(0,L.stringDiff)(I,w,l),P=p.offsetAt(D.Range.lift(b).getStartPosition());for(const x of M){const T=p.positionAt(P+x.originalStart),A=p.positionAt(P+x.originalStart+x.originalLength),N={text:w.substr(x.modifiedStart,x.modifiedLength),range:{startLineNumber:T.lineNumber,startColumn:T.column,endLineNumber:A.lineNumber,endColumn:A.column}};p.getValueInRange(N.range)!==N.text&&m.push(N)}}return typeof v=="number"&&m.push({eol:v,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),m})}computeLinks(o){return we(this,void 0,void 0,function*(){const d=this._getModel(o);return d?(0,_.computeLinks)(d):null})}computeDefaultDocumentColors(o){return we(this,void 0,void 0,function*(){const d=this._getModel(o);return d?(0,a.computeDefaultDocumentColors)(d):null})}textualSuggest(o,d,l,p){return we(this,void 0,void 0,function*(){const m=new s.StopWatch,v=new RegExp(l,p),b=new Set;e:for(const w of o){const E=this._getModel(w);if(E){for(const I of E.words(v))if(!(I===d||!isNaN(Number(I)))&&(b.add(I),b.size>h._suggestionsLimit))break e}}return{words:Array.from(b),duration:m.elapsed()}})}computeWordRanges(o,d,l,p){return we(this,void 0,void 0,function*(){const m=this._getModel(o);if(!m)return Object.create(null);const v=new RegExp(l,p),b=Object.create(null);for(let w=d.startLineNumber;wthis._host.fhr(b,w),v={host:(0,t.createProxyObject)(l,p),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(v,d),Promise.resolve((0,t.getAllMethodNames)(this._foreignModule))):new Promise((b,w)=>{Q([o],E=>{this._foreignModule=E.create(v,d),b((0,t.getAllMethodNames)(this._foreignModule))},w)})}fmr(o,d){if(!this._foreignModule||typeof this._foreignModule[o]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+o));try{return Promise.resolve(this._foreignModule[o].apply(this._foreignModule,d))}catch(l){return Promise.reject(l)}}}e.EditorSimpleWorker=h,h._diffLimit=1e5,h._suggestionsLimit=1e4;function r(c){return new h(c,null)}e.create=r,typeof importScripts=="function"&&(globalThis.monaco=(0,C.createMonacoBaseAPI)())}),define(ne[328],se([1,0,6,2,274,29]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapTokensColorTracker=void 0;class S extends k.Disposable{static getInstance(){return this._INSTANCE||(this._INSTANCE=(0,k.markAsSingleton)(new S)),this._INSTANCE}constructor(){super(),this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(D.TokenizationRegistry.onDidChange(_=>{_.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const _=D.TokenizationRegistry.getColorMap();if(!_){this._colors=[y.RGBA8.Empty],this._backgroundIsLight=!0;return}this._colors=[y.RGBA8.Empty];for(let C=1;C<_.length;C++){const s=_[C].rgba;this._colors[C]=new y.RGBA8(s.r,s.g,s.b,Math.round(s.a*255))}const g=_[2].getRelativeLuminance();this._backgroundIsLight=g>=.5,this._onDidChange.fire(void 0)}getColor(_){return(_<1||_>=this._colors.length)&&(_=2),this._colors[_]}backgroundIsLight(){return this._backgroundIsLight}}e.MinimapTokensColorTracker=S,S._INSTANCE=null}),define(ne[628],se([3,4]),function(Q,e){return Q.create("vs/editor/common/languages/modesRegistry",e)}),define(ne[629],se([3,4]),function(Q,e){return Q.create("vs/editor/common/model/editStack",e)}),define(ne[329],se([1,0,629,9,24,22,319,140,45]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditStack=e.isEditStackElement=e.MultiModelEditStackElement=e.SingleModelEditStackElement=e.SingleModelEditStackData=void 0;function g(u){return u.toString()}class C{static create(h,r){const c=h.getAlternativeVersionId(),o=n(h);return new C(c,c,o,o,r,r,[])}constructor(h,r,c,o,d,l,p){this.beforeVersionId=h,this.afterVersionId=r,this.beforeEOL=c,this.afterEOL=o,this.beforeCursorState=d,this.afterCursorState=l,this.changes=p}append(h,r,c,o,d){r.length>0&&(this.changes=(0,S.compressConsecutiveTextChanges)(this.changes,r)),this.afterEOL=c,this.afterVersionId=o,this.afterCursorState=d}static _writeSelectionsSize(h){return 4+4*4*(h?h.length:0)}static _writeSelections(h,r,c){if(f.writeUInt32BE(h,r?r.length:0,c),c+=4,r)for(const o of r)f.writeUInt32BE(h,o.selectionStartLineNumber,c),c+=4,f.writeUInt32BE(h,o.selectionStartColumn,c),c+=4,f.writeUInt32BE(h,o.positionLineNumber,c),c+=4,f.writeUInt32BE(h,o.positionColumn,c),c+=4;return c}static _readSelections(h,r,c){const o=f.readUInt32BE(h,r);r+=4;for(let d=0;dr.toString()).join(", ")}matchesResource(h){return(D.URI.isUri(this.model)?this.model:this.model.uri).toString()===h.toString()}setModel(h){this.model=h}canAppend(h){return this.model===h&&this._data instanceof C}append(h,r,c,o,d){this._data instanceof C&&this._data.append(h,r,c,o,d)}close(){this._data instanceof C&&(this._data=this._data.serialize())}open(){this._data instanceof C||(this._data=C.deserialize(this._data))}undo(){if(D.URI.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof C&&(this._data=this._data.serialize());const h=C.deserialize(this._data);this.model._applyUndo(h.changes,h.beforeEOL,h.beforeVersionId,h.beforeCursorState)}redo(){if(D.URI.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof C&&(this._data=this._data.serialize());const h=C.deserialize(this._data);this.model._applyRedo(h.changes,h.afterEOL,h.afterVersionId,h.afterCursorState)}heapSize(){return this._data instanceof C&&(this._data=this._data.serialize()),this._data.byteLength+168}}e.SingleModelEditStackElement=s;class i{get resources(){return this._editStackElementsArr.map(h=>h.resource)}constructor(h,r,c){this.label=h,this.code=r,this.type=1,this._isOpen=!0,this._editStackElementsArr=c.slice(0),this._editStackElementsMap=new Map;for(const o of this._editStackElementsArr){const d=g(o.resource);this._editStackElementsMap.set(d,o)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(h){const r=g(h);return this._editStackElementsMap.has(r)}setModel(h){const r=g(D.URI.isUri(h)?h:h.uri);this._editStackElementsMap.has(r)&&this._editStackElementsMap.get(r).setModel(h)}canAppend(h){if(!this._isOpen)return!1;const r=g(h.uri);return this._editStackElementsMap.has(r)?this._editStackElementsMap.get(r).canAppend(h):!1}append(h,r,c,o,d){const l=g(h.uri);this._editStackElementsMap.get(l).append(h,r,c,o,d)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const h of this._editStackElementsArr)h.undo()}redo(){for(const h of this._editStackElementsArr)h.redo()}heapSize(h){const r=g(h);return this._editStackElementsMap.has(r)?this._editStackElementsMap.get(r).heapSize():0}split(){return this._editStackElementsArr}toString(){const h=[];for(const r of this._editStackElementsArr)h.push(`${(0,_.basename)(r.resource)}: ${r}`);return`{${h.join(", ")}}`}}e.MultiModelEditStackElement=i;function n(u){return u.getEOL()===` -`?0:1}function t(u){return u?u instanceof s||u instanceof i:!1}e.isEditStackElement=t;class a{constructor(h,r){this._model=h,this._undoRedoService=r}pushStackElement(){const h=this._undoRedoService.getLastElement(this._model.uri);t(h)&&h.close()}popStackElement(){const h=this._undoRedoService.getLastElement(this._model.uri);t(h)&&h.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(h,r){const c=this._undoRedoService.getLastElement(this._model.uri);if(t(c)&&c.canAppend(this._model))return c;const o=new s(L.localize(0,null),"undoredo.textBufferEdit",this._model,h);return this._undoRedoService.pushElement(o,r),o}pushEOL(h){const r=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(h),r.append(this._model,[],n(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(h,r,c,o){const d=this._getOrCreateEditStackElement(h,o),l=this._model.applyEdits(r,!0),p=a._computeCursorState(c,l),m=l.map((v,b)=>({index:b,textChange:v.textChange}));return m.sort((v,b)=>v.textChange.oldPosition===b.textChange.oldPosition?v.index-b.index:v.textChange.oldPosition-b.textChange.oldPosition),d.append(this._model,m.map(v=>v.textChange),n(this._model),this._model.getAlternativeVersionId(),p),p}static _computeCursorState(h,r){try{return h?h(r):null}catch(c){return(0,k.onUnexpectedError)(c),null}}}e.EditStack=a}),define(ne[630],se([3,4]),function(Q,e){return Q.create("vs/editor/common/standaloneStrings",e)}),define(ne[94],se([1,0,630]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneServicesNLS=e.ToggleHighContrastNLS=e.StandaloneCodeEditorNLS=e.QuickOutlineNLS=e.QuickCommandNLS=e.QuickHelpNLS=e.GoToLineNLS=e.InspectTokensNLS=void 0;var k;(function(s){s.inspectTokensAction=L.localize(0,null)})(k||(e.InspectTokensNLS=k={}));var y;(function(s){s.gotoLineActionLabel=L.localize(1,null)})(y||(e.GoToLineNLS=y={}));var D;(function(s){s.helpQuickAccessActionLabel=L.localize(2,null)})(D||(e.QuickHelpNLS=D={}));var S;(function(s){s.quickCommandActionLabel=L.localize(3,null),s.quickCommandHelp=L.localize(4,null)})(S||(e.QuickCommandNLS=S={}));var f;(function(s){s.quickOutlineActionLabel=L.localize(5,null),s.quickOutlineByCategoryActionLabel=L.localize(6,null)})(f||(e.QuickOutlineNLS=f={}));var _;(function(s){s.editorViewAccessibleLabel=L.localize(7,null),s.accessibilityHelpMessage=L.localize(8,null)})(_||(e.StandaloneCodeEditorNLS=_={}));var g;(function(s){s.toggleHighContrast=L.localize(9,null)})(g||(e.ToggleHighContrastNLS=g={}));var C;(function(s){s.bulkEditServiceSummary=L.localize(10,null)})(C||(e.StandaloneServicesNLS=C={}))}),define(ne[631],se([3,4]),function(Q,e){return Q.create("vs/editor/common/viewLayout/viewLineRenderer",e)}),define(ne[95],se([1,0,631,11,93,127,529]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderViewLine2=e.RenderLineOutput2=e.renderViewLine=e.RenderLineOutput=e.CharacterMapping=e.DomPosition=e.RenderLineInput=e.LineRange=void 0;class f{constructor(w,E){this.startOffset=w,this.endOffset=E}equals(w){return this.startOffset===w.startOffset&&this.endOffset===w.endOffset}}e.LineRange=f;class _{constructor(w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J){this.useMonospaceOptimizations=w,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.continuesWithWrappedLine=M,this.isBasicASCII=P,this.containsRTL=x,this.fauxIndentLength=T,this.lineTokens=A,this.lineDecorations=N.sort(D.LineDecoration.compare),this.tabSize=F,this.startVisibleColumn=O,this.spaceWidth=W,this.stopRenderingLineAfter=R,this.renderWhitespace=K==="all"?4:K==="boundary"?1:K==="selection"?2:K==="trailing"?3:0,this.renderControlCharacters=G,this.fontLigatures=Z,this.selectionsOnLine=J&&J.sort((B,V)=>B.startOffset>>16}static getCharIndex(w){return(w&65535)>>>0}constructor(w,E){this.length=w,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(w,E,I,M){const P=(E<<16|I<<0)>>>0;this._data[w-1]=P,this._horizontalOffset[w-1]=M}getHorizontalOffset(w){return this._horizontalOffset.length===0?0:this._horizontalOffset[w-1]}charOffsetToPartData(w){return this.length===0?0:w<0?this._data[0]:w>=this.length?this._data[this.length-1]:this._data[w]}getDomPosition(w){const E=this.charOffsetToPartData(w-1),I=C.getPartIndex(E),M=C.getCharIndex(E);return new g(I,M)}getColumn(w,E){return this.partDataToCharOffset(w.partIndex,E,w.charIndex)+1}partDataToCharOffset(w,E,I){if(this.length===0)return 0;const M=(w<<16|I<<0)>>>0;let P=0,x=this.length-1;for(;P+1>>1,K=this._data[R];if(K===M)return R;K>M?x=R:P=R}if(P===x)return P;const T=this._data[P],A=this._data[x];if(T===M)return P;if(A===M)return x;const N=C.getPartIndex(T),F=C.getCharIndex(T),O=C.getPartIndex(A);let W;N!==O?W=E:W=C.getCharIndex(A);const U=I-F,j=W-I;return U<=j?P:x}}e.CharacterMapping=C;class s{constructor(w,E,I){this._renderLineOutputBrand=void 0,this.characterMapping=w,this.containsRTL=E,this.containsForeignElements=I}}e.RenderLineOutput=s;function i(b,w){if(b.lineContent.length===0){if(b.lineDecorations.length>0){w.appendString("");let E=0,I=0,M=0;for(const x of b.lineDecorations)(x.type===1||x.type===2)&&(w.appendString(''),x.type===1&&(M|=1,E++),x.type===2&&(M|=2,I++));w.appendString("");const P=new C(1,E+I);return P.setColumnInfo(1,E,0,0),new s(P,!1,M)}return w.appendString(""),new s(new C(0,0),!1,0)}return p(u(b),w)}e.renderViewLine=i;class n{constructor(w,E,I,M){this.characterMapping=w,this.html=E,this.containsRTL=I,this.containsForeignElements=M}}e.RenderLineOutput2=n;function t(b){const w=new y.StringBuilder(1e4),E=i(b,w);return new n(E.characterMapping,w.build(),E.containsRTL,E.containsForeignElements)}e.renderViewLine2=t;class a{constructor(w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K){this.fontIsMonospace=w,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.len=M,this.isOverflowing=P,this.overflowingCharCount=x,this.parts=T,this.containsForeignElements=A,this.fauxIndentLength=N,this.tabSize=F,this.startVisibleColumn=O,this.containsRTL=W,this.spaceWidth=U,this.renderSpaceCharCode=j,this.renderWhitespace=R,this.renderControlCharacters=K}}function u(b){const w=b.lineContent;let E,I,M;b.stopRenderingLineAfter!==-1&&b.stopRenderingLineAfter0){for(let T=0,A=b.lineDecorations.length;T0&&(P[x++]=new S.LinePart(I,"",0,!1));let T=I;for(let A=0,N=E.getCount();A=M){const U=w?k.containsRTL(b.substring(T,M)):!1;P[x++]=new S.LinePart(M,O,0,U);break}const W=w?k.containsRTL(b.substring(T,F)):!1;P[x++]=new S.LinePart(F,O,0,W),T=F}return P}function r(b,w,E){let I=0;const M=[];let P=0;if(E)for(let x=0,T=w.length;x=50&&(M[P++]=new S.LinePart(U+1,F,O,W),j=U+1,U=-1);j!==N&&(M[P++]=new S.LinePart(N,F,O,W))}else M[P++]=A;I=N}else for(let x=0,T=w.length;x50){const O=A.type,W=A.metadata,U=A.containsRTL,j=Math.ceil(F/50);for(let R=1;R=8234&&b<=8238||b>=8294&&b<=8297||b>=8206&&b<=8207||b===1564}function o(b,w){const E=[];let I=new S.LinePart(0,"",0,!1),M=0;for(const P of w){const x=P.endIndex;for(;MI.endIndex&&(I=new S.LinePart(M,P.type,P.metadata,P.containsRTL),E.push(I)),I=new S.LinePart(M+1,"mtkcontrol",P.metadata,!1),E.push(I))}M>I.endIndex&&(I=new S.LinePart(x,P.type,P.metadata,P.containsRTL),E.push(I))}return E}function d(b,w,E,I){const M=b.continuesWithWrappedLine,P=b.fauxIndentLength,x=b.tabSize,T=b.startVisibleColumn,A=b.useMonospaceOptimizations,N=b.selectionsOnLine,F=b.renderWhitespace===1,O=b.renderWhitespace===3,W=b.renderSpaceWidth!==b.spaceWidth,U=[];let j=0,R=0,K=I[R].type,G=I[R].containsRTL,Z=I[R].endIndex;const J=I.length;let X=!1,H=k.firstNonWhitespaceIndex(w),B;H===-1?(X=!0,H=E,B=E):B=k.lastNonWhitespaceIndex(w);let V=!1,Y=0,ie=N&&N[Y],ae=T%x;for(let de=P;de=ie.endOffset&&(Y++,ie=N&&N[Y]);let ue;if(deB)ue=!0;else if(he===9)ue=!0;else if(he===32)if(F)if(V)ue=!0;else{const te=de+1de),ue&&O&&(ue=X||de>B),ue&&G&&de>=H&&de<=B&&(ue=!1),V){if(!ue||!A&&ae>=x){if(W){const te=j>0?U[j-1].endIndex:P;for(let q=te+1;q<=de;q++)U[j++]=new S.LinePart(q,"mtkw",1,!1)}else U[j++]=new S.LinePart(de,"mtkw",1,!1);ae=ae%x}}else(de===Z||ue&&de>P)&&(U[j++]=new S.LinePart(de,K,0,G),ae=ae%x);for(he===9?ae=x:k.isFullWidthCharacter(he)?ae+=2:ae++,V=ue;de===Z&&(R++,R0?w.charCodeAt(E-1):0,he=E>1?w.charCodeAt(E-2):0;de===32&&he!==32&&he!==9||(ce=!0)}else ce=!0;if(ce)if(W){const de=j>0?U[j-1].endIndex:P;for(let he=de+1;he<=E;he++)U[j++]=new S.LinePart(he,"mtkw",1,!1)}else U[j++]=new S.LinePart(E,"mtkw",1,!1);else U[j++]=new S.LinePart(E,K,0,G);return U}function l(b,w,E,I){I.sort(D.LineDecoration.compare);const M=D.LineDecorationsNormalizer.normalize(b,I),P=M.length;let x=0;const T=[];let A=0,N=0;for(let O=0,W=E.length;ON&&(N=Z.startOffset,T[A++]=new S.LinePart(N,R,K,G)),Z.endOffset+1<=j)N=Z.endOffset+1,T[A++]=new S.LinePart(N,R+" "+Z.className,K|Z.metadata,G),x++;else{N=j,T[A++]=new S.LinePart(N,R+" "+Z.className,K|Z.metadata,G);break}}j>N&&(N=j,T[A++]=new S.LinePart(N,R,K,G))}const F=E[E.length-1].endIndex;if(x'):w.appendString("");for(let ie=0,ae=N.length;ie=F&&(re+=ge)}}for(q&&(w.appendString(' style="width:'),w.appendString(String(j*ee)),w.appendString('px"')),w.appendASCIICharCode(62);X1?w.appendCharCode(8594):w.appendCharCode(65515);for(let ge=2;ge<=oe;ge++)w.appendCharCode(160)}else re=2,oe=1,w.appendCharCode(R),w.appendCharCode(8204);B+=re,V+=oe,X>=F&&(H+=oe)}}else for(w.appendASCIICharCode(62);X=F&&(H+=re)}z?Y++:Y=0,X>=x&&!J&&ce.isPseudoAfter()&&(J=!0,Z.setColumnInfo(X+1,ie,B,V)),w.appendString("")}return J||Z.setColumnInfo(x+1,N.length-1,B,V),T&&(w.appendString(''),w.appendString(L.localize(0,null,v(A))),w.appendString("")),w.appendString(""),new s(Z,U,M)}function m(b){return b.toString(16).toUpperCase().padStart(4,"0")}function v(b){return b<1024?L.localize(1,null,b):b<1024*1024?`${(b/1024).toFixed(1)} KB`:`${(b/1024/1024).toFixed(1)} MB`}}),define(ne[632],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/anchorSelect/browser/anchorSelect",e)}),define(ne[633],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/bracketMatching/browser/bracketMatching",e)}),define(ne[634],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/caretOperations/browser/caretOperations",e)}),define(ne[635],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/caretOperations/browser/transpose",e)}),define(ne[636],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/clipboard/browser/clipboard",e)}),define(ne[637],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/codeAction",e)}),define(ne[638],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/codeActionCommands",e)}),define(ne[639],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/codeActionContributions",e)}),define(ne[640],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/codeActionController",e)}),define(ne[641],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/codeActionMenu",e)}),define(ne[642],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codeAction/browser/lightBulbWidget",e)}),define(ne[643],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/codelens/browser/codelensController",e)}),define(ne[644],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/colorPicker/browser/colorPickerWidget",e)}),define(ne[645],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions",e)}),define(ne[646],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/comment/browser/comment",e)}),define(ne[647],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/contextmenu/browser/contextmenu",e)}),define(ne[648],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/cursorUndo/browser/cursorUndo",e)}),define(ne[649],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution",e)}),define(ne[650],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/dropOrPasteInto/browser/copyPasteController",e)}),define(ne[651],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/dropOrPasteInto/browser/defaultProviders",e)}),define(ne[652],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution",e)}),define(ne[653],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController",e)}),define(ne[654],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/editorState/browser/keybindingCancellation",e)}),define(ne[655],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/find/browser/findController",e)}),define(ne[656],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/find/browser/findWidget",e)}),define(ne[657],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/folding/browser/folding",e)}),define(ne[658],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/folding/browser/foldingDecorations",e)}),define(ne[659],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/fontZoom/browser/fontZoom",e)}),define(ne[660],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/format/browser/format",e)}),define(ne[661],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/format/browser/formatActions",e)}),define(ne[662],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoError/browser/gotoError",e)}),define(ne[663],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoError/browser/gotoErrorWidget",e)}),define(ne[664],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/goToCommands",e)}),define(ne[665],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition",e)}),define(ne[666],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesController",e)}),define(ne[667],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesTree",e)}),define(ne[668],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget",e)}),define(ne[669],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/referencesModel",e)}),define(ne[155],se([1,0,9,6,164,2,65,45,11,5,669]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReferencesModel=e.FileReferences=e.FilePreview=e.OneReference=void 0;class s{constructor(u,h,r,c){this.isProviderFirst=u,this.parent=h,this.link=r,this._rangeCallback=c,this.id=y.defaultGenerator.nextId()}get uri(){return this.link.uri}get range(){var u,h;return(h=(u=this._range)!==null&&u!==void 0?u:this.link.targetSelectionRange)!==null&&h!==void 0?h:this.link.range}set range(u){this._range=u,this._rangeCallback(this)}get ariaMessage(){var u;const h=(u=this.parent.getPreview(this))===null||u===void 0?void 0:u.preview(this.range);return h?(0,C.localize)(1,null,h.value,(0,f.basename)(this.uri),this.range.startLineNumber,this.range.startColumn):(0,C.localize)(0,null,(0,f.basename)(this.uri),this.range.startLineNumber,this.range.startColumn)}}e.OneReference=s;class i{constructor(u){this._modelReference=u}dispose(){this._modelReference.dispose()}preview(u,h=8){const r=this._modelReference.object.textEditorModel;if(!r)return;const{startLineNumber:c,startColumn:o,endLineNumber:d,endColumn:l}=u,p=r.getWordUntilPosition({lineNumber:c,column:o-h}),m=new g.Range(c,p.startColumn,c,o),v=new g.Range(d,l,d,1073741824),b=r.getValueInRange(m).replace(/^\s+/,""),w=r.getValueInRange(u),E=r.getValueInRange(v).replace(/\s+$/,"");return{value:b+w+E,highlight:{start:b.length,end:b.length+w.length}}}}e.FilePreview=i;class n{constructor(u,h){this.parent=u,this.uri=h,this.children=[],this._previews=new S.ResourceMap}dispose(){(0,D.dispose)(this._previews.values()),this._previews.clear()}getPreview(u){return this._previews.get(u.uri)}get ariaMessage(){const u=this.children.length;return u===1?(0,C.localize)(2,null,(0,f.basename)(this.uri),this.uri.fsPath):(0,C.localize)(3,null,u,(0,f.basename)(this.uri),this.uri.fsPath)}resolve(u){return we(this,void 0,void 0,function*(){if(this._previews.size!==0)return this;for(const h of this.children)if(!this._previews.has(h.uri))try{const r=yield u.createModelReference(h.uri);this._previews.set(h.uri,new i(r))}catch(r){(0,L.onUnexpectedError)(r)}return this})}}e.FileReferences=n;class t{constructor(u,h){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new k.Emitter,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=u,this._title=h;const[r]=u;u.sort(t._compareReferences);let c;for(const o of u)if((!c||!f.extUri.isEqual(c.uri,o.uri,!0))&&(c=new n(this,o.uri),this.groups.push(c)),c.children.length===0||t._compareReferences(o,c.children[c.children.length-1])!==0){const d=new s(r===o,c,o,l=>this._onDidChangeReferenceRange.fire(l));this.references.push(d),c.children.push(d)}}dispose(){(0,D.dispose)(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new t(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?(0,C.localize)(4,null):this.references.length===1?(0,C.localize)(5,null,this.references[0].uri.fsPath):this.groups.length===1?(0,C.localize)(6,null,this.references.length,this.groups[0].uri.fsPath):(0,C.localize)(7,null,this.references.length,this.groups.length)}nextOrPreviousReference(u,h){const{parent:r}=u;let c=r.children.indexOf(u);const o=r.children.length,d=r.parent.groups.length;return d===1||h&&c+10?(h?c=(c+1)%o:c=(c+o-1)%o,r.children[c]):(c=r.parent.groups.indexOf(r),h?(c=(c+1)%d,r.parent.groups[c].children[0]):(c=(c+d-1)%d,r.parent.groups[c].children[r.parent.groups[c].children.length-1]))}nearestReference(u,h){const r=this.references.map((c,o)=>({idx:o,prefixLen:_.commonPrefixLength(c.uri.toString(),u.toString()),offsetDist:Math.abs(c.range.startLineNumber-h.lineNumber)*100+Math.abs(c.range.startColumn-h.column)})).sort((c,o)=>c.prefixLen>o.prefixLen?-1:c.prefixLeno.offsetDist?1:0)[0];if(r)return this.references[r.idx]}referenceAt(u,h){for(const r of this.references)if(r.uri.toString()===u.toString()&&g.Range.containsPosition(r.range,h))return r}firstReference(){for(const u of this.references)if(u.isProviderFirst)return u;return this.references[0]}static _compareReferences(u,h){return f.extUri.compare(u.uri,h.uri)||g.Range.compareRangesUsingStarts(u.range,h.range)}}e.ReferencesModel=t}),define(ne[670],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/gotoSymbol/browser/symbolNavigation",e)}),define(ne[671],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/hover/browser/hover",e)}),define(ne[672],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/hover/browser/markdownHoverParticipant",e)}),define(ne[673],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/hover/browser/markerHoverParticipant",e)}),define(ne[674],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace",e)}),define(ne[675],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/indentation/browser/indentation",e)}),define(ne[676],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlayHints/browser/inlayHintsHover",e)}),define(ne[677],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlineCompletions/browser/commands",e)}),define(ne[678],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlineCompletions/browser/hoverParticipant",e)}),define(ne[679],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys",e)}),define(ne[680],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController",e)}),define(ne[681],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget",e)}),define(ne[682],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/lineSelection/browser/lineSelection",e)}),define(ne[683],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/linesOperations/browser/linesOperations",e)}),define(ne[684],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/linkedEditing/browser/linkedEditing",e)}),define(ne[685],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/links/browser/links",e)}),define(ne[686],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/message/browser/messageController",e)}),define(ne[687],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/multicursor/browser/multicursor",e)}),define(ne[688],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/parameterHints/browser/parameterHints",e)}),define(ne[689],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/parameterHints/browser/parameterHintsWidget",e)}),define(ne[690],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/peekView/browser/peekView",e)}),define(ne[691],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess",e)}),define(ne[692],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess",e)}),define(ne[693],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/readOnlyMessage/browser/contribution",e)}),define(ne[694],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/rename/browser/rename",e)}),define(ne[695],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/rename/browser/renameInputField",e)}),define(ne[696],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/smartSelect/browser/smartSelect",e)}),define(ne[697],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/snippet/browser/snippetController2",e)}),define(ne[698],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/snippet/browser/snippetVariables",e)}),define(ne[699],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/stickyScroll/browser/stickyScrollActions",e)}),define(ne[700],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggest",e)}),define(ne[701],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggestController",e)}),define(ne[702],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggestWidget",e)}),define(ne[703],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggestWidgetDetails",e)}),define(ne[704],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggestWidgetRenderer",e)}),define(ne[705],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/suggest/browser/suggestWidgetStatus",e)}),define(ne[706],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/symbolIcons/browser/symbolIcons",e)}),define(ne[707],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode",e)}),define(ne[708],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/tokenization/browser/tokenization",e)}),define(ne[709],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter",e)}),define(ne[710],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators",e)}),define(ne[711],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/wordHighlighter/browser/highlightDecorations",e)}),define(ne[712],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/wordHighlighter/browser/wordHighlighter",e)}),define(ne[713],se([3,4]),function(Q,e){return Q.create("vs/editor/contrib/wordOperations/browser/wordOperations",e)}),define(ne[714],se([3,4]),function(Q,e){return Q.create("vs/platform/action/common/actionCommonCategories",e)}),define(ne[715],se([3,4]),function(Q,e){return Q.create("vs/platform/actionWidget/browser/actionList",e)}),define(ne[716],se([3,4]),function(Q,e){return Q.create("vs/platform/actionWidget/browser/actionWidget",e)}),define(ne[717],se([3,4]),function(Q,e){return Q.create("vs/platform/actions/browser/menuEntryActionViewItem",e)}),define(ne[718],se([3,4]),function(Q,e){return Q.create("vs/platform/actions/browser/toolbar",e)}),define(ne[719],se([3,4]),function(Q,e){return Q.create("vs/platform/actions/common/menuService",e)}),define(ne[720],se([3,4]),function(Q,e){return Q.create("vs/platform/audioCues/browser/audioCueService",e)}),define(ne[721],se([3,4]),function(Q,e){return Q.create("vs/platform/configuration/common/configurationRegistry",e)}),define(ne[722],se([3,4]),function(Q,e){return Q.create("vs/platform/contextkey/browser/contextKeyService",e)}),define(ne[723],se([3,4]),function(Q,e){return Q.create("vs/platform/contextkey/common/contextkey",e)}),define(ne[724],se([3,4]),function(Q,e){return Q.create("vs/platform/contextkey/common/contextkeys",e)}),define(ne[725],se([3,4]),function(Q,e){return Q.create("vs/platform/contextkey/common/scanner",e)}),define(ne[726],se([3,4]),function(Q,e){return Q.create("vs/platform/history/browser/contextScopedHistoryWidget",e)}),define(ne[727],se([3,4]),function(Q,e){return Q.create("vs/platform/keybinding/common/abstractKeybindingService",e)}),define(ne[728],se([3,4]),function(Q,e){return Q.create("vs/platform/list/browser/listService",e)}),define(ne[729],se([3,4]),function(Q,e){return Q.create("vs/platform/markers/common/markers",e)}),define(ne[730],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/commandsQuickAccess",e)}),define(ne[731],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/helpQuickAccess",e)}),define(ne[732],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/quickInput",e)}),define(ne[733],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/quickInputController",e)}),define(ne[734],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/quickInputList",e)}),define(ne[735],se([3,4]),function(Q,e){return Q.create("vs/platform/quickinput/browser/quickInputUtils",e)}),define(ne[736],se([3,4]),function(Q,e){return Q.create("vs/platform/theme/common/colorRegistry",e)}),define(ne[737],se([3,4]),function(Q,e){return Q.create("vs/platform/theme/common/iconRegistry",e)}),define(ne[738],se([3,4]),function(Q,e){return Q.create("vs/platform/undoRedo/common/undoRedoService",e)}),define(ne[739],se([3,4]),function(Q,e){return Q.create("vs/platform/workspace/common/workspace",e)}),define(ne[740],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isICommandActionToggleInfo=void 0;function L(k){return k?k.condition!==void 0:!1}e.isICommandActionToggleInfo=L}),define(ne[741],se([1,0,714]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Categories=void 0,e.Categories=Object.freeze({View:{value:(0,L.localize)(0,null),original:"View"},Help:{value:(0,L.localize)(1,null),original:"Help"},Test:{value:(0,L.localize)(2,null),original:"Test"},File:{value:(0,L.localize)(3,null),original:"File"},Preferences:{value:(0,L.localize)(4,null),original:"Preferences"},Developer:{value:(0,L.localize)(5,null),original:"Developer"}})}),define(ne[742],se([1,0,9,725]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Scanner=void 0;function y(..._){switch(_.length){case 1:return(0,k.localize)(0,null,_[0]);case 2:return(0,k.localize)(1,null,_[0],_[1]);case 3:return(0,k.localize)(2,null,_[0],_[1],_[2]);default:return}}const D=(0,k.localize)(3,null),S=(0,k.localize)(4,null);class f{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(g){switch(g.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return g.isTripleEq?"===":"==";case 4:return g.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return g.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return g.lexeme;case 18:return g.lexeme;case 19:return g.lexeme;case 20:return"EOF";default:throw(0,L.illegalState)(`unhandled token type: ${JSON.stringify(g)}; have you forgotten to add a case?`)}}reset(g){return this._input=g,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const C=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:C})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const C=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:C})}else this._match(126)?this._addToken(9):this._error(y("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(y("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(y("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(g){return this._isAtEnd()||this._input.charCodeAt(this._current)!==g?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(g){this._tokens.push({type:g,offset:this._start})}_error(g){const C=this._start,s=this._input.substring(this._start,this._current),i={type:19,offset:this._start,lexeme:s};this._errors.push({offset:C,lexeme:s,additionalInfo:g}),this._tokens.push(i)}_string(){this.stringRe.lastIndex=this._start;const g=this.stringRe.exec(this._input);if(g){this._current=this._start+g[0].length;const C=this._input.substring(this._start,this._current),s=f._keywords.get(C);s?this._addToken(s):this._tokens.push({type:17,lexeme:C,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(D);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let g=this._current,C=!1,s=!1;for(;;){if(g>=this._input.length){this._current=g,this._error(S);return}const n=this._input.charCodeAt(g);if(C)C=!1;else if(n===47&&!s){g++;break}else n===91?s=!0:n===92?C=!0:n===93&&(s=!1);g++}for(;g=this._input.length}}e.Scanner=f,f._regexFlags=new Set(["i","g","s","m","y","u"].map(_=>_.charCodeAt(0))),f._keywords=new Map([["not",14],["in",13],["false",12],["true",11]])}),define(ne[743],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorOpenSource=void 0;var L;(function(k){k[k.API=0]="API",k[k.USER=1]="USER"})(L||(e.EditorOpenSource=L={}))}),define(ne[744],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ExtensionIdentifierSet=e.ExtensionIdentifier=void 0;class L{constructor(D){this.value=D,this._lower=D.toLowerCase()}static toKey(D){return typeof D=="string"?D.toLowerCase():D._lower}}e.ExtensionIdentifier=L;class k{constructor(D){if(this._set=new Set,D)for(const S of D)this.add(S)}add(D){this._set.add(L.toKey(D))}has(D){return this._set.has(L.toKey(D))}}e.ExtensionIdentifierSet=k}),define(ne[330],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FileKind=void 0;var L;(function(k){k[k.FILE=0]="FILE",k[k.FOLDER=1]="FOLDER",k[k.ROOT_FOLDER=2]="ROOT_FOLDER"})(L||(e.FileKind=L={}))}),define(ne[745],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.showHistoryKeybindingHint=void 0;function L(k){var y,D;return((y=k.lookupKeybinding("history.showPrevious"))===null||y===void 0?void 0:y.getElectronAccelerator())==="Up"&&((D=k.lookupKeybinding("history.showNext"))===null||D===void 0?void 0:D.getElectronAccelerator())==="Down"}e.showHistoryKeybindingHint=L}),define(ne[232],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SyncDescriptor=void 0;class L{constructor(y,D=[],S=!1){this.ctor=y,this.staticArguments=D,this.supportsDelayedInstantiation=S}}e.SyncDescriptor=L}),define(ne[50],se([1,0,232]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSingletonServiceDescriptors=e.registerSingleton=void 0;const k=[];function y(S,f,_){f instanceof L.SyncDescriptor||(f=new L.SyncDescriptor(f,[],!!_)),k.push([S,f])}e.registerSingleton=y;function D(){return k}e.getSingletonServiceDescriptors=D}),define(ne[746],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Graph=e.Node=void 0;class L{constructor(D,S){this.key=D,this.data=S,this.incoming=new Map,this.outgoing=new Map}}e.Node=L;class k{constructor(D){this._hashFn=D,this._nodes=new Map}roots(){const D=[];for(const S of this._nodes.values())S.outgoing.size===0&&D.push(S);return D}insertEdge(D,S){const f=this.lookupOrInsertNode(D),_=this.lookupOrInsertNode(S);f.outgoing.set(_.key,_),_.incoming.set(f.key,f)}removeNode(D){const S=this._hashFn(D);this._nodes.delete(S);for(const f of this._nodes.values())f.outgoing.delete(S),f.incoming.delete(S)}lookupOrInsertNode(D){const S=this._hashFn(D);let f=this._nodes.get(S);return f||(f=new L(S,D),this._nodes.set(S,f)),f}isEmpty(){return this._nodes.size===0}toString(){const D=[];for(const[S,f]of this._nodes)D.push(`${S} - (-> incoming)[${[...f.incoming.keys()].join(", ")}] - (outgoing ->)[${[...f.outgoing.keys()].join(",")}] -`);return D.join(` -`)}findCycleSlow(){for(const[D,S]of this._nodes){const f=new Set([D]),_=this._findCycle(S,f);if(_)return _}}_findCycle(D,S){for(const[f,_]of D.outgoing){if(S.has(f))return[...S,f].join(" -> ");S.add(f);const g=this._findCycle(_,S);if(g)return g;S.delete(f)}}}e.Graph=k}),define(ne[8],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createDecorator=e.IInstantiationService=e._util=void 0;var L;(function(D){D.serviceIds=new Map,D.DI_TARGET="$di$target",D.DI_DEPENDENCIES="$di$dependencies";function S(f){return f[D.DI_DEPENDENCIES]||[]}D.getServiceDependencies=S})(L||(e._util=L={})),e.IInstantiationService=y("instantiationService");function k(D,S,f){S[L.DI_TARGET]===S?S[L.DI_DEPENDENCIES].push({id:D,index:f}):(S[L.DI_DEPENDENCIES]=[{id:D,index:f}],S[L.DI_TARGET]=S)}function y(D){if(L.serviceIds.has(D))return L.serviceIds.get(D);const S=function(f,_,g){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");k(S,f,g)};return S.toString=()=>D,L.serviceIds.set(D,S),S}e.createDecorator=y}),define(ne[132],se([1,0,8,22,20]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResourceFileEdit=e.ResourceTextEdit=e.ResourceEdit=e.IBulkEditService=void 0,e.IBulkEditService=(0,L.createDecorator)("IWorkspaceEditService");class D{constructor(g){this.metadata=g}static convert(g){return g.edits.map(C=>{if(S.is(C))return S.lift(C);if(f.is(C))return f.lift(C);throw new Error("Unsupported edit")})}}e.ResourceEdit=D;class S extends D{static is(g){return g instanceof S?!0:(0,y.isObject)(g)&&k.URI.isUri(g.resource)&&(0,y.isObject)(g.textEdit)}static lift(g){return g instanceof S?g:new S(g.resource,g.textEdit,g.versionId,g.metadata)}constructor(g,C,s=void 0,i){super(i),this.resource=g,this.textEdit=C,this.versionId=s}}e.ResourceTextEdit=S;class f extends D{static is(g){return g instanceof f?!0:(0,y.isObject)(g)&&(!!g.newResource||!!g.oldResource)}static lift(g){return g instanceof f?g:new f(g.oldResource,g.newResource,g.options,g.metadata)}constructor(g,C,s={},i){super(i),this.oldResource=g,this.newResource=C,this.options=s}}e.ResourceFileEdit=f}),define(ne[33],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ICodeEditorService=void 0,e.ICodeEditorService=(0,L.createDecorator)("codeEditorService")}),define(ne[41],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILanguageService=void 0,e.ILanguageService=(0,L.createDecorator)("languageService")}),define(ne[115],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEditorWorkerService=void 0,e.IEditorWorkerService=(0,L.createDecorator)("editorWorkerService")}),define(ne[18],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILanguageFeaturesService=void 0,e.ILanguageFeaturesService=(0,L.createDecorator)("ILanguageFeaturesService")});var fe=this&&this.__param||function(Q,e){return function(L,k){e(L,k,Q)}};define(ne[747],se([1,0,7,129,14,19,25,6,55,2,42,26,20,483,102,66,12,5,29,18,614]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnchangedRangesFeature=void 0;let d=class extends g.Disposable{get isUpdatingViewZones(){return this._isUpdatingViewZones}constructor(b,w,E,I){super(),this._editors=b,this._diffModel=w,this._options=E,this._languageFeaturesService=I,this._isUpdatingViewZones=!1,this._modifiedModel=(0,C.observableFromEvent)(this._editors.modified.onDidChangeModel,()=>this._editors.modified.getModel()),this._modifiedOutlineSource=(0,C.derivedWithStore)("modified outline source",(A,N)=>{const F=this._modifiedModel.read(A);if(F)return N.add(new p(this._languageFeaturesService,F))}),this._register(this._editors.original.onDidChangeCursorPosition(A=>{if(A.reason===3){const N=this._diffModel.get();(0,C.transaction)(F=>{for(const O of this._editors.original.getSelections()||[])N?.ensureOriginalLineIsVisible(O.getStartPosition().lineNumber,F),N?.ensureOriginalLineIsVisible(O.getEndPosition().lineNumber,F)})}})),this._register(this._editors.modified.onDidChangeCursorPosition(A=>{if(A.reason===3){const N=this._diffModel.get();(0,C.transaction)(F=>{for(const O of this._editors.modified.getSelections()||[])N?.ensureModifiedLineIsVisible(O.getStartPosition().lineNumber,F),N?.ensureModifiedLineIsVisible(O.getEndPosition().lineNumber,F)})}}));const M=this._diffModel.map((A,N)=>{var F,O;return((F=A?.diff.read(N))===null||F===void 0?void 0:F.mappings.length)===0?[]:(O=A?.unchangedRegions.read(N))!==null&&O!==void 0?O:[]}),P=(0,C.derivedWithStore)("view zones",(A,N)=>{const F=[],O=[],W=this._options.renderSideBySide.read(A),U=this._modifiedOutlineSource.read(A);if(!U)return{origViewZones:F,modViewZones:O};const j=M.read(A);for(const R of j)if(!R.shouldHideControls(A)){{const K=(0,C.derived)(Z=>R.getHiddenOriginalRange(Z).startLineNumber-1),G=new t.PlaceholderViewZone(K,24);F.push(G),N.add(new m(this._editors.original,G,R,R.originalRange,!W,U,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,void 0),this._options))}{const K=(0,C.derived)(Z=>R.getHiddenModifiedRange(Z).startLineNumber-1),G=new t.PlaceholderViewZone(K,24);O.push(G),N.add(new m(this._editors.modified,G,R,R.modifiedRange,!1,U,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,void 0),this._options))}}return{origViewZones:F,modViewZones:O}}),x={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},T={description:"Fold Unchanged",glyphMarginHoverMessage:new _.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,o.localize)(0,null)),glyphMarginClassName:"fold-unchanged "+s.ThemeIcon.asClassName(S.Codicon.fold),zIndex:10001};this._register((0,t.applyObservableDecorations)(this._editors.original,(0,C.derived)(A=>{const N=M.read(A),F=N.map(O=>({range:O.originalRange.toInclusiveRange(),options:x}));for(const O of N)O.shouldHideControls(A)&&F.push({range:h.Range.fromPositions(new u.Position(O.originalLineNumber,1)),options:T});return F}))),this._register((0,t.applyObservableDecorations)(this._editors.modified,(0,C.derived)(A=>{const N=M.read(A),F=N.map(O=>({range:O.modifiedRange.toInclusiveRange(),options:x}));for(const O of N)O.shouldHideControls(A)&&F.push({range:a.LineRange.ofLength(O.modifiedLineNumber,1).toInclusiveRange(),options:T});return F}))),this._register((0,t.applyViewZones)(this._editors.original,P.map(A=>A.origViewZones),A=>this._isUpdatingViewZones=A)),this._register((0,t.applyViewZones)(this._editors.modified,P.map(A=>A.modViewZones),A=>this._isUpdatingViewZones=A)),this._register((0,C.autorun)(A=>{const N=M.read(A);this._editors.original.setHiddenAreas(N.map(F=>F.getHiddenOriginalRange(A).toInclusiveRange()).filter(i.isDefined)),this._editors.modified.setHiddenAreas(N.map(F=>F.getHiddenModifiedRange(A).toInclusiveRange()).filter(i.isDefined))})),this._register(this._editors.modified.onMouseUp(A=>{var N;if(!A.event.rightButton&&A.target.position&&(!((N=A.target.element)===null||N===void 0)&&N.className.includes("fold-unchanged"))){const F=A.target.position.lineNumber,O=this._diffModel.get();if(!O)return;const W=O.unchangedRegions.get().find(U=>U.modifiedRange.includes(F));if(!W)return;W.collapseAll(void 0),A.event.stopPropagation(),A.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(A=>{var N;if(!A.event.rightButton&&A.target.position&&(!((N=A.target.element)===null||N===void 0)&&N.className.includes("fold-unchanged"))){const F=A.target.position.lineNumber,O=this._diffModel.get();if(!O)return;const W=O.unchangedRegions.get().find(U=>U.originalRange.includes(F));if(!W)return;W.collapseAll(void 0),A.event.stopPropagation(),A.event.preventDefault()}}))}};e.UnchangedRangesFeature=d,e.UnchangedRangesFeature=d=ke([fe(3,c.ILanguageFeaturesService)],d);class l extends D.CancellationTokenSource{dispose(){super.dispose(!0)}}let p=class extends g.Disposable{constructor(b,w){super(),this._languageFeaturesService=b,this._textModel=w,this._currentModel=(0,C.observableValue)("current model",void 0);const E=(0,C.observableSignalFromEvent)("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),I=(0,C.observableSignalFromEvent)("_textModel.onDidChangeContent",f.Event.debounce(M=>this._textModel.onDidChangeContent(M),()=>{},100));this._register((0,C.autorunWithStore)((M,P)=>we(this,void 0,void 0,function*(){E.read(M),I.read(M);const x=P.add(new l),T=yield n.OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,this._textModel,x.token);P.isDisposed||this._currentModel.set(T,void 0)})))}getBreadcrumbItems(b,w){const E=this._currentModel.read(w);if(!E)return[];const I=E.asListOfDocumentSymbols().filter(M=>b.contains(M.range.startLineNumber)&&!b.contains(M.range.endLineNumber));return I.sort((0,y.reverseOrder)((0,y.compareBy)(M=>M.range.endLineNumber-M.range.startLineNumber,y.numberComparator))),I.map(M=>({name:M.name,kind:M.kind,startLineNumber:M.range.startLineNumber}))}};p=ke([fe(0,c.ILanguageFeaturesService)],p);class m extends t.ViewZoneOverlayWidget{constructor(b,w,E,I,M,P,x,T){const A=(0,L.h)("div.diff-hidden-lines-widget");super(b,w,A.root),this._editor=b,this._unchangedRegion=E,this._unchangedRegionRange=I,this.hide=M,this._modifiedOutlineSource=P,this._revealModifiedHiddenLine=x,this._options=T,this._nodes=(0,L.h)("div.diff-hidden-lines",[(0,L.h)("div.top@top",{title:(0,o.localize)(1,null)}),(0,L.h)("div.center@content",{style:{display:"flex"}},[(0,L.h)("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[(0,L.$)("a",{title:(0,o.localize)(2,null),role:"button",onclick:()=>{this.showAll()}},...(0,k.renderLabelWithIcons)("$(unfold)"))]),(0,L.h)("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),(0,L.h)("div.bottom@bottom",{title:(0,o.localize)(3,null),role:"button"})]),A.root.appendChild(this._nodes.root);const N=(0,C.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this.hide?(0,L.reset)(this._nodes.first):this._register((0,t.applyStyle)(this._nodes.first,{width:N.map(O=>O.contentLeft)}));const F=this._editor;this._register((0,L.addDisposableListener)(this._nodes.top,"mousedown",O=>{if(O.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),O.preventDefault();const W=O.clientY;let U=!1;const j=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set(!0,void 0);const R=(0,L.addDisposableListener)(window,"mousemove",G=>{const J=G.clientY-W;U=U||Math.abs(J)>2;const X=Math.round(J/F.getOption(65)),H=Math.max(0,Math.min(j+X,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(H,void 0)}),K=(0,L.addDisposableListener)(window,"mouseup",G=>{U||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(!1,void 0),R.dispose(),K.dispose()})})),this._register((0,L.addDisposableListener)(this._nodes.bottom,"mousedown",O=>{if(O.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),O.preventDefault();const W=O.clientY;let U=!1;const j=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set(!0,void 0);const R=(0,L.addDisposableListener)(window,"mousemove",G=>{const J=G.clientY-W;U=U||Math.abs(J)>2;const X=Math.round(J/F.getOption(65)),H=Math.max(0,Math.min(j-X,this._unchangedRegion.getMaxVisibleLineCountBottom())),B=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(H,void 0);const V=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);F.setScrollTop(F.getScrollTop()+(V-B))}),K=(0,L.addDisposableListener)(window,"mouseup",G=>{if(this._unchangedRegion.isDragged.set(!1,void 0),!U){const Z=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const J=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);F.setScrollTop(F.getScrollTop()+(J-Z))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),R.dispose(),K.dispose()})})),this._register((0,C.autorun)(O=>{const W=[];if(!this.hide){const U=E.getHiddenModifiedRange(O).length,j=(0,o.localize)(4,null,U),R=(0,L.$)("span",{title:(0,o.localize)(5,null)},j);R.addEventListener("dblclick",Z=>{Z.button===0&&(Z.preventDefault(),this.showAll())}),W.push(R);const K=this._unchangedRegion.getHiddenModifiedRange(O),G=this._modifiedOutlineSource.getBreadcrumbItems(K,O);if(G.length>0){W.push((0,L.$)("span",void 0,"\xA0\xA0|\xA0\xA0"));for(let Z=0;Z{this._revealModifiedHiddenLine(J.startLineNumber)}}}}(0,L.reset)(this._nodes.others,...W)}))}showAll(){this._unchangedRegion.showAll(void 0)}}}),define(ne[748],se([1,0,594,18,50]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeaturesService=void 0;class D{constructor(){this.referenceProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.renameProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeActionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.definitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.typeDefinitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.declarationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.implementationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSymbolProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlayHintsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.colorProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeLensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.onTypeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.signatureHelpProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.hoverProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentHighlightProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.selectionRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.foldingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlineCompletionsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.completionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkedEditingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentOnDropEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentPasteEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this))}_score(f){var _;return(_=this._notebookTypeResolver)===null||_===void 0?void 0:_.call(this,f)}}e.LanguageFeaturesService=D,(0,y.registerSingleton)(k.ILanguageFeaturesService,D,1)}),define(ne[233],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerDecorationsService=void 0,e.IMarkerDecorationsService=(0,L.createDecorator)("markerDecorationsService")}),define(ne[51],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IModelService=void 0,e.IModelService=(0,L.createDecorator)("modelService")}),define(ne[69],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITextModelService=void 0,e.ITextModelService=(0,L.createDecorator)("textModelService")}),define(ne[234],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ISemanticTokensStylingService=void 0,e.ISemanticTokensStylingService=(0,L.createDecorator)("semanticTokensStylingService")}),define(ne[187],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITextResourcePropertiesService=e.ITextResourceConfigurationService=void 0,e.ITextResourceConfigurationService=(0,L.createDecorator)("textResourceConfigurationService"),e.ITextResourcePropertiesService=(0,L.createDecorator)("textResourcePropertiesService")}),define(ne[749],se([1,0,50,8,285]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITreeViewsDnDService=void 0,e.ITreeViewsDnDService=(0,k.createDecorator)("treeViewsDndService"),(0,L.registerSingleton)(e.ITreeViewsDnDService,y.TreeViewsDnDService,1)}),define(ne[331],se([1,0,132]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortEditsByYieldTo=e.createCombinedWorkspaceEdit=void 0;function k(D,S,f){var _,g;return{edits:[...S.map(C=>new L.ResourceTextEdit(D,typeof f.insertText=="string"?{range:C,text:f.insertText,insertAsSnippet:!1}:{range:C,text:f.insertText.snippet,insertAsSnippet:!0})),...(g=(_=f.additionalEdit)===null||_===void 0?void 0:_.edits)!==null&&g!==void 0?g:[]]}}e.createCombinedWorkspaceEdit=k;function y(D){var S;function f(i,n){return"providerId"in i&&i.providerId===n.providerId||"mimeType"in i&&i.mimeType===n.handledMimeType}const _=new Map;for(const i of D)for(const n of(S=i.yieldTo)!==null&&S!==void 0?S:[])for(const t of D)if(t!==i&&f(n,t)){let a=_.get(i);a||(a=[],_.set(i,a)),a.push(t)}if(!_.size)return Array.from(D);const g=new Set,C=[];function s(i){if(!i.length)return[];const n=i[0];if(C.includes(n))return console.warn(`Yield to cycle detected for ${n.providerId}`),i;if(g.has(n))return s(i.slice(1));let t=[];const a=_.get(n);return a&&(C.push(n),t=s(a),C.pop()),g.add(n),[...t,n,...s(i.slice(1))]}return s(Array.from(D))}e.sortEditsByYieldTo=y}),define(ne[750],se([1,0,89,6,2,42,11,59,36,12,5,93,41,48,86,127,95,215,151,450]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GhostTextWidget=void 0;let c=class extends y.Disposable{constructor(m,v,b){super(),this.editor=m,this.model=v,this.languageService=b,this.isDisposed=(0,D.observableValue)("isDisposed",!1),this.currentTextModel=(0,D.observableFromEvent)(this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=(0,D.derived)(w=>{if(this.isDisposed.read(w))return;const E=this.currentTextModel.read(w);if(E!==this.model.targetTextModel.read(w))return;const I=this.model.ghostText.read(w);if(!I)return;const M=I instanceof h.GhostTextReplacement?I.columnRange:void 0,P=[],x=[];function T(W,U){if(x.length>0){const j=x[x.length-1];U&&j.decorations.push(new a.LineDecoration(j.content.length+1,j.content.length+1+W[0].length,U,0)),j.content+=W[0],W=W.slice(1)}for(const j of W)x.push({content:j,decorations:U?[new a.LineDecoration(1,j.length+1,U,0)]:[]})}const A=E.getLineContent(I.lineNumber);let N,F=0;for(const W of I.parts){let U=W.lines;N===void 0?(P.push({column:W.column,text:U[0],preview:W.preview}),U=U.slice(1)):T([A.substring(F,W.column-1)],void 0),U.length>0&&(T(U,"ghost-text"),N===void 0&&W.column<=A.length&&(N=W.column)),F=W.column-1}N!==void 0&&T([A.substring(F)],void 0);const O=N!==void 0?new r.ColumnRange(N,A.length+1):void 0;return{replacedRange:M,inlineTexts:P,additionalLines:x,hiddenRange:O,lineNumber:I.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(w),targetTextModel:E}}),this.decorations=(0,D.derived)(w=>{const E=this.uiState.read(w);if(!E)return[];const I=[];E.replacedRange&&I.push({range:E.replacedRange.toRange(E.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),E.hiddenRange&&I.push({range:E.hiddenRange.toRange(E.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const M of E.inlineTexts)I.push({range:C.Range.fromPositions(new g.Position(E.lineNumber,M.column)),options:{description:"ghost-text",after:{content:M.text,inlineClassName:M.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:n.InjectedTextCursorStops.Left},showIfCollapsed:!0}});return I}),this.additionalLinesWidget=this._register(new o(this.editor,this.languageService.languageIdCodec,(0,D.derived)(w=>{const E=this.uiState.read(w);return E?{lineNumber:E.lineNumber,additionalLines:E.additionalLines,minReservedLineCount:E.additionalReservedLineCount,targetTextModel:E.targetTextModel}:void 0}))),this._register((0,y.toDisposable)(()=>{this.isDisposed.set(!0,void 0)})),this._register((0,r.applyObservableDecorations)(this.editor,this.decorations))}ownsViewZone(m){return this.additionalLinesWidget.viewZoneId===m}};e.GhostTextWidget=c,e.GhostTextWidget=c=ke([fe(2,i.ILanguageService)],c);class o extends y.Disposable{get viewZoneId(){return this._viewZoneId}constructor(m,v,b){super(),this.editor=m,this.languageIdCodec=v,this.lines=b,this._viewZoneId=void 0,this.editorOptionsChanged=(0,D.observableSignalFromEvent)("editorOptionChanged",k.Event.filter(this.editor.onDidChangeConfiguration,w=>w.hasChanged(32)||w.hasChanged(115)||w.hasChanged(97)||w.hasChanged(92)||w.hasChanged(50)||w.hasChanged(49)||w.hasChanged(65))),this._register((0,D.autorun)(w=>{const E=this.lines.read(w);this.editorOptionsChanged.read(w),E?this.updateLines(E.lineNumber,E.additionalLines,E.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(m=>{this._viewZoneId&&(m.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(m,v,b){const w=this.editor.getModel();if(!w)return;const{tabSize:E}=w.getOptions();this.editor.changeViewZones(I=>{this._viewZoneId&&(I.removeZone(this._viewZoneId),this._viewZoneId=void 0);const M=Math.max(v.length,b);if(M>0){const P=document.createElement("div");d(P,E,v,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=I.addZone({afterLineNumber:m,heightInLines:M,domNode:P,afterColumnAffinity:1})}})}}function d(p,m,v,b,w){const E=b.get(32),I=b.get(115),M="none",P=b.get(92),x=b.get(50),T=b.get(49),A=b.get(65),N=new s.StringBuilder(1e4);N.appendString('
    ');for(let W=0,U=v.length;W');const K=S.isBasicASCII(R),G=S.containsRTL(R),Z=t.LineTokens.createEmpty(R,w);(0,u.renderViewLine)(new u.RenderLineInput(T.isMonospace&&!E,T.canUseHalfwidthRightwardsArrow,R,!1,K,G,0,Z,j.decorations,m,0,T.spaceWidth,T.middotWidth,T.wsmiddotWidth,I,M,P,x!==_.EditorFontLigatures.OFF,null),N),N.appendString("
    ")}N.appendString("
    "),(0,f.applyFontInfo)(p,T);const F=N.build(),O=l?l.createHTML(F):F;p.innerHTML=O}const l=(0,L.createTrustedTypesPolicy)("editorGhostText",{createHTML:p=>p})}),define(ne[133],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IStandaloneThemeService=void 0,e.IStandaloneThemeService=(0,L.createDecorator)("themeService")}),define(ne[116],se([1,0,8,720]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AudioCue=e.SoundSource=e.Sound=e.IAudioCueService=void 0,e.IAudioCueService=(0,L.createDecorator)("audioCue");class y{static register(_){return new y(_.fileName)}constructor(_){this.fileName=_}}e.Sound=y,y.error=y.register({fileName:"error.mp3"}),y.warning=y.register({fileName:"warning.mp3"}),y.foldedArea=y.register({fileName:"foldedAreas.mp3"}),y.break=y.register({fileName:"break.mp3"}),y.quickFixes=y.register({fileName:"quickFixes.mp3"}),y.taskCompleted=y.register({fileName:"taskCompleted.mp3"}),y.taskFailed=y.register({fileName:"taskFailed.mp3"}),y.terminalBell=y.register({fileName:"terminalBell.mp3"}),y.diffLineInserted=y.register({fileName:"diffLineInserted.mp3"}),y.diffLineDeleted=y.register({fileName:"diffLineDeleted.mp3"}),y.diffLineModified=y.register({fileName:"diffLineModified.mp3"}),y.chatRequestSent=y.register({fileName:"chatRequestSent.mp3"}),y.chatResponsePending=y.register({fileName:"chatResponsePending.mp3"}),y.chatResponseReceived1=y.register({fileName:"chatResponseReceived1.mp3"}),y.chatResponseReceived2=y.register({fileName:"chatResponseReceived2.mp3"}),y.chatResponseReceived3=y.register({fileName:"chatResponseReceived3.mp3"}),y.chatResponseReceived4=y.register({fileName:"chatResponseReceived4.mp3"});class D{constructor(_){this.randomOneOf=_}}e.SoundSource=D;class S{static register(_){const g=new D("randomOneOf"in _.sound?_.sound.randomOneOf:[_.sound]),C=new S(g,_.name,_.settingsKey);return S._audioCues.add(C),C}constructor(_,g,C){this.sound=_,this.name=g,this.settingsKey=C}}e.AudioCue=S,S._audioCues=new Set,S.error=S.register({name:(0,k.localize)(0,null),sound:y.error,settingsKey:"audioCues.lineHasError"}),S.warning=S.register({name:(0,k.localize)(1,null),sound:y.warning,settingsKey:"audioCues.lineHasWarning"}),S.foldedArea=S.register({name:(0,k.localize)(2,null),sound:y.foldedArea,settingsKey:"audioCues.lineHasFoldedArea"}),S.break=S.register({name:(0,k.localize)(3,null),sound:y.break,settingsKey:"audioCues.lineHasBreakpoint"}),S.inlineSuggestion=S.register({name:(0,k.localize)(4,null),sound:y.quickFixes,settingsKey:"audioCues.lineHasInlineSuggestion"}),S.terminalQuickFix=S.register({name:(0,k.localize)(5,null),sound:y.quickFixes,settingsKey:"audioCues.terminalQuickFix"}),S.onDebugBreak=S.register({name:(0,k.localize)(6,null),sound:y.break,settingsKey:"audioCues.onDebugBreak"}),S.noInlayHints=S.register({name:(0,k.localize)(7,null),sound:y.error,settingsKey:"audioCues.noInlayHints"}),S.taskCompleted=S.register({name:(0,k.localize)(8,null),sound:y.taskCompleted,settingsKey:"audioCues.taskCompleted"}),S.taskFailed=S.register({name:(0,k.localize)(9,null),sound:y.taskFailed,settingsKey:"audioCues.taskFailed"}),S.terminalCommandFailed=S.register({name:(0,k.localize)(10,null),sound:y.error,settingsKey:"audioCues.terminalCommandFailed"}),S.terminalBell=S.register({name:(0,k.localize)(11,null),sound:y.terminalBell,settingsKey:"audioCues.terminalBell"}),S.notebookCellCompleted=S.register({name:(0,k.localize)(12,null),sound:y.taskCompleted,settingsKey:"audioCues.notebookCellCompleted"}),S.notebookCellFailed=S.register({name:(0,k.localize)(13,null),sound:y.taskFailed,settingsKey:"audioCues.notebookCellFailed"}),S.diffLineInserted=S.register({name:(0,k.localize)(14,null),sound:y.diffLineInserted,settingsKey:"audioCues.diffLineInserted"}),S.diffLineDeleted=S.register({name:(0,k.localize)(15,null),sound:y.diffLineDeleted,settingsKey:"audioCues.diffLineDeleted"}),S.diffLineModified=S.register({name:(0,k.localize)(16,null),sound:y.diffLineModified,settingsKey:"audioCues.diffLineModified"}),S.chatRequestSent=S.register({name:(0,k.localize)(17,null),sound:y.chatRequestSent,settingsKey:"audioCues.chatRequestSent"}),S.chatResponseReceived=S.register({name:(0,k.localize)(18,null),settingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[y.chatResponseReceived1,y.chatResponseReceived2,y.chatResponseReceived3,y.chatResponseReceived4]}}),S.chatResponsePending=S.register({name:(0,k.localize)(19,null),sound:y.chatResponsePending,settingsKey:"audioCues.chatResponsePending"})}),define(ne[96],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IClipboardService=void 0,e.IClipboardService=(0,L.createDecorator)("clipboardService")}),define(ne[27],se([1,0,6,46,2,64,20,8]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CommandsRegistry=e.ICommandService=void 0,e.ICommandService=(0,f.createDecorator)("commandService"),e.CommandsRegistry=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new L.Emitter,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(_,g){if(!_)throw new Error("invalid command");if(typeof _=="string"){if(!g)throw new Error("invalid command");return this.registerCommand({id:_,handler:g})}if(_.description){const t=[];for(const u of _.description.args)t.push(u.constraint);const a=_.handler;_.handler=function(u,...h){return(0,S.validateConstraints)(h,t),a(u,...h)}}const{id:C}=_;let s=this._commands.get(C);s||(s=new D.LinkedList,this._commands.set(C,s));const i=s.unshift(_),n=(0,y.toDisposable)(()=>{i();const t=this._commands.get(C);t?.isEmpty()&&this._commands.delete(C)});return this._onDidRegisterCommand.fire(C),n}registerCommandAlias(_,g){return e.CommandsRegistry.registerCommand(_,(C,...s)=>C.get(e.ICommandService).executeCommand(g,...s))}getCommand(_){const g=this._commands.get(_);if(!(!g||g.isEmpty()))return k.Iterable.first(g)}getCommands(){const _=new Map;for(const g of this._commands.keys()){const C=this.getCommand(g);C&&_.set(g,C)}return _}},e.CommandsRegistry.registerCommand("noop",()=>{})}),define(ne[332],se([1,0,19,9,2,20,22,51,27,18]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCodeLensModel=e.CodeLensModel=void 0;class C{constructor(){this.lenses=[],this._disposables=new y.DisposableStore}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(n,t){this._disposables.add(n);for(const a of n.lenses)this.lenses.push({symbol:a,provider:t})}}e.CodeLensModel=C;function s(i,n,t){return we(this,void 0,void 0,function*(){const a=i.ordered(n),u=new Map,h=new C,r=a.map((c,o)=>we(this,void 0,void 0,function*(){u.set(c,o);try{const d=yield Promise.resolve(c.provideCodeLenses(n,t));d&&h.add(d,c)}catch(d){(0,k.onUnexpectedExternalError)(d)}}));return yield Promise.all(r),h.lenses=h.lenses.sort((c,o)=>c.symbol.range.startLineNumbero.symbol.range.startLineNumber?1:u.get(c.provider)u.get(o.provider)?1:c.symbol.range.startColumno.symbol.range.startColumn?1:0),h})}e.getCodeLensModel=s,_.CommandsRegistry.registerCommand("_executeCodeLensProvider",function(i,...n){let[t,a]=n;(0,D.assertType)(S.URI.isUri(t)),(0,D.assertType)(typeof a=="number"||!a);const{codeLensProvider:u}=i.get(g.ILanguageFeaturesService),h=i.get(f.IModelService).getModel(t);if(!h)throw(0,k.illegalArgument)();const r=[],c=new y.DisposableStore;return s(u,h,L.CancellationToken.None).then(o=>{c.add(o);const d=[];for(const l of o.lenses)a==null||l.symbol.command?r.push(l.symbol):a-- >0&&l.provider.resolveCodeLens&&d.push(Promise.resolve(l.provider.resolveCodeLens(h,l.symbol,L.CancellationToken.None)).then(p=>r.push(p||l.symbol)));return Promise.all(d)}).then(()=>r).finally(()=>{setTimeout(()=>c.dispose(),100)})})}),define(ne[751],se([1,0,14,19,9,2,20,22,5,51,27,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getLinks=e.LinksList=e.Link=void 0;class i{constructor(u,h){this._link=u,this._provider=h}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}resolve(u){return we(this,void 0,void 0,function*(){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,u)).then(h=>(this._link=h||this._link,this._link.url?this.resolve(u):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))})}}e.Link=i;class n{constructor(u){this._disposables=new D.DisposableStore;let h=[];for(const[r,c]of u){const o=r.links.map(d=>new i(d,c));h=n._union(h,o),(0,D.isDisposable)(r)&&this._disposables.add(r)}this.links=h}dispose(){this._disposables.dispose(),this.links.length=0}static _union(u,h){const r=[];let c,o,d,l;for(c=0,d=0,o=u.length,l=h.length;cPromise.resolve(o.provideLinks(u,h)).then(l=>{l&&(r[d]=[l,o])},y.onUnexpectedExternalError));return Promise.all(c).then(()=>{const o=new n((0,L.coalesce)(r));return h.isCancellationRequested?(o.dispose(),new n([])):o})}e.getLinks=t,C.CommandsRegistry.registerCommand("_executeLinkProvider",(a,...u)=>we(void 0,void 0,void 0,function*(){let[h,r]=u;(0,S.assertType)(h instanceof f.URI),typeof r!="number"&&(r=0);const{linkProvider:c}=a.get(s.ILanguageFeaturesService),o=a.get(g.IModelService).getModel(h);if(!o)return[];const d=yield t(c,o,k.CancellationToken.None);if(!d)return[];for(let p=0;p0?m[0]:[]}function u(l,p,m,v,b){return we(this,void 0,void 0,function*(){const w=a(l,p),E=yield Promise.all(w.map(I=>we(this,void 0,void 0,function*(){let M,P=null;try{M=yield I.provideDocumentSemanticTokens(p,I===m?v:null,b)}catch(x){P=x,M=null}return(!M||!s(M)&&!i(M))&&(M=null),new n(I,M,P)})));for(const I of E){if(I.error)throw I.error;if(I.tokens)return I}return E.length>0?E[0]:null})}e.getDocumentSemanticTokens=u;function h(l,p){const m=l.orderedGroups(p);return m.length>0?m[0]:null}class r{constructor(p,m){this.provider=p,this.tokens=m}}function c(l,p){return l.has(p)}e.hasDocumentRangeSemanticTokensProvider=c;function o(l,p){const m=l.orderedGroups(p);return m.length>0?m[0]:[]}function d(l,p,m,v){return we(this,void 0,void 0,function*(){const b=o(l,p),w=yield Promise.all(b.map(E=>we(this,void 0,void 0,function*(){let I;try{I=yield E.provideDocumentRangeSemanticTokens(p,m,v)}catch(M){(0,k.onUnexpectedExternalError)(M),I=null}return(!I||!s(I))&&(I=null),new r(E,I)})));for(const E of w)if(E.tokens)return E;return w.length>0?w[0]:null})}e.getDocumentRangeSemanticTokens=d,S.CommandsRegistry.registerCommand("_provideDocumentSemanticTokensLegend",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m]=p;(0,f.assertType)(m instanceof y.URI);const v=l.get(D.IModelService).getModel(m);if(!v)return;const{documentSemanticTokensProvider:b}=l.get(C.ILanguageFeaturesService),w=h(b,v);return w?w[0].getLegend():l.get(S.ICommandService).executeCommand("_provideDocumentRangeSemanticTokensLegend",m)})),S.CommandsRegistry.registerCommand("_provideDocumentSemanticTokens",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m]=p;(0,f.assertType)(m instanceof y.URI);const v=l.get(D.IModelService).getModel(m);if(!v)return;const{documentSemanticTokensProvider:b}=l.get(C.ILanguageFeaturesService);if(!t(b,v))return l.get(S.ICommandService).executeCommand("_provideDocumentRangeSemanticTokens",m,v.getFullModelRange());const w=yield u(b,v,null,null,L.CancellationToken.None);if(!w)return;const{provider:E,tokens:I}=w;if(!I||!s(I))return;const M=(0,_.encodeSemanticTokensDto)({id:0,type:"full",data:I.data});return I.resultId&&E.releaseDocumentSemanticTokens(I.resultId),M})),S.CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokensLegend",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m,v]=p;(0,f.assertType)(m instanceof y.URI);const b=l.get(D.IModelService).getModel(m);if(!b)return;const{documentRangeSemanticTokensProvider:w}=l.get(C.ILanguageFeaturesService),E=o(w,b);if(E.length===0)return;if(E.length===1)return E[0].getLegend();if(!v||!g.Range.isIRange(v))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),E[0].getLegend();const I=yield d(w,b,g.Range.lift(v),L.CancellationToken.None);if(I)return I.provider.getLegend()})),S.CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokens",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m,v]=p;(0,f.assertType)(m instanceof y.URI),(0,f.assertType)(g.Range.isIRange(v));const b=l.get(D.IModelService).getModel(m);if(!b)return;const{documentRangeSemanticTokensProvider:w}=l.get(C.ILanguageFeaturesService),E=yield d(w,b,g.Range.lift(v),L.CancellationToken.None);if(!(!E||!E.tokens))return(0,_.encodeSemanticTokensDto)({id:0,type:"full",data:E.tokens.data})}))}),define(ne[28],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getLanguageTagSettingPlainKey=e.getConfigurationValue=e.removeFromValueTree=e.addToValueTree=e.toValuesTree=e.IConfigurationService=void 0,e.IConfigurationService=(0,L.createDecorator)("configurationService");function k(g,C){const s=Object.create(null);for(const i in g)y(s,i,g[i],C);return s}e.toValuesTree=k;function y(g,C,s,i){const n=C.split("."),t=n.pop();let a=g;for(let u=0;u"u"?s:t}e.getConfigurationValue=f;function _(g){return g.replace(/[\[\]]/g,"")}e.getLanguageTagSettingPlainKey=_}),define(ne[334],se([1,0,29,154,302,28]),function(Q,e,L,k,y,D){"use strict";var S;Object.defineProperty(e,"__esModule",{value:!0}),e.MonarchTokenizer=void 0;const f=5;class _{static create(r,c){return this._INSTANCE.create(r,c)}constructor(r){this._maxCacheDepth=r,this._entries=Object.create(null)}create(r,c){if(r!==null&&r.depth>=this._maxCacheDepth)return new g(r,c);let o=g.getStackElementId(r);o.length>0&&(o+="|"),o+=c;let d=this._entries[o];return d||(d=new g(r,c),this._entries[o]=d,d)}}_._INSTANCE=new _(f);class g{constructor(r,c){this.parent=r,this.state=c,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(r){let c="";for(;r!==null;)c.length>0&&(c+="|"),c+=r.state,r=r.parent;return c}static _equals(r,c){for(;r!==null&&c!==null;){if(r===c)return!0;if(r.state!==c.state)return!1;r=r.parent,c=c.parent}return r===null&&c===null}equals(r){return g._equals(this,r)}push(r){return _.create(this,r)}pop(){return this.parent}popall(){let r=this;for(;r.parent;)r=r.parent;return r}switchTo(r){return _.create(this.parent,r)}}class C{constructor(r,c){this.languageId=r,this.state=c}equals(r){return this.languageId===r.languageId&&this.state.equals(r.state)}clone(){return this.state.clone()===this.state?this:new C(this.languageId,this.state)}}class s{static create(r,c){return this._INSTANCE.create(r,c)}constructor(r){this._maxCacheDepth=r,this._entries=Object.create(null)}create(r,c){if(c!==null)return new i(r,c);if(r!==null&&r.depth>=this._maxCacheDepth)return new i(r,c);const o=g.getStackElementId(r);let d=this._entries[o];return d||(d=new i(r,null),this._entries[o]=d,d)}}s._INSTANCE=new s(f);class i{constructor(r,c){this.stack=r,this.embeddedLanguageData=c}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:s.create(this.stack,this.embeddedLanguageData)}equals(r){return!(r instanceof i)||!this.stack.equals(r.stack)?!1:this.embeddedLanguageData===null&&r.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||r.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(r.embeddedLanguageData)}}class n{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(r){this._languageId=r}emit(r,c){this._lastTokenType===c&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=c,this._lastTokenLanguage=this._languageId,this._tokens.push(new L.Token(r,c,this._languageId)))}nestedLanguageTokenize(r,c,o,d){const l=o.languageId,p=o.state,m=L.TokenizationRegistry.get(l);if(!m)return this.enterLanguage(l),this.emit(d,""),p;const v=m.tokenize(r,c,p);if(d!==0)for(const b of v.tokens)this._tokens.push(new L.Token(b.offset+d,b.type,b.language));else this._tokens=this._tokens.concat(v.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,v.endState}finalize(r){return new L.TokenizationResult(this._tokens,r)}}class t{constructor(r,c){this._languageService=r,this._theme=c,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(r){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(r)}emit(r,c){const o=this._theme.match(this._currentLanguageId,c)|1024;this._lastTokenMetadata!==o&&(this._lastTokenMetadata=o,this._tokens.push(r),this._tokens.push(o))}static _merge(r,c,o){const d=r!==null?r.length:0,l=c.length,p=o!==null?o.length:0;if(d===0&&l===0&&p===0)return new Uint32Array(0);if(d===0&&l===0)return o;if(l===0&&p===0)return r;const m=new Uint32Array(d+l+p);r!==null&&m.set(r);for(let v=0;v{if(p)return;let v=!1;for(let b=0,w=m.changedLanguages.length;b{m.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))})}dispose(){this._tokenizationRegistryListener.dispose()}getLoadStatus(){const r=[];for(const c in this._embeddedLanguages){const o=L.TokenizationRegistry.get(c);if(o){if(o instanceof S){const d=o.getLoadStatus();d.loaded===!1&&r.push(d.promise)}continue}L.TokenizationRegistry.isResolved(c)||r.push(L.TokenizationRegistry.getOrCreate(c))}return r.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(r).then(c=>{})}}getInitialState(){const r=_.create(null,this._lexer.start);return s.create(r,null)}tokenize(r,c,o){if(r.length>=this._maxTokenizationLineLength)return(0,k.nullTokenize)(this._languageId,o);const d=new n,l=this._tokenize(r,c,o,d);return d.finalize(l)}tokenizeEncoded(r,c,o){if(r.length>=this._maxTokenizationLineLength)return(0,k.nullTokenizeEncoded)(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),o);const d=new t(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),l=this._tokenize(r,c,o,d);return d.finalize(l)}_tokenize(r,c,o,d){return o.embeddedLanguageData?this._nestedTokenize(r,c,o,0,d):this._myTokenize(r,c,o,0,d)}_findLeavingNestedLanguageOffset(r,c){let o=this._lexer.tokenizer[c.stack.state];if(!o&&(o=y.findRules(this._lexer,c.stack.state),!o))throw y.createError(this._lexer,"tokenizer state is not defined: "+c.stack.state);let d=-1,l=!1;for(const p of o){if(!y.isIAction(p.action)||p.action.nextEmbedded!=="@pop")continue;l=!0;let m=p.regex;const v=p.regex.source;if(v.substr(0,4)==="^(?:"&&v.substr(v.length-1,1)===")"){const w=(m.ignoreCase?"i":"")+(m.unicode?"u":"");m=new RegExp(v.substr(4,v.length-5),w)}const b=r.search(m);b===-1||b!==0&&p.matchOnlyAtLineStart||(d===-1||b0&&l.nestedLanguageTokenize(m,!1,o.embeddedLanguageData,d);const v=r.substring(p);return this._myTokenize(v,c,o,d+p,l)}_safeRuleName(r){return r?r.name:"(unknown)"}_myTokenize(r,c,o,d,l){l.enterLanguage(this._languageId);const p=r.length,m=c&&this._lexer.includeLF?r+` -`:r,v=m.length;let b=o.embeddedLanguageData,w=o.stack,E=0,I=null,M=!0;for(;M||E=v)break;M=!1;let K=this._lexer.tokenizer[A];if(!K&&(K=y.findRules(this._lexer,A),!K))throw y.createError(this._lexer,"tokenizer state is not defined: "+A);const G=m.substr(E);for(const Z of K)if((E===0||!Z.matchOnlyAtLineStart)&&(N=G.match(Z.regex),N)){F=N[0],O=Z.action;break}}if(N||(N=[""],F=""),O||(E=this._lexer.maxStack)throw y.createError(this._lexer,"maximum tokenizer stack size reached: ["+w.state+","+w.parent.state+",...]");w=w.push(A)}else if(O.next==="@pop"){if(w.depth<=1)throw y.createError(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(W));w=w.pop()}else if(O.next==="@popall")w=w.popall();else{let K=y.substituteMatches(this._lexer,O.next,F,N,A);if(K[0]==="@"&&(K=K.substr(1)),y.findRules(this._lexer,K))w=w.push(K);else throw y.createError(this._lexer,"trying to set a next state '"+K+"' that is undefined in rule: "+this._safeRuleName(W))}}O.log&&typeof O.log=="string"&&y.log(this._lexer,this._lexer.languageId+": "+y.substituteMatches(this._lexer,O.log,F,N,A))}if(j===null)throw y.createError(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(W));const R=K=>{const G=this._languageService.getLanguageIdByLanguageName(K)||this._languageService.getLanguageIdByMimeType(K)||K,Z=this._getNestedEmbeddedLanguageData(G);if(E0)throw y.createError(this._lexer,"groups cannot be nested: "+this._safeRuleName(W));if(N.length!==j.length+1)throw y.createError(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(W));let K=0;for(let G=1;Gt});class C{static colorizeElement(a,u,h,r){r=r||{};const c=r.theme||"vs",o=r.mimeType||h.getAttribute("lang")||h.getAttribute("data-lang");if(!o)return console.error("Mode not detected"),Promise.resolve();const d=u.getLanguageIdByMimeType(o)||o;a.setTheme(c);const l=h.firstChild?h.firstChild.nodeValue:"";h.className+=" "+c;const p=m=>{var v;const b=(v=g?.createHTML(m))!==null&&v!==void 0?v:m;h.innerHTML=b};return this.colorize(u,l||"",d,r).then(p,m=>console.error(m))}static colorize(a,u,h,r){return we(this,void 0,void 0,function*(){const c=a.languageIdCodec;let o=4;r&&typeof r.tabSize=="number"&&(o=r.tabSize),k.startsWithUTF8BOM(u)&&(u=u.substr(1));const d=k.splitLines(u);if(!a.isRegisteredLanguageId(h))return i(d,o,c);const l=yield y.TokenizationRegistry.getOrCreate(h);return l?s(d,o,l,c):i(d,o,c)})}static colorizeLine(a,u,h,r,c=4){const o=f.ViewLineRenderingData.isBasicASCII(a,u),d=f.ViewLineRenderingData.containsRTL(a,o,h);return(0,S.renderViewLine2)(new S.RenderLineInput(!1,!0,a,!1,o,d,0,r,[],c,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(a,u,h=4){const r=a.getLineContent(u);a.tokenization.forceTokenization(u);const o=a.tokenization.getLineTokens(u).inflate();return this.colorizeLine(r,a.mightContainNonBasicASCII(),a.mightContainRTL(),o,h)}}e.Colorizer=C;function s(t,a,u,h){return new Promise((r,c)=>{const o=()=>{const d=n(t,a,u,h);if(u instanceof _.MonarchTokenizer){const l=u.getLoadStatus();if(l.loaded===!1){l.promise.then(o,c);return}}r(d)};o()})}function i(t,a,u){let h=[];const c=new Uint32Array(2);c[0]=0,c[1]=33587200;for(let o=0,d=t.length;o")}return h.join("")}function n(t,a,u,h){let r=[],c=u.getInitialState();for(let o=0,d=t.length;o"),c=p.endState}return r.join("")}}),define(ne[15],se([1,0,17,11,742,8,723]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.implies=e.IContextKeyService=e.RawContextKey=e.ContextKeyOrExpr=e.ContextKeyAndExpr=e.ContextKeyNotRegexExpr=e.ContextKeyRegexExpr=e.ContextKeySmallerEqualsExpr=e.ContextKeySmallerExpr=e.ContextKeyGreaterEqualsExpr=e.ContextKeyGreaterExpr=e.ContextKeyNotExpr=e.ContextKeyNotEqualsExpr=e.ContextKeyNotInExpr=e.ContextKeyInExpr=e.ContextKeyEqualsExpr=e.ContextKeyDefinedExpr=e.ContextKeyTrueExpr=e.ContextKeyFalseExpr=e.expressionsAreEqualWithConstantSubstitution=e.ContextKeyExpr=e.Parser=void 0;const f=new Map;f.set("false",!1),f.set("true",!0),f.set("isMac",L.isMacintosh),f.set("isLinux",L.isLinux),f.set("isWindows",L.isWindows),f.set("isWeb",L.isWeb),f.set("isMacNative",L.isMacintosh&&!L.isWeb),f.set("isEdge",L.isEdge),f.set("isFirefox",L.isFirefox),f.set("isChrome",L.isChrome),f.set("isSafari",L.isSafari);const _=Object.prototype.hasOwnProperty,g={regexParsingWithErrorRecovery:!0},C=(0,S.localize)(0,null),s=(0,S.localize)(1,null),i=(0,S.localize)(2,null),n=(0,S.localize)(3,null),t=(0,S.localize)(4,null),a=(0,S.localize)(5,null),u=(0,S.localize)(6,null),h=(0,S.localize)(7,null);class r{constructor(H=g){this._config=H,this._scanner=new y.Scanner,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(H){if(H===""){this._parsingErrors.push({message:C,offset:0,lexeme:"",additionalInfo:s});return}this._tokens=this._scanner.reset(H).scan(),this._current=0,this._parsingErrors=[];try{const B=this._expr();if(!this._isAtEnd()){const V=this._peek(),Y=V.type===17?a:void 0;throw this._parsingErrors.push({message:t,offset:V.offset,lexeme:y.Scanner.getLexeme(V),additionalInfo:Y}),r._parseError}return B}catch(B){if(B!==r._parseError)throw B;return}}_expr(){return this._or()}_or(){const H=[this._and()];for(;this._matchOne(16);){const B=this._and();H.push(B)}return H.length===1?H[0]:c.or(...H)}_and(){const H=[this._term()];for(;this._matchOne(15);){const B=this._term();H.push(B)}return H.length===1?H[0]:c.and(...H)}_term(){if(this._matchOne(2)){const H=this._peek();switch(H.type){case 11:return this._advance(),l.INSTANCE;case 12:return this._advance(),p.INSTANCE;case 0:{this._advance();const B=this._expr();return this._consume(1,n),B?.negate()}case 17:return this._advance(),I.create(H.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",H)}}return this._primary()}_primary(){const H=this._peek();switch(H.type){case 11:return this._advance(),c.true();case 12:return this._advance(),c.false();case 0:{this._advance();const B=this._expr();return this._consume(1,n),B}case 17:{const B=H.lexeme;if(this._advance(),this._matchOne(9)){const Y=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),Y.type!==10)throw this._errExpectedButGot("REGEX",Y);const ie=Y.lexeme,ae=ie.lastIndexOf("/"),ce=ae===ie.length-1?void 0:this._removeFlagsGY(ie.substring(ae+1));let de;try{de=new RegExp(ie.substring(1,ae),ce)}catch{throw this._errExpectedButGot("REGEX",Y)}return N.create(B,de)}switch(Y.type){case 10:case 19:{const ie=[Y.lexeme];this._advance();let ae=this._peek(),ce=0;for(let q=0;q=0){const he=ie.slice(ce+1,de),ue=ie[de+1]==="i"?"i":"";try{ae=new RegExp(he,ue)}catch{throw this._errExpectedButGot("REGEX",Y)}}}if(ae===null)throw this._errExpectedButGot("REGEX",Y);return N.create(B,ae)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,i);const Y=this._value();return c.notIn(B,Y)}switch(this._peek().type){case 3:{this._advance();const Y=this._value();if(this._previous().type===18)return c.equals(B,Y);switch(Y){case"true":return c.has(B);case"false":return c.not(B);default:return c.equals(B,Y)}}case 4:{this._advance();const Y=this._value();if(this._previous().type===18)return c.notEquals(B,Y);switch(Y){case"true":return c.not(B);case"false":return c.has(B);default:return c.notEquals(B,Y)}}case 5:return this._advance(),T.create(B,this._value());case 6:return this._advance(),A.create(B,this._value());case 7:return this._advance(),P.create(B,this._value());case 8:return this._advance(),x.create(B,this._value());case 13:return this._advance(),c.in(B,this._value());default:return c.has(B)}}case 20:throw this._parsingErrors.push({message:u,offset:H.offset,lexeme:"",additionalInfo:h}),r._parseError;default:throw this._errExpectedButGot(`true | false | KEY - | KEY '=~' REGEX - | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const H=this._peek();switch(H.type){case 17:case 18:return this._advance(),H.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(H){return H.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(H){return this._check(H)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(H,B){if(this._check(H))return this._advance();throw this._errExpectedButGot(B,this._peek())}_errExpectedButGot(H,B,V){const Y=(0,S.localize)(8,null,H,y.Scanner.getLexeme(B)),ie=B.offset,ae=y.Scanner.getLexeme(B);return this._parsingErrors.push({message:Y,offset:ie,lexeme:ae,additionalInfo:V}),r._parseError}_check(H){return this._peek().type===H}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}}e.Parser=r,r._parseError=new Error;class c{static false(){return l.INSTANCE}static true(){return p.INSTANCE}static has(H){return m.create(H)}static equals(H,B){return v.create(H,B)}static notEquals(H,B){return E.create(H,B)}static regex(H,B){return N.create(H,B)}static in(H,B){return b.create(H,B)}static notIn(H,B){return w.create(H,B)}static not(H){return I.create(H)}static and(...H){return W.create(H,null,!0)}static or(...H){return U.create(H,null,!0)}static deserialize(H){return H==null?void 0:this._parser.parse(H)}}e.ContextKeyExpr=c,c._parser=new r({regexParsingWithErrorRecovery:!1});function o(X,H){const B=X?X.substituteConstants():void 0,V=H?H.substituteConstants():void 0;return!B&&!V?!0:!B||!V?!1:B.equals(V)}e.expressionsAreEqualWithConstantSubstitution=o;function d(X,H){return X.cmp(H)}class l{constructor(){this.type=0}cmp(H){return this.type-H.type}equals(H){return H.type===this.type}substituteConstants(){return this}evaluate(H){return!1}serialize(){return"false"}keys(){return[]}negate(){return p.INSTANCE}}e.ContextKeyFalseExpr=l,l.INSTANCE=new l;class p{constructor(){this.type=1}cmp(H){return this.type-H.type}equals(H){return H.type===this.type}substituteConstants(){return this}evaluate(H){return!0}serialize(){return"true"}keys(){return[]}negate(){return l.INSTANCE}}e.ContextKeyTrueExpr=p,p.INSTANCE=new p;class m{static create(H,B=null){const V=f.get(H);return typeof V=="boolean"?V?p.INSTANCE:l.INSTANCE:new m(H,B)}constructor(H,B){this.key=H,this.negated=B,this.type=2}cmp(H){return H.type!==this.type?this.type-H.type:R(this.key,H.key)}equals(H){return H.type===this.type?this.key===H.key:!1}substituteConstants(){const H=f.get(this.key);return typeof H=="boolean"?H?p.INSTANCE:l.INSTANCE:this}evaluate(H){return!!H.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=I.create(this.key,this)),this.negated}}e.ContextKeyDefinedExpr=m;class v{static create(H,B,V=null){if(typeof B=="boolean")return B?m.create(H,V):I.create(H,V);const Y=f.get(H);return typeof Y=="boolean"?B===(Y?"true":"false")?p.INSTANCE:l.INSTANCE:new v(H,B,V)}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=4}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){const H=f.get(this.key);if(typeof H=="boolean"){const B=H?"true":"false";return this.value===B?p.INSTANCE:l.INSTANCE}return this}evaluate(H){return H.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=E.create(this.key,this.value,this)),this.negated}}e.ContextKeyEqualsExpr=v;class b{static create(H,B){return new b(H,B)}constructor(H,B){this.key=H,this.valueKey=B,this.type=10,this.negated=null}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.valueKey,H.key,H.valueKey)}equals(H){return H.type===this.type?this.key===H.key&&this.valueKey===H.valueKey:!1}substituteConstants(){return this}evaluate(H){const B=H.getValue(this.valueKey),V=H.getValue(this.key);return Array.isArray(B)?B.includes(V):typeof V=="string"&&typeof B=="object"&&B!==null?_.call(B,V):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=w.create(this.key,this.valueKey)),this.negated}}e.ContextKeyInExpr=b;class w{static create(H,B){return new w(H,B)}constructor(H,B){this.key=H,this.valueKey=B,this.type=11,this._negated=b.create(H,B)}cmp(H){return H.type!==this.type?this.type-H.type:this._negated.cmp(H._negated)}equals(H){return H.type===this.type?this._negated.equals(H._negated):!1}substituteConstants(){return this}evaluate(H){return!this._negated.evaluate(H)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}e.ContextKeyNotInExpr=w;class E{static create(H,B,V=null){if(typeof B=="boolean")return B?I.create(H,V):m.create(H,V);const Y=f.get(H);return typeof Y=="boolean"?B===(Y?"true":"false")?l.INSTANCE:p.INSTANCE:new E(H,B,V)}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=5}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){const H=f.get(this.key);if(typeof H=="boolean"){const B=H?"true":"false";return this.value===B?l.INSTANCE:p.INSTANCE}return this}evaluate(H){return H.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=v.create(this.key,this.value,this)),this.negated}}e.ContextKeyNotEqualsExpr=E;class I{static create(H,B=null){const V=f.get(H);return typeof V=="boolean"?V?l.INSTANCE:p.INSTANCE:new I(H,B)}constructor(H,B){this.key=H,this.negated=B,this.type=3}cmp(H){return H.type!==this.type?this.type-H.type:R(this.key,H.key)}equals(H){return H.type===this.type?this.key===H.key:!1}substituteConstants(){const H=f.get(this.key);return typeof H=="boolean"?H?l.INSTANCE:p.INSTANCE:this}evaluate(H){return!H.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=m.create(this.key,this)),this.negated}}e.ContextKeyNotExpr=I;function M(X,H){if(typeof X=="string"){const B=parseFloat(X);isNaN(B)||(X=B)}return typeof X=="string"||typeof X=="number"?H(X):l.INSTANCE}class P{static create(H,B,V=null){return M(B,Y=>new P(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=12}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value=="string"?!1:parseFloat(H.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=A.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterExpr=P;class x{static create(H,B,V=null){return M(B,Y=>new x(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=13}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value=="string"?!1:parseFloat(H.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=T.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterEqualsExpr=x;class T{static create(H,B,V=null){return M(B,Y=>new T(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=14}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value=="string"?!1:parseFloat(H.getValue(this.key))new A(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=15}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value=="string"?!1:parseFloat(H.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=P.create(this.key,this.value,this)),this.negated}}e.ContextKeySmallerEqualsExpr=A;class N{static create(H,B){return new N(H,B)}constructor(H,B){this.key=H,this.regexp=B,this.type=7,this.negated=null}cmp(H){if(H.type!==this.type)return this.type-H.type;if(this.keyH.key)return 1;const B=this.regexp?this.regexp.source:"",V=H.regexp?H.regexp.source:"";return BV?1:0}equals(H){if(H.type===this.type){const B=this.regexp?this.regexp.source:"",V=H.regexp?H.regexp.source:"";return this.key===H.key&&B===V}return!1}substituteConstants(){return this}evaluate(H){const B=H.getValue(this.key);return this.regexp?this.regexp.test(B):!1}serialize(){const H=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${H}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=F.create(this)),this.negated}}e.ContextKeyRegexExpr=N;class F{static create(H){return new F(H)}constructor(H){this._actual=H,this.type=8}cmp(H){return H.type!==this.type?this.type-H.type:this._actual.cmp(H._actual)}equals(H){return H.type===this.type?this._actual.equals(H._actual):!1}substituteConstants(){return this}evaluate(H){return!this._actual.evaluate(H)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}e.ContextKeyNotRegexExpr=F;function O(X){let H=null;for(let B=0,V=X.length;BH.expr.length)return 1;for(let B=0,V=this.expr.length;B1;){const ae=Y[Y.length-1];if(ae.type!==9)break;Y.pop();const ce=Y.pop(),de=Y.length===0,he=U.create(ae.expr.map(ue=>W.create([ue,ce],null,V)),null,de);he&&(Y.push(he),Y.sort(d))}if(Y.length===1)return Y[0];if(V){for(let ae=0;aeH.serialize()).join(" && ")}keys(){const H=[];for(const B of this.expr)H.push(...B.keys());return H}negate(){if(!this.negated){const H=[];for(const B of this.expr)H.push(B.negate());this.negated=U.create(H,this,!0)}return this.negated}}e.ContextKeyAndExpr=W;class U{static create(H,B,V){return U._normalizeArr(H,B,V)}constructor(H,B){this.expr=H,this.negated=B,this.type=9}cmp(H){if(H.type!==this.type)return this.type-H.type;if(this.expr.lengthH.expr.length)return 1;for(let B=0,V=this.expr.length;BH.serialize()).join(" || ")}keys(){const H=[];for(const B of this.expr)H.push(...B.keys());return H}negate(){if(!this.negated){const H=[];for(const B of this.expr)H.push(B.negate());for(;H.length>1;){const B=H.shift(),V=H.shift(),Y=[];for(const ie of J(B))for(const ae of J(V))Y.push(W.create([ie,ae],null,!1));H.unshift(U.create(Y,null,!1))}this.negated=U.create(H,this,!0)}return this.negated}}e.ContextKeyOrExpr=U;class j extends m{static all(){return j._info.values()}constructor(H,B,V){super(H,null),this._defaultValue=B,typeof V=="object"?j._info.push(Object.assign(Object.assign({},V),{key:H})):V!==!0&&j._info.push({key:H,description:V,type:B!=null?typeof B:void 0})}bindTo(H){return H.createKey(this.key,this._defaultValue)}getValue(H){return H.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(H){return v.create(this.key,H)}}e.RawContextKey=j,j._info=[],e.IContextKeyService=(0,D.createDecorator)("contextKeyService");function R(X,H){return XH?1:0}function K(X,H,B,V){return XB?1:HV?1:0}function G(X,H){if(X.type===0||H.type===1)return!0;if(X.type===9)return H.type===9?Z(X.expr,H.expr):!1;if(H.type===9){for(const B of H.expr)if(G(X,B))return!0;return!1}if(X.type===6){if(H.type===6)return Z(H.expr,X.expr);for(const B of X.expr)if(G(B,H))return!0;return!1}return X.equals(H)}e.implies=G;function Z(X,H){let B=0,V=0;for(;B{const n=this.model.read(i),t=n?.state.read(i),a=!!t?.inlineCompletion&&t?.ghostText!==void 0&&!t?.ghostText.isEmpty();this.inlineCompletionVisible.set(a),t?.ghostText&&t?.inlineCompletion&&this.suppressSuggestions.set(t.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register((0,L.autorun)(i=>{const n=this.model.read(i);let t=!1,a=!0;const u=n?.ghostText.read(i);if(n?.selectedSuggestItem&&u&&u.parts.length>0){const{column:h,lines:r}=u.parts[0],c=r[0],o=n.textModel.getLineIndentColumn(u.lineNumber);if(h<=o){let l=(0,k.firstNonWhitespaceIndex)(c);l===-1&&(l=c.length-1),t=l>0;const p=n.textModel.getOptions().tabSize;a=y.CursorColumns.visibleColumnFromColumn(c,l+1,p)we(void 0,void 0,void 0,function*(){const[a,u,h]=t;(0,y.assertType)(D.URI.isUri(a)),(0,y.assertType)(S.Position.isIPosition(u)),(0,y.assertType)(typeof h=="string"||!h);const r=n.get(_.ILanguageFeaturesService),c=yield n.get(g.ITextModelService).createModelReference(a);try{const o=yield i(r.signatureHelpProvider,c.object.textEditorModel,S.Position.lift(u),{triggerKind:f.SignatureHelpTriggerKind.Invoke,isRetrigger:!1,triggerCharacter:h},L.CancellationToken.None);return o?(setTimeout(()=>o.dispose(),0),o.value):void 0}finally{c.dispose()}}))}),define(ne[753],se([1,0,13,9,6,2,121,29,236]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ParameterHintsModel=void 0;var g;(function(i){i.Default={type:0};class n{constructor(u,h){this.request=u,this.previouslyActiveHints=h,this.type=2}}i.Pending=n;class t{constructor(u){this.hints=u,this.type=1}}i.Active=t})(g||(g={}));class C extends D.Disposable{constructor(n,t,a=C.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new y.Emitter),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=g.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new D.MutableDisposable),this.triggerChars=new S.CharacterSet,this.retriggerChars=new S.CharacterSet,this.triggerId=0,this.editor=n,this.providers=t,this.throttledDelayer=new L.Delayer(a),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(u=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(u=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(u=>this.onCursorChange(u))),this._register(this.editor.onDidChangeModelContent(u=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(u=>this.onDidType(u))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(n){this._state.type===2&&this._state.request.cancel(),this._state=n}cancel(n=!1){this.state=g.Default,this.throttledDelayer.cancel(),n||this._onChangedHints.fire(void 0)}trigger(n,t){const a=this.editor.getModel();if(!a||!this.providers.has(a))return;const u=++this.triggerId;this._pendingTriggers.push(n),this.throttledDelayer.trigger(()=>this.doTrigger(u),t).catch(k.onUnexpectedError)}next(){if(this.state.type!==1)return;const n=this.state.hints.signatures.length,t=this.state.hints.activeSignature,a=t%n===n-1,u=this.editor.getOption(84).cycle;if((n<2||a)&&!u){this.cancel();return}this.updateActiveSignature(a&&u?0:t+1)}previous(){if(this.state.type!==1)return;const n=this.state.hints.signatures.length,t=this.state.hints.activeSignature,a=t===0,u=this.editor.getOption(84).cycle;if((n<2||a)&&!u){this.cancel();return}this.updateActiveSignature(a&&u?n-1:t-1)}updateActiveSignature(n){this.state.type===1&&(this.state=new g.Active(Object.assign(Object.assign({},this.state.hints),{activeSignature:n})),this._onChangedHints.fire(this.state.hints))}doTrigger(n){return we(this,void 0,void 0,function*(){const t=this.state.type===1||this.state.type===2,a=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const u=this._pendingTriggers.reduce(s);this._pendingTriggers=[];const h={triggerKind:u.triggerKind,triggerCharacter:u.triggerCharacter,isRetrigger:t,activeSignatureHelp:a};if(!this.editor.hasModel())return!1;const r=this.editor.getModel(),c=this.editor.getPosition();this.state=new g.Pending((0,L.createCancelablePromise)(o=>(0,_.provideSignatureHelp)(this.providers,r,c,h,o)),a);try{const o=yield this.state.request;return n!==this.triggerId?(o?.dispose(),!1):!o||!o.value.signatures||o.value.signatures.length===0?(o?.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new g.Active(o.value),this._lastSignatureHelpResult.value=o,this._onChangedHints.fire(this.state.hints),!0)}catch(o){return n===this.triggerId&&(this.state=g.Default),(0,k.onUnexpectedError)(o),!1}})}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const n=this.editor.getModel();if(n)for(const t of this.providers.ordered(n)){for(const a of t.signatureHelpTriggerCharacters||[])if(a.length){const u=a.charCodeAt(0);this.triggerChars.add(u),this.retriggerChars.add(u)}for(const a of t.signatureHelpRetriggerCharacters||[])a.length&&this.retriggerChars.add(a.charCodeAt(0))}}onDidType(n){if(!this.triggerOnType)return;const t=n.length-1,a=n.charCodeAt(t);(this.triggerChars.has(a)||this.isTriggered&&this.retriggerChars.has(a))&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.TriggerCharacter,triggerCharacter:n.charAt(t)})}onCursorChange(n){n.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(84).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}e.ParameterHintsModel=C,C.DEFAULT_DELAY=120;function s(i,n){switch(n.triggerKind){case f.SignatureHelpTriggerKind.Invoke:return n;case f.SignatureHelpTriggerKind.ContentChange:return i;case f.SignatureHelpTriggerKind.TriggerCharacter:default:return n}}}),define(ne[754],se([1,0,15]),function(Q,e,L){"use strict";var k;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestAlternatives=void 0;let y=k=class{constructor(S,f){this._editor=S,this._index=0,this._ckOtherSuggestions=k.OtherSuggestions.bindTo(f)}dispose(){this.reset()}reset(){var S;this._ckOtherSuggestions.reset(),(S=this._listener)===null||S===void 0||S.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:S,index:f},_){if(S.items.length===0){this.reset();return}if(k._moveIndex(!0,S,f)===f){this.reset();return}this._acceptNext=_,this._model=S,this._index=f,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(S,f,_){let g=_;for(let C=f.items.length;C>0&&(g=(g+f.items.length+(S?1:-1))%f.items.length,!(g===_||!f.items[g].completion.additionalTextEdits));C--);return g}next(){this._move(!0)}prev(){this._move(!1)}_move(S){if(this._model)try{this._ignore=!0,this._index=k._moveIndex(S,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};e.SuggestAlternatives=y,y.OtherSuggestions=new L.RawContextKey("hasOtherSuggestions",!1),e.SuggestAlternatives=y=k=ke([fe(1,L.IContextKeyService)],y)}),define(ne[755],se([1,0,15]),function(Q,e,L){"use strict";var k;Object.defineProperty(e,"__esModule",{value:!0}),e.WordContextKey=void 0;let y=k=class{constructor(S,f){this._editor=S,this._enabled=!1,this._ckAtEnd=k.AtEnd.bindTo(f),this._configListener=this._editor.onDidChangeConfiguration(_=>_.hasChanged(121)&&this._update()),this._update()}dispose(){var S;this._configListener.dispose(),(S=this._selectionListener)===null||S===void 0||S.dispose(),this._ckAtEnd.reset()}_update(){const S=this._editor.getOption(121)==="on";if(this._enabled!==S)if(this._enabled=S,this._enabled){const f=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const _=this._editor.getModel(),g=this._editor.getSelection(),C=_.getWordAtPosition(g.getStartPosition());if(!C){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(C.endColumn===g.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(f),f()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};e.WordContextKey=y,y.AtEnd=new L.RawContextKey("atEndOfWord",!1),e.WordContextKey=y=k=ke([fe(1,L.IContextKeyService)],y)}),define(ne[84],se([1,0,15,8]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=e.IAccessibilityService=void 0,e.IAccessibilityService=(0,k.createDecorator)("accessibilityService"),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=new L.RawContextKey("accessibilityModeEnabled",!1)}),define(ne[756],se([1,0,52,14,6,2,47,17,200,324,476,201,36,145,231,84]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ComputedEditorOptions=e.EditorConfiguration=void 0;let u=class extends D.Disposable{constructor(m,v,b,w){super(),this._accessibilityService=w,this._onDidChange=this._register(new y.Emitter),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new y.Emitter),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new i.ComputeOptionsMemory,this.isSimpleWidget=m,this._containerObserver=this._register(new _.ElementSizeObserver(b,v.dimension)),this._rawOptions=l(v),this._validatedOptions=d.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(12)&&this._containerObserver.startObserving(),this._register(n.EditorZoom.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(s.TabFocus.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(g.FontMeasurements.onDidChange(()=>this._recomputeOptions())),this._register(L.PixelRatio.onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const m=this._computeOptions(),v=d.checkEquals(this.options,m);v!==null&&(this.options=m,this._onDidChangeFast.fire(v),this._onDidChange.fire(v))}_computeOptions(){const m=this._readEnvConfiguration(),v=t.BareFontInfo.createFromValidatedSettings(this._validatedOptions,m.pixelRatio,this.isSimpleWidget),b=this._readFontInfo(v),w={memory:this._computeOptionsMemory,outerWidth:m.outerWidth,outerHeight:m.outerHeight-this._reservedHeight,fontInfo:b,extraEditorClassName:m.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:m.emptySelectionClipboard,pixelRatio:m.pixelRatio,tabFocusMode:s.TabFocus.getTabFocusMode("editorFocus"),accessibilitySupport:m.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return d.computeOptions(this._validatedOptions,w)}_readEnvConfiguration(){return{extraEditorClassName:r(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:L.isWebKit||L.isFirefox,pixelRatio:L.PixelRatio.value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(m){return g.FontMeasurements.readFontInfo(m)}getRawOptions(){return this._rawOptions}updateOptions(m){const v=l(m);d.applyUpdate(this._rawOptions,v)&&(this._validatedOptions=d.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(m){this._containerObserver.observe(m)}setIsDominatedByLongLines(m){this._isDominatedByLongLines!==m&&(this._isDominatedByLongLines=m,this._recomputeOptions())}setModelLineCount(m){const v=h(m);this._lineNumbersDigitCount!==v&&(this._lineNumbersDigitCount=v,this._recomputeOptions())}setViewLineCount(m){this._viewLineCount!==m&&(this._viewLineCount=m,this._recomputeOptions())}setReservedHeight(m){this._reservedHeight!==m&&(this._reservedHeight=m,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(m){this._glyphMarginDecorationLaneCount!==m&&(this._glyphMarginDecorationLaneCount=m,this._recomputeOptions())}};e.EditorConfiguration=u,e.EditorConfiguration=u=ke([fe(3,a.IAccessibilityService)],u);function h(p){let m=0;for(;p;)p=Math.floor(p/10),m++;return m||1}function r(){let p="";return!L.isSafari&&!L.isWebkitWebView&&(p+="no-user-select "),L.isSafari&&(p+="no-minimap-shadow ",p+="enable-user-select "),f.isMacintosh&&(p+="mac "),p}class c{constructor(){this._values=[]}_read(m){return this._values[m]}get(m){return this._values[m]}_write(m,v){this._values[m]=v}}class o{constructor(){this._values=[]}_read(m){if(m>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[m]}get(m){return this._read(m)}_write(m,v){this._values[m]=v}}e.ComputedEditorOptions=o;class d{static validateOptions(m){const v=new c;for(const b of i.editorOptionsRegistry){const w=b.name==="_never_"?void 0:m[b.name];v._write(b.id,b.validate(w))}return v}static computeOptions(m,v){const b=new o;for(const w of i.editorOptionsRegistry)b._write(w.id,w.compute(v,b,m._read(w.id)));return b}static _deepEquals(m,v){if(typeof m!="object"||typeof v!="object"||!m||!v)return m===v;if(Array.isArray(m)||Array.isArray(v))return Array.isArray(m)&&Array.isArray(v)?k.equals(m,v):!1;if(Object.keys(m).length!==Object.keys(v).length)return!1;for(const b in m)if(!d._deepEquals(m[b],v[b]))return!1;return!0}static checkEquals(m,v){const b=[];let w=!1;for(const E of i.editorOptionsRegistry){const I=!d._deepEquals(m._read(E.id),v._read(E.id));b[E.id]=I,I&&(w=!0)}return w?new i.ConfigurationChangedEvent(b):null}static applyUpdate(m,v){let b=!1;for(const w of i.editorOptionsRegistry)if(v.hasOwnProperty(w.name)){const E=w.applyUpdate(m[w.name],v[w.name]);m[w.name]=E.newValue,b=b||E.didChange}return b}}function l(p){const m=S.deepClone(p);return(0,C.migrateOptions)(m),m}}),define(ne[237],se([1,0,85,6,2,47,5,116,33,84]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffNavigator=void 0;const C={followsCaret:!0,ignoreCharChanges:!0,alwaysRevealFirst:!0,findResultLoop:!0};let s=class extends y.Disposable{constructor(n,t={},a,u,h){super(),this._audioCueService=a,this._codeEditorService=u,this._accessibilityService=h,this._onDidUpdate=this._register(new k.Emitter),this._editor=n,this._options=D.mixin(t,C,!1),this.disposed=!1,this.nextIdx=-1,this.ranges=[],this.ignoreSelectionChange=!1,this.revealFirst=!!this._options.alwaysRevealFirst,this._register(this._editor.onDidUpdateDiff(()=>this._onDiffUpdated())),this._options.followsCaret&&this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition(r=>{this.ignoreSelectionChange||(this._updateAccessibilityState(r.position.lineNumber),this.nextIdx=-1)})),this._init()}_init(){this._editor.getLineChanges()}_onDiffUpdated(){this._init(),this._compute(this._editor.getLineChanges()),this.revealFirst&&this._editor.getLineChanges()!==null&&(this.revealFirst=!1,this.nextIdx=-1,this.next(1))}_compute(n){this.ranges=[],n&&n.forEach(t=>{!this._options.ignoreCharChanges&&t.charChanges?t.charChanges.forEach(a=>{this.ranges.push({rhs:!0,range:new S.Range(a.modifiedStartLineNumber,a.modifiedStartColumn,a.modifiedEndLineNumber,a.modifiedEndColumn)})}):t.modifiedEndLineNumber===0?this.ranges.push({rhs:!0,range:new S.Range(t.modifiedStartLineNumber,1,t.modifiedStartLineNumber+1,1)}):this.ranges.push({rhs:!0,range:new S.Range(t.modifiedStartLineNumber,1,t.modifiedEndLineNumber+1,1)})}),this.ranges.sort((t,a)=>S.Range.compareRangesUsingStarts(t.range,a.range)),this._onDidUpdate.fire(this)}_initIdx(n){let t=!1;const a=this._editor.getPosition();if(!a){this.nextIdx=0;return}for(let u=0,h=this.ranges.length;u=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));const a=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{const u=a.range.getStartPosition();this._editor.setPosition(u),this._editor.revealRangeInCenter(a.range,t),this._updateAccessibilityState(u.lineNumber,!0)}finally{this.ignoreSelectionChange=!1}}_updateAccessibilityState(n,t){var a;const u=(a=this._editor.getModel())===null||a===void 0?void 0:a.modified;if(!u)return;const h=u.getLineDecorations(n).find(c=>c.options.className==="line-insert");if(h)this._audioCueService.playAudioCue(f.AudioCue.diffLineModified,{allowManyInParallel:!0});else if(t)this._audioCueService.playAudioCue(f.AudioCue.diffLineDeleted,{allowManyInParallel:!0});else return;const r=this._codeEditorService.getActiveCodeEditor();t&&r&&h&&this._accessibilityService.isScreenReaderOptimized()&&(r.setSelection({startLineNumber:n,startColumn:0,endLineNumber:n,endColumn:Number.MAX_VALUE}),r.writeScreenReaderContent("diff-navigation"))}canNavigate(){return this.ranges&&this.ranges.length>0}next(n=0){this.canNavigateNext()&&this._move(!0,n)}previous(n=0){this.canNavigatePrevious()&&this._move(!1,n)}canNavigateNext(){return this.canNavigateLoop()||this.nextIdx"u"&&this._parent?this._parent.getValue(E):I}}e.Context=n;class t extends n{constructor(){super(-1,null)}setValue(E,I){return!1}removeValue(E){return!1}getValue(E){}}t.INSTANCE=new t;class a extends n{constructor(E,I,M){super(E,null),this._configurationService=I,this._values=S.TernarySearchTree.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(P=>{if(P.source===7){const x=Array.from(this._values,([T])=>T);this._values.clear(),M.fire(new r(x))}else{const x=[];for(const T of P.affectedKeys){const A=`config.${T}`,N=this._values.findSuperstr(A);N!==void 0&&(x.push(...k.Iterable.map(N,([F])=>F)),this._values.deleteSuperstr(A)),this._values.has(A)&&(x.push(A),this._values.delete(A))}M.fire(new r(x))}})}dispose(){this._listener.dispose()}getValue(E){if(E.indexOf(a._keyPrefix)!==0)return super.getValue(E);if(this._values.has(E))return this._values.get(E);const I=E.substr(a._keyPrefix.length),M=this._configurationService.getValue(I);let P;switch(typeof M){case"number":case"boolean":case"string":P=M;break;default:Array.isArray(M)?P=JSON.stringify(M):P=M}return this._values.set(E,P),P}setValue(E,I){return super.setValue(E,I)}removeValue(E){return super.removeValue(E)}}a._keyPrefix="config.";class u{constructor(E,I,M){this._service=E,this._key=I,this._defaultValue=M,this.reset()}set(E){this._service.setContext(this._key,E)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class h{constructor(E){this.key=E}affectsSome(E){return E.has(this.key)}allKeysContainedIn(E){return this.affectsSome(E)}}class r{constructor(E){this.keys=E}affectsSome(E){for(const I of this.keys)if(E.has(I))return!0;return!1}allKeysContainedIn(E){return this.keys.every(I=>E.has(I))}}class c{constructor(E){this.events=E}affectsSome(E){for(const I of this.events)if(I.affectsSome(E))return!0;return!1}allKeysContainedIn(E){return this.events.every(I=>I.allKeysContainedIn(E))}}function o(w,E){return w.allKeysContainedIn(new Set(Object.keys(E)))}class d{constructor(E){this._onDidChangeContext=new L.PauseableEmitter({merge:I=>new c(I)}),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=E}createKey(E,I){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new u(this,E,I)}bufferChangeEvents(E){this._onDidChangeContext.pause();try{E()}finally{this._onDidChangeContext.resume()}}createScoped(E){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new p(this,E)}contextMatchesRules(E){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const I=this.getContextValuesContainer(this._myContextId);return E?E.evaluate(I):!0}getContextKeyValue(E){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(E)}setContext(E,I){if(this._isDisposed)return;const M=this.getContextValuesContainer(this._myContextId);M&&M.setValue(E,I)&&this._onDidChangeContext.fire(new h(E))}removeContext(E){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(E)&&this._onDidChangeContext.fire(new h(E))}getContext(E){return this._isDisposed?t.INSTANCE:this.getContextValuesContainer(m(E))}}e.AbstractContextKeyService=d;let l=class extends d{constructor(E){super(0),this._contexts=new Map,this._toDispose=new y.DisposableStore,this._lastContextId=0;const I=new a(this._myContextId,E,this._onDidChangeContext);this._contexts.set(this._myContextId,I),this._toDispose.add(I)}dispose(){this._onDidChangeContext.dispose(),this._isDisposed=!0,this._toDispose.dispose()}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._contexts.get(E)||t.INSTANCE}createChildContext(E=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const I=++this._lastContextId;return this._contexts.set(I,new n(I,this.getContextValuesContainer(E))),I}disposeContext(E){this._isDisposed||this._contexts.delete(E)}};e.ContextKeyService=l,e.ContextKeyService=l=ke([fe(0,C.IConfigurationService)],l);class p extends d{constructor(E,I){if(super(E.createChildContext()),this._parentChangeListener=new y.MutableDisposable,this._parent=E,this._updateParentChangeListener(),this._domNode=I,this._domNode.hasAttribute(i)){let M="";this._domNode.classList&&(M=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${M?": "+M:""}`)}this._domNode.setAttribute(i,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(E=>{const M=this._parent.getContextValuesContainer(this._myContextId).value;o(E,M)||this._onDidChangeContext.fire(E)})}dispose(){this._isDisposed||(this._onDidChangeContext.dispose(),this._parent.disposeContext(this._myContextId),this._parentChangeListener.dispose(),this._domNode.removeAttribute(i),this._isDisposed=!0)}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._parent.getContextValuesContainer(E)}createChildContext(E=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(E)}disposeContext(E){this._isDisposed||this._parent.disposeContext(E)}}function m(w){for(;w;){if(w.hasAttribute(i)){const E=w.getAttribute(i);return E?parseInt(E,10):NaN}w=w.parentElement}return 0}function v(w,E,I){w.get(s.IContextKeyService).createKey(String(E),b(I))}e.setContext=v;function b(w){return(0,D.cloneAndChange)(w,E=>{if(typeof E=="object"&&E.$mid===1)return f.URI.revive(E).toString();if(E instanceof f.URI)return E.toString()})}g.CommandsRegistry.registerCommand("_setContext",v),g.CommandsRegistry.registerCommand({id:"getContextKeyInfo",handler(){return[...s.RawContextKey.all()].sort((w,E)=>w.key.localeCompare(E.key))},description:{description:(0,_.localize)(0,null),args:[]}}),g.CommandsRegistry.registerCommand("_generateContextKeyInfo",function(){const w=[],E=new Set;for(const I of s.RawContextKey.all())E.has(I.key)||(E.add(I.key),w.push(I));w.sort((I,M)=>I.key.localeCompare(M.key)),console.log(JSON.stringify(w,void 0,2))})}),define(ne[238],se([1,0,17,724,15]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InputFocusedContext=e.InputFocusedContextKey=e.ProductQualityContext=e.IsDevelopmentContext=e.IsMobileContext=e.IsIOSContext=e.IsMacNativeContext=e.IsWebContext=e.IsWindowsContext=e.IsLinuxContext=e.IsMacContext=void 0,e.IsMacContext=new y.RawContextKey("isMac",L.isMacintosh,(0,k.localize)(0,null)),e.IsLinuxContext=new y.RawContextKey("isLinux",L.isLinux,(0,k.localize)(1,null)),e.IsWindowsContext=new y.RawContextKey("isWindows",L.isWindows,(0,k.localize)(2,null)),e.IsWebContext=new y.RawContextKey("isWeb",L.isWeb,(0,k.localize)(3,null)),e.IsMacNativeContext=new y.RawContextKey("isMacNative",L.isMacintosh&&!L.isWeb,(0,k.localize)(4,null)),e.IsIOSContext=new y.RawContextKey("isIOS",L.isIOS,(0,k.localize)(5,null)),e.IsMobileContext=new y.RawContextKey("isMobile",L.isMobile,(0,k.localize)(6,null)),e.IsDevelopmentContext=new y.RawContextKey("isDevelopment",!1,!0),e.ProductQualityContext=new y.RawContextKey("productQualityType","",(0,k.localize)(7,null)),e.InputFocusedContextKey="inputFocus",e.InputFocusedContext=new y.RawContextKey(e.InputFocusedContextKey,!1,(0,k.localize)(8,null))}),define(ne[57],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IContextMenuService=e.IContextViewService=void 0,e.IContextViewService=(0,L.createDecorator)("contextViewService"),e.IContextMenuService=(0,L.createDecorator)("contextMenuService")}),define(ne[156],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IDialogService=void 0,e.IDialogService=(0,L.createDecorator)("dialogService")}),define(ne[239],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEnvironmentService=void 0,e.IEnvironmentService=(0,L.createDecorator)("environmentService")}),define(ne[157],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ServiceCollection=void 0;class L{constructor(...y){this._entries=new Map;for(const[D,S]of y)this.set(D,S)}set(y,D){const S=this._entries.get(y);return this._entries.set(y,D),S}get(y){return this._entries.get(y)}}e.ServiceCollection=L}),define(ne[758],se([1,0,13,9,2,232,746,8,157,64]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Trace=e.InstantiationService=void 0;const C=!1;class s extends Error{constructor(a){var u;super("cyclic dependency between services"),this.message=(u=a.findCycleSlow())!==null&&u!==void 0?u:`UNABLE to detect cycle, dumping graph: -${a.toString()}`}}class i{constructor(a=new _.ServiceCollection,u=!1,h,r=C){var c;this._services=a,this._strict=u,this._parent=h,this._enableTracing=r,this._activeInstantiations=new Set,this._services.set(f.IInstantiationService,this),this._globalGraph=r?(c=h?._globalGraph)!==null&&c!==void 0?c:new S.Graph(o=>o):void 0}createChild(a){return new i(a,this._strict,this,this._enableTracing)}invokeFunction(a,...u){const h=n.traceInvocation(this._enableTracing,a);let r=!1;try{return a({get:o=>{if(r)throw(0,k.illegalState)("service accessor is only valid during the invocation of its target method");const d=this._getOrCreateServiceInstance(o,h);if(!d)throw new Error(`[invokeFunction] unknown service '${o}'`);return d}},...u)}finally{r=!0,h.stop()}}createInstance(a,...u){let h,r;return a instanceof D.SyncDescriptor?(h=n.traceCreation(this._enableTracing,a.ctor),r=this._createInstance(a.ctor,a.staticArguments.concat(u),h)):(h=n.traceCreation(this._enableTracing,a),r=this._createInstance(a,u,h)),h.stop(),r}_createInstance(a,u=[],h){const r=f._util.getServiceDependencies(a).sort((d,l)=>d.index-l.index),c=[];for(const d of r){const l=this._getOrCreateServiceInstance(d.id,h);l||this._throwIfStrict(`[createInstance] ${a.name} depends on UNKNOWN service ${d.id}.`,!1),c.push(l)}const o=r.length>0?r[0].index:u.length;if(u.length!==o){console.trace(`[createInstance] First service dependency of ${a.name} at position ${o+1} conflicts with ${u.length} static arguments`);const d=o-u.length;d>0?u=u.concat(new Array(d)):u=u.slice(0,o)}return Reflect.construct(a,u.concat(c))}_setServiceInstance(a,u){if(this._services.get(a)instanceof D.SyncDescriptor)this._services.set(a,u);else if(this._parent)this._parent._setServiceInstance(a,u);else throw new Error("illegalState - setting UNKNOWN service instance")}_getServiceInstanceOrDescriptor(a){const u=this._services.get(a);return!u&&this._parent?this._parent._getServiceInstanceOrDescriptor(a):u}_getOrCreateServiceInstance(a,u){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(a));const h=this._getServiceInstanceOrDescriptor(a);return h instanceof D.SyncDescriptor?this._safeCreateAndCacheServiceInstance(a,h,u.branch(a,!0)):(u.branch(a,!1),h)}_safeCreateAndCacheServiceInstance(a,u,h){if(this._activeInstantiations.has(a))throw new Error(`illegal state - RECURSIVELY instantiating service '${a}'`);this._activeInstantiations.add(a);try{return this._createAndCacheServiceInstance(a,u,h)}finally{this._activeInstantiations.delete(a)}}_createAndCacheServiceInstance(a,u,h){var r;const c=new S.Graph(l=>l.id.toString());let o=0;const d=[{id:a,desc:u,_trace:h}];for(;d.length;){const l=d.pop();if(c.lookupOrInsertNode(l),o++>1e3)throw new s(c);for(const p of f._util.getServiceDependencies(l.desc.ctor)){const m=this._getServiceInstanceOrDescriptor(p.id);if(m||this._throwIfStrict(`[createInstance] ${a} depends on ${p.id} which is NOT registered.`,!0),(r=this._globalGraph)===null||r===void 0||r.insertEdge(String(l.id),String(p.id)),m instanceof D.SyncDescriptor){const v={id:p.id,desc:m,_trace:l._trace.branch(p.id,!0)};c.insertEdge(l,v),d.push(v)}}}for(;;){const l=c.roots();if(l.length===0){if(!c.isEmpty())throw new s(c);break}for(const{data:p}of l){if(this._getServiceInstanceOrDescriptor(p.id)instanceof D.SyncDescriptor){const v=this._createServiceInstanceWithOwner(p.id,p.desc.ctor,p.desc.staticArguments,p.desc.supportsDelayedInstantiation,p._trace);this._setServiceInstance(p.id,v)}c.removeNode(p)}}return this._getServiceInstanceOrDescriptor(a)}_createServiceInstanceWithOwner(a,u,h=[],r,c){if(this._services.get(a)instanceof D.SyncDescriptor)return this._createServiceInstance(a,u,h,r,c);if(this._parent)return this._parent._createServiceInstanceWithOwner(a,u,h,r,c);throw new Error(`illegalState - creating UNKNOWN service instance ${u.name}`)}_createServiceInstance(a,u,h=[],r,c){if(r){const o=new i(void 0,this._strict,this,this._enableTracing);o._globalGraphImplicitDependency=String(a);const d=new Map,l=new L.IdleValue(()=>{const p=o._createInstance(u,h,c);for(const[m,v]of d){const b=p[m];if(typeof b=="function")for(const w of v)b.apply(p,w)}return d.clear(),p});return new Proxy(Object.create(null),{get(p,m){if(!l.isInitialized&&typeof m=="string"&&(m.startsWith("onDid")||m.startsWith("onWill"))){let w=d.get(m);return w||(w=new g.LinkedList,d.set(m,w)),(I,M,P)=>{const x=w.push([I,M,P]);return(0,y.toDisposable)(x)}}if(m in p)return p[m];const v=l.value;let b=v[m];return typeof b!="function"||(b=b.bind(v),p[m]=b),b},set(p,m,v){return l.value[m]=v,!0},getPrototypeOf(p){return u.prototype}})}else return this._createInstance(u,h,c)}_throwIfStrict(a,u){if(u&&console.warn(a),this._strict)throw new Error(a)}}e.InstantiationService=i;class n{static traceInvocation(a,u){return a?new n(2,u.name||new Error().stack.split(` -`).slice(3,4).join(` -`)):n._None}static traceCreation(a,u){return a?new n(1,u.name):n._None}constructor(a,u){this.type=a,this.name=u,this._start=Date.now(),this._dep=[]}branch(a,u){const h=new n(3,a.toString());return this._dep.push([a,u,h]),h}stop(){const a=Date.now()-this._start;n._totals+=a;let u=!1;function h(c,o){const d=[],l=new Array(c+1).join(" ");for(const[p,m,v]of o._dep)if(m&&v){u=!0,d.push(`${l}CREATES -> ${p}`);const b=h(c+1,v);b&&d.push(b)}else d.push(`${l}uses -> ${p}`);return d.join(` -`)}const r=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${h(1,this)}`,`DONE, took ${a.toFixed(2)}ms (grand total ${n._totals.toFixed(2)}ms)`];(a>2||u)&&n.all.add(r.join(` -`))}}e.Trace=n,n.all=new Set,n._None=new class extends n{constructor(){super(0,null)}stop(){}branch(){return this}},n._totals=0}),define(ne[759],se([1,0,9,216,119]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BaseResolvedKeybinding=void 0;class D extends y.ResolvedKeybinding{constructor(f,_){if(super(),_.length===0)throw(0,L.illegalArgument)("chords");this._os=f,this._chords=_}getLabel(){return k.UILabelProvider.toLabel(this._os,this._chords,f=>this._getLabel(f))}getAriaLabel(){return k.AriaLabelProvider.toLabel(this._os,this._chords,f=>this._getAriaLabel(f))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:k.ElectronAcceleratorLabelProvider.toLabel(this._os,this._chords,f=>this._getElectronAccelerator(f))}getUserSettingsLabel(){return k.UserSettingsLabelProvider.toLabel(this._os,this._chords,f=>this._getUserSettingsLabel(f))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(f=>this._getChord(f))}_getChord(f){return new y.ResolvedChord(f.ctrlKey,f.shiftKey,f.altKey,f.metaKey,this._getLabel(f),this._getAriaLabel(f))}getDispatchChords(){return this._chords.map(f=>this._getChordDispatch(f))}getSingleModifierDispatchChords(){return this._chords.map(f=>this._getSingleModifierChordDispatch(f))}}e.BaseResolvedKeybinding=D}),define(ne[34],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IKeybindingService=void 0,e.IKeybindingService=(0,L.createDecorator)("keybindingService")}),define(ne[335],se([1,0,7,313,39,6,2,132,15,57,8,34,441]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.PostEditWidgetManager=void 0;let n=i=class extends S.Disposable{constructor(u,h,r,c,o,d,l,p,m,v){super(),this.typeId=u,this.editor=h,this.showCommand=c,this.range=o,this.edits=d,this.onSelectNewEdit=l,this._contextMenuService=p,this._keybindingService=v,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=r.bindTo(m),this.visibleContext.set(!0),this._register((0,S.toDisposable)(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register((0,S.toDisposable)(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(b=>{o.containsPosition(b.position)||this.dispose()})),this._register(D.Event.runAndSubscribe(v.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var u;const h=(u=this._keybindingService.lookupKeybinding(this.showCommand.id))===null||u===void 0?void 0:u.getLabel();this.button.element.title=this.showCommand.label+(h?` (${h})`:"")}create(){this.domNode=L.$(".post-edit-widget"),this.button=this._register(new k.Button(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,()=>this.showSelector()))}getId(){return i.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const u=L.getDomNodePagePosition(this.button.element);return{x:u.left+u.width,y:u.top+u.height}},getActions:()=>this.edits.allEdits.map((u,h)=>(0,y.toAction)({id:"",label:u.label,checked:h===this.edits.activeEditIndex,run:()=>{if(h!==this.edits.activeEditIndex)return this.onSelectNewEdit(h)}}))})}};n.baseId="editor.widget.postEditWidget",n=i=ke([fe(7,g.IContextMenuService),fe(8,_.IContextKeyService),fe(9,s.IKeybindingService)],n);let t=class extends S.Disposable{constructor(u,h,r,c,o,d){super(),this._id=u,this._editor=h,this._visibleContext=r,this._showCommand=c,this._instantiationService=o,this._bulkEditService=d,this._currentWidget=this._register(new S.MutableDisposable),this._register(D.Event.any(h.onDidChangeModel,h.onDidChangeModelContent)(()=>this.clear()))}applyEditAndShowIfNeeded(u,h,r,c){var o,d;return we(this,void 0,void 0,function*(){const l=this._editor.getModel();if(!l||!u.length)return;const p=h.allEdits[h.activeEditIndex];if(!p)return;let m=[];(typeof p.insertText=="string"?p.insertText==="":p.insertText.snippet==="")?m=[]:m=u.map(P=>new f.ResourceTextEdit(l.uri,typeof p.insertText=="string"?{range:P,text:p.insertText,insertAsSnippet:!1}:{range:P,text:p.insertText.snippet,insertAsSnippet:!0}));const b={edits:[...m,...(d=(o=p.additionalEdit)===null||o===void 0?void 0:o.edits)!==null&&d!==void 0?d:[]]},w=u[0],E=l.deltaDecorations([],[{range:w,options:{description:"paste-line-suffix",stickiness:0}}]);let I,M;try{I=yield this._bulkEditService.apply(b,{editor:this._editor,token:c}),M=l.getDecorationRange(E[0])}finally{l.deltaDecorations(E,[])}r&&I.isApplied&&h.allEdits.length>1&&this.show(M??w,h,P=>we(this,void 0,void 0,function*(){const x=this._editor.getModel();x&&(yield x.undo(),this.applyEditAndShowIfNeeded(u,{activeEditIndex:P,allEdits:h.allEdits},r,c))}))})}show(u,h,r){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(n,this._id,this._editor,this._visibleContext,this._showCommand,u,h,r))}clear(){this._currentWidget.clear()}tryShowSelector(){var u;(u=this._currentWidget.value)===null||u===void 0||u.showSelector()}};e.PostEditWidgetManager=t,e.PostEditWidgetManager=t=ke([fe(4,C.IInstantiationService),fe(5,f.IBulkEditService)],t)}),define(ne[336],se([1,0,15]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.KeybindingResolver=e.NoMatchingKb=void 0,e.NoMatchingKb={kind:0};const k={kind:1};function y(_,g,C){return{kind:2,commandId:_,commandArgs:g,isBubble:C}}class D{constructor(g,C,s){var i;this._log=s,this._defaultKeybindings=g,this._defaultBoundCommands=new Map;for(const n of g){const t=n.command;t&&t.charAt(0)!=="-"&&this._defaultBoundCommands.set(t,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=D.handleRemovals([].concat(g).concat(C));for(let n=0,t=this._keybindings.length;n"u"){this._map.set(g,[C]),this._addToLookupMap(C);return}for(let i=s.length-1;i>=0;i--){const n=s[i];if(n.command===C.command)continue;let t=!0;for(let a=1;a"u"?(C=[g],this._lookupMap.set(g.command,C)):C.push(g)}_removeFromLookupMap(g){if(!g.command)return;const C=this._lookupMap.get(g.command);if(!(typeof C>"u")){for(let s=0,i=C.length;s"u"||s.length===0)return null;if(s.length===1)return s[0];for(let i=s.length-1;i>=0;i--){const n=s[i];if(C.contextMatchesRules(n.when))return n}return s[s.length-1]}resolve(g,C,s){const i=[...C,s];this._log(`| Resolving ${i}`);const n=this._map.get(i[0]);if(n===void 0)return this._log("\\ No keybinding entries."),e.NoMatchingKb;let t=null;if(i.length<2)t=n;else{t=[];for(let u=0,h=n.length;ur.chords.length)continue;let c=!0;for(let o=1;o=0;s--){const i=C[s];if(D._contextMatchesRules(g,i.when))return i}return null}static _contextMatchesRules(g,C){return C?C.evaluate(g):!0}}e.KeybindingResolver=D;function S(_){return _?`${_.serialize()}`:"no when condition"}function f(_){return _.extensionId?_.isBuiltinExtension?`built-in extension ${_.extensionId}`:`user extension ${_.extensionId}`:_.isDefault?"built-in":"user"}}),define(ne[760],se([1,0,13,9,6,263,2,727,336]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractKeybindingService=void 0;const g=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class C extends S.Disposable{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:y.Event.None}get inChordMode(){return this._currentChords.length>0}constructor(n,t,a,u,h){super(),this._contextKeyService=n,this._commandService=t,this._telemetryService=a,this._notificationService=u,this._logService=h,this._onDidUpdateKeybindings=this._register(new y.Emitter),this._currentChords=[],this._currentChordChecker=new L.IntervalTimer,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new L.TimeoutTimer,this._logging=!1}dispose(){super.dispose()}_log(n){this._logging&&this._logService.info(`[KeybindingService]: ${n}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(n,t){const a=this._getResolver().lookupPrimaryKeybinding(n,t||this._contextKeyService);if(a)return a.resolvedKeybinding}dispatchEvent(n,t){return this._dispatch(n,t)}softDispatch(n,t){this._log("/ Soft dispatching keyboard event");const a=this.resolveKeyboardEvent(n);if(a.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),_.NoMatchingKb;const[u]=a.getDispatchChords();if(u===null)return this._log("\\ Keyboard event cannot be dispatched"),_.NoMatchingKb;const h=this._contextKeyService.getContext(t),r=this._currentChords.map(({keypress:c})=>c);return this._getResolver().resolve(h,r,u)}_scheduleLeaveChordMode(){const n=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-n>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(n,t){switch(this._currentChords.push({keypress:n,label:t}),this._currentChords.length){case 0:throw(0,k.illegalState)("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(f.localize(0,null,t));break;default:{const a=this._currentChords.map(({label:u})=>u).join(", ");this._currentChordStatusMessage=this._notificationService.status(f.localize(1,null,a))}}this._scheduleLeaveChordMode(),D.IME.enabled&&D.IME.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],D.IME.enable()}_dispatch(n,t){return this._doDispatch(this.resolveKeyboardEvent(n),t,!1)}_singleModifierDispatch(n,t){const a=this.resolveKeyboardEvent(n),[u]=a.getSingleModifierDispatchChords();if(u)return this._ignoreSingleModifiers.has(u)?(this._log(`+ Ignoring single modifier ${u} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${u}.`),this._currentSingleModifier=u,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null},300),!1):u===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${u} ${u}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(a,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${u}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[h]=a.getChords();return this._ignoreSingleModifiers=new s(h),this._currentSingleModifier!==null&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(n,t,a=!1){var u;let h=!1;if(n.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let r=null,c=null;if(a){const[p]=n.getSingleModifierDispatchChords();r=p,c=p?[p]:[]}else[r]=n.getDispatchChords(),c=this._currentChords.map(({keypress:p})=>p);if(r===null)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),h;const o=this._contextKeyService.getContext(t),d=n.getLabel(),l=this._getResolver().resolve(o,c,r);switch(l.kind){case 0:{if(this._logService.trace("KeybindingService#dispatch",d,"[ No matching keybinding ]"),this.inChordMode){const p=this._currentChords.map(({label:m})=>m).join(", ");this._log(`+ Leaving multi-chord mode: Nothing bound to "${p}, ${d}".`),this._notificationService.status(f.localize(2,null,p,d),{hideAfter:10*1e3}),this._leaveChordMode(),h=!0}return h}case 1:return this._logService.trace("KeybindingService#dispatch",d,"[ Several keybindings match - more chords needed ]"),h=!0,this._expectAnotherChord(r,d),this._log(this._currentChords.length===1?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),h;case 2:{if(this._logService.trace("KeybindingService#dispatch",d,`[ Will dispatch command ${l.commandId} ]`),l.commandId===null||l.commandId===""){if(this.inChordMode){const p=this._currentChords.map(({label:m})=>m).join(", ");this._log(`+ Leaving chord mode: Nothing bound to "${p}, ${d}".`),this._notificationService.status(f.localize(3,null,p,d),{hideAfter:10*1e3}),this._leaveChordMode(),h=!0}}else this.inChordMode&&this._leaveChordMode(),l.isBubble||(h=!0),this._log(`+ Invoking command ${l.commandId}.`),typeof l.commandArgs>"u"?this._commandService.executeCommand(l.commandId).then(void 0,p=>this._notificationService.warn(p)):this._commandService.executeCommand(l.commandId,l.commandArgs).then(void 0,p=>this._notificationService.warn(p)),g.test(l.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:l.commandId,from:"keybinding",detail:(u=n.getUserSettingsLabel())!==null&&u!==void 0?u:void 0});return h}}}mightProducePrintableCharacter(n){return n.ctrlKey||n.metaKey?!1:n.keyCode>=31&&n.keyCode<=56||n.keyCode>=21&&n.keyCode<=30}}e.AbstractKeybindingService=C;class s{constructor(n){this._ctrlKey=n?n.ctrlKey:!1,this._shiftKey=n?n.shiftKey:!1,this._altKey=n?n.altKey:!1,this._metaKey=n?n.metaKey:!1}has(n){switch(n){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}}s.EMPTY=new s(null)}),define(ne[337],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toEmptyArrayIfContainsNull=e.ResolvedKeybindingItem=void 0;class L{constructor(D,S,f,_,g,C,s){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=D,this.chords=D?k(D.getDispatchChords()):[],D&&this.chords.length===0&&(this.chords=k(D.getSingleModifierDispatchChords())),this.bubble=S?S.charCodeAt(0)===94:!1,this.command=this.bubble?S.substr(1):S,this.commandArgs=f,this.when=_,this.isDefault=g,this.extensionId=C,this.isBuiltinExtension=s}}e.ResolvedKeybindingItem=L;function k(y){const D=[];for(let S=0,f=y.length;Sthis._toKeyCodeChord(s)));return C.length>0?[new S(C,g)]:[]}}e.USLayoutResolvedKeybinding=S}),define(ne[158],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILabelService=void 0,e.ILabelService=(0,L.createDecorator)("labelService")}),define(ne[134],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILayoutService=void 0,e.ILayoutService=(0,L.createDecorator)("layoutService")}),define(ne[338],se([1,0,7,6,134,33,50]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorScopedLayoutService=void 0;let f=class{get dimension(){return this._dimension||(this._dimension=L.getClientArea(window.document.body)),this._dimension}get hasContainer(){return!1}get container(){throw new Error("ILayoutService.container is not available in the standalone editor!")}focus(){var C;(C=this._codeEditorService.getFocusedCodeEditor())===null||C===void 0||C.focus()}constructor(C){this._codeEditorService=C,this.onDidLayout=k.Event.None,this.offset={top:0,quickPickTop:0}}};f=ke([fe(0,D.ICodeEditorService)],f);let _=class extends f{get hasContainer(){return!1}get container(){return this._container}constructor(C,s){super(s),this._container=C}};e.EditorScopedLayoutService=_,e.EditorScopedLayoutService=_=ke([fe(1,D.ICodeEditorService)],_),(0,S.registerSingleton)(y.ILayoutService,f,1)}),define(ne[762],se([1,0,7,6,2,84,28,15,134]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibilityService=void 0;let g=class extends y.Disposable{constructor(s,i,n){super(),this._contextKeyService=s,this._layoutService=i,this._configurationService=n,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new k.Emitter,this._onDidChangeReducedMotion=new k.Emitter,this._accessibilityModeEnabledContext=D.CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);const t=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration("editor.accessibilitySupport")&&(t(),this._onDidChangeScreenReaderOptimized.fire()),u.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),t(),this._register(this.onDidChangeScreenReaderOptimized(()=>t()));const a=window.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=a.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this.initReducedMotionListeners(a)}initReducedMotionListeners(s){if(!this._layoutService.hasContainer)return;this._register((0,L.addDisposableListener)(s,"change",()=>{this._systemMotionReduced=s.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const i=()=>{const n=this.isMotionReduced();this._layoutService.container.classList.toggle("reduce-motion",n),this._layoutService.container.classList.toggle("enable-motion",!n)};i(),this._register(this.onDidChangeReducedMotion(()=>i()))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const s=this._configurationService.getValue("editor.accessibilitySupport");return s==="on"||s==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const s=this._configMotionReduced;return s==="on"||s==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};e.AccessibilityService=g,e.AccessibilityService=g=ke([fe(0,f.IContextKeyService),fe(1,_.ILayoutService),fe(2,S.IConfigurationService)],g)}),define(ne[763],se([1,0,306,2,134]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextViewService=void 0;let D=class extends k.Disposable{constructor(f){super(),this.layoutService=f,this.currentViewDisposable=k.Disposable.None,this.container=f.hasContainer?f.container:null,this.contextView=this._register(new L.ContextView(this.container,1)),this.layout(),this._register(f.onDidLayout(()=>this.layout()))}setContainer(f,_){this.contextView.setContainer(f,_||1)}showContextView(f,_,g){_?(_!==this.container||this.shadowRoot!==g)&&(this.container=_,this.setContainer(_,g?3:2)):this.layoutService.hasContainer&&this.container!==this.layoutService.container&&(this.container=this.layoutService.container,this.setContainer(this.container,1)),this.shadowRoot=g,this.contextView.show(f);const C=(0,k.toDisposable)(()=>{this.currentViewDisposable===C&&this.hideContextView()});return this.currentViewDisposable=C,C}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(f){this.contextView.hide(f)}};e.ContextViewService=D,e.ContextViewService=D=ke([fe(0,y.ILayoutService)],D)}),define(ne[70],se([1,0,6,2,15,8]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CONTEXT_LOG_LEVEL=e.LogLevelToString=e.MultiplexLogger=e.ConsoleLogger=e.AbstractLogger=e.DEFAULT_LOG_LEVEL=e.LogLevel=e.ILogService=void 0,e.ILogService=(0,D.createDecorator)("logService");var S;(function(s){s[s.Off=0]="Off",s[s.Trace=1]="Trace",s[s.Debug=2]="Debug",s[s.Info=3]="Info",s[s.Warning=4]="Warning",s[s.Error=5]="Error"})(S||(e.LogLevel=S={})),e.DEFAULT_LOG_LEVEL=S.Info;class f extends k.Disposable{constructor(){super(...arguments),this.level=e.DEFAULT_LOG_LEVEL,this._onDidChangeLogLevel=this._register(new L.Emitter),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(i){this.level!==i&&(this.level=i,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(i){return this.level!==S.Off&&this.level<=i}}e.AbstractLogger=f;class _ extends f{constructor(i=e.DEFAULT_LOG_LEVEL,n=!0){super(),this.useColors=n,this.setLevel(i)}trace(i,...n){this.checkLogLevel(S.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",i,...n):console.log(i,...n))}debug(i,...n){this.checkLogLevel(S.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",i,...n):console.log(i,...n))}info(i,...n){this.checkLogLevel(S.Info)&&(this.useColors?console.log("%c INFO","color: #33f",i,...n):console.log(i,...n))}warn(i,...n){this.checkLogLevel(S.Warning)&&(this.useColors?console.log("%c WARN","color: #993",i,...n):console.log(i,...n))}error(i,...n){this.checkLogLevel(S.Error)&&(this.useColors?console.log("%c ERR","color: #f33",i,...n):console.error(i,...n))}dispose(){}}e.ConsoleLogger=_;class g extends f{constructor(i){super(),this.loggers=i,i.length&&this.setLevel(i[0].getLevel())}setLevel(i){for(const n of this.loggers)n.setLevel(i);super.setLevel(i)}trace(i,...n){for(const t of this.loggers)t.trace(i,...n)}debug(i,...n){for(const t of this.loggers)t.debug(i,...n)}info(i,...n){for(const t of this.loggers)t.info(i,...n)}warn(i,...n){for(const t of this.loggers)t.warn(i,...n)}error(i,...n){for(const t of this.loggers)t.error(i,...n)}dispose(){for(const i of this.loggers)i.dispose()}}e.MultiplexLogger=g;function C(s){switch(s){case S.Trace:return"trace";case S.Debug:return"debug";case S.Info:return"info";case S.Warning:return"warn";case S.Error:return"error";case S.Off:return"off"}}e.LogLevelToString=C,e.CONTEXT_LOG_LEVEL=new y.RawContextKey("logLevel",C(S.Info))}),define(ne[764],se([1,0,52,7,13,2,134,70]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserClipboardService=void 0;let _=class extends D.Disposable{constructor(C,s){super(),this.layoutService=C,this.logService=s,this.mapTextToType=new Map,this.findText="",this.resources=[],(L.isSafari||L.isWebkitWebView)&&this.installWebKitWriteTextWorkaround()}installWebKitWriteTextWorkaround(){const C=()=>{const s=new y.DeferredPromise;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=s,navigator.clipboard.write([new ClipboardItem({"text/plain":s.p})]).catch(i=>we(this,void 0,void 0,function*(){(!(i instanceof Error)||i.name!=="NotAllowedError"||!s.isRejected)&&this.logService.error(i)}))};this.layoutService.hasContainer&&(this._register((0,k.addDisposableListener)(this.layoutService.container,"click",C)),this._register((0,k.addDisposableListener)(this.layoutService.container,"keydown",C)))}writeText(C,s){return we(this,void 0,void 0,function*(){if(s){this.mapTextToType.set(s,C);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(C);try{return yield navigator.clipboard.writeText(C)}catch(t){console.error(t)}const i=document.activeElement,n=document.body.appendChild((0,k.$)("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=C,n.focus(),n.select(),document.execCommand("copy"),i instanceof HTMLElement&&i.focus(),document.body.removeChild(n)})}readText(C){return we(this,void 0,void 0,function*(){if(C)return this.mapTextToType.get(C)||"";try{return yield navigator.clipboard.readText()}catch(s){return console.error(s),""}})}readFindText(){return we(this,void 0,void 0,function*(){return this.findText})}writeFindText(C){return we(this,void 0,void 0,function*(){this.findText=C})}writeResources(C){return we(this,void 0,void 0,function*(){this.resources=C})}readResources(){return we(this,void 0,void 0,function*(){return this.resources})}};e.BrowserClipboardService=_,e.BrowserClipboardService=_=ke([fe(0,S.ILayoutService),fe(1,f.ILogService)],_)}),define(ne[765],se([1,0,2,70]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LogService=void 0;class y extends L.Disposable{constructor(S,f=[]){super(),this.logger=new k.MultiplexLogger([S,...f]),this._register(S.onDidChangeLogLevel(_=>this.setLevel(_)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(S){this.logger.setLevel(S)}getLevel(){return this.logger.getLevel()}trace(S,...f){this.logger.trace(S,...f)}debug(S,...f){this.logger.debug(S,...f)}info(S,...f){this.logger.info(S,...f)}warn(S,...f){this.logger.warn(S,...f)}error(S,...f){this.logger.error(S,...f)}}e.LogService=y}),define(ne[97],se([1,0,101,729,8]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerService=e.IMarkerData=e.MarkerSeverity=void 0;var D;(function(f){f[f.Hint=1]="Hint",f[f.Info=2]="Info",f[f.Warning=4]="Warning",f[f.Error=8]="Error"})(D||(e.MarkerSeverity=D={})),function(f){function _(n,t){return t-n}f.compare=_;const g=Object.create(null);g[f.Error]=(0,k.localize)(0,null),g[f.Warning]=(0,k.localize)(1,null),g[f.Info]=(0,k.localize)(2,null);function C(n){return g[n]||""}f.toString=C;function s(n){switch(n){case L.default.Error:return f.Error;case L.default.Warning:return f.Warning;case L.default.Info:return f.Info;case L.default.Ignore:return f.Hint}}f.fromSeverity=s;function i(n){switch(n){case f.Error:return L.default.Error;case f.Warning:return L.default.Warning;case f.Info:return L.default.Info;case f.Hint:return L.default.Ignore}}f.toSeverity=i}(D||(e.MarkerSeverity=D={}));var S;(function(f){const _="";function g(s){return C(s,!0)}f.makeKey=g;function C(s,i){const n=[_];return s.source?n.push(s.source.replace("\xA6","\\\xA6")):n.push(_),s.code?typeof s.code=="string"?n.push(s.code.replace("\xA6","\\\xA6")):n.push(s.code.value.replace("\xA6","\\\xA6")):n.push(_),s.severity!==void 0&&s.severity!==null?n.push(D.toString(s.severity)):n.push(_),s.message&&i?n.push(s.message.replace("\xA6","\\\xA6")):n.push(_),s.startLineNumber!==void 0&&s.startLineNumber!==null?n.push(s.startLineNumber.toString()):n.push(_),s.startColumn!==void 0&&s.startColumn!==null?n.push(s.startColumn.toString()):n.push(_),s.endLineNumber!==void 0&&s.endLineNumber!==null?n.push(s.endLineNumber.toString()):n.push(_),s.endColumn!==void 0&&s.endColumn!==null?n.push(s.endColumn.toString()):n.push(_),n.push(_),n.join("\xA6")}f.makeKeyOptionalMessage=C})(S||(e.IMarkerData=S={})),e.IMarkerService=(0,y.createDecorator)("markerService")}),define(ne[766],se([1,0,14,6,2,64,11,22,5,50,8,97,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerNavigationService=e.MarkerList=e.MarkerCoordinate=void 0;class n{constructor(h,r,c){this.marker=h,this.index=r,this.total=c}}e.MarkerCoordinate=n;let t=class{constructor(h,r,c){this._markerService=r,this._configService=c,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._dispoables=new y.DisposableStore,this._markers=[],this._nextIdx=-1,f.URI.isUri(h)?this._resourceFilter=p=>p.toString()===h.toString():h&&(this._resourceFilter=h);const o=this._configService.getValue("problems.sortOrder"),d=(p,m)=>{let v=(0,S.compare)(p.resource.toString(),m.resource.toString());return v===0&&(o==="position"?v=_.Range.compareRangesUsingStarts(p,m)||s.MarkerSeverity.compare(p.severity,m.severity):v=s.MarkerSeverity.compare(p.severity,m.severity)||_.Range.compareRangesUsingStarts(p,m)),v},l=()=>{this._markers=this._markerService.read({resource:f.URI.isUri(h)?h:void 0,severities:s.MarkerSeverity.Error|s.MarkerSeverity.Warning|s.MarkerSeverity.Info}),typeof h=="function"&&(this._markers=this._markers.filter(p=>this._resourceFilter(p.resource))),this._markers.sort(d)};l(),this._dispoables.add(r.onMarkerChanged(p=>{(!this._resourceFilter||p.some(m=>this._resourceFilter(m)))&&(l(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(h){return!this._resourceFilter&&!h?!0:!this._resourceFilter||!h?!1:this._resourceFilter(h)}get selected(){const h=this._markers[this._nextIdx];return h&&new n(h,this._nextIdx+1,this._markers.length)}_initIdx(h,r,c){let o=!1,d=this._markers.findIndex(l=>l.resource.toString()===h.uri.toString());d<0&&(d=(0,L.binarySearch)(this._markers,{resource:h.uri},(l,p)=>(0,S.compare)(l.resource.toString(),p.resource.toString())),d<0&&(d=~d));for(let l=d;lo.resource.toString()===h.toString());if(!(c<0)){for(;cr[1])}}class C{constructor(n){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new D.ResourceMap,this._service=n,this._subscription=n.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(n){for(const t of n){const a=this._data.get(t);a&&this._substract(a);const u=this._resourceStats(t);this._add(u),this._data.set(t,u)}}_resourceStats(n){const t={errors:0,warnings:0,infos:0,unknowns:0};if(e.unsupportedSchemas.has(n.scheme))return t;for(const{severity:a}of this._service.read({resource:n}))a===_.MarkerSeverity.Error?t.errors+=1:a===_.MarkerSeverity.Warning?t.warnings+=1:a===_.MarkerSeverity.Info?t.infos+=1:t.unknowns+=1;return t}_substract(n){this.errors-=n.errors,this.warnings-=n.warnings,this.infos-=n.infos,this.unknowns-=n.unknowns}_add(n){this.errors+=n.errors,this.warnings+=n.warnings,this.infos+=n.infos,this.unknowns+=n.unknowns}}class s{constructor(){this._onMarkerChanged=new k.DebounceEmitter({delay:0,merge:s._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new g,this._stats=new C(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(n,t){for(const a of t||[])this.changeOne(n,a,[])}changeOne(n,t,a){if((0,L.isFalsyOrEmpty)(a))this._data.delete(t,n)&&this._onMarkerChanged.fire([t]);else{const u=[];for(const h of a){const r=s._toMarker(n,t,h);r&&u.push(r)}this._data.set(t,n,u),this._onMarkerChanged.fire([t])}}static _toMarker(n,t,a){let{code:u,severity:h,message:r,source:c,startLineNumber:o,startColumn:d,endLineNumber:l,endColumn:p,relatedInformation:m,tags:v}=a;if(r)return o=o>0?o:1,d=d>0?d:1,l=l>=o?l:o,p=p>0?p:d,{resource:t,owner:n,code:u,severity:h,message:r,source:c,startLineNumber:o,startColumn:d,endLineNumber:l,endColumn:p,relatedInformation:m,tags:v}}changeAll(n,t){const a=[],u=this._data.values(n);if(u)for(const h of u){const r=y.Iterable.first(h);r&&(a.push(r.resource),this._data.delete(r.resource,n))}if((0,L.isNonEmptyArray)(t)){const h=new D.ResourceMap;for(const{resource:r,marker:c}of t){const o=s._toMarker(n,r,c);if(!o)continue;const d=h.get(r);d?d.push(o):(h.set(r,[o]),a.push(r))}for(const[r,c]of h)this._data.set(r,n,c)}a.length>0&&this._onMarkerChanged.fire(a)}read(n=Object.create(null)){let{owner:t,resource:a,severities:u,take:h}=n;if((!h||h<0)&&(h=-1),t&&a){const r=this._data.get(a,t);if(r){const c=[];for(const o of r)if(s._accept(o,u)){const d=c.push(o);if(h>0&&d===h)break}return c}else return[]}else if(!t&&!a){const r=[];for(const c of this._data.values())for(const o of c)if(s._accept(o,u)){const d=r.push(o);if(h>0&&d===h)return r}return r}else{const r=this._data.values(a??t),c=[];for(const o of r)for(const d of o)if(s._accept(d,u)){const l=c.push(d);if(h>0&&l===h)return c}return c}}static _accept(n,t){return t===void 0||(t&n.severity)===n.severity}static _merge(n){const t=new D.ResourceMap;for(const a of n)for(const u of a)t.set(u,!0);return Array.from(t.keys())}}e.MarkerService=s}),define(ne[43],se([1,0,101,8]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NoOpNotification=e.INotificationService=e.Severity=void 0,e.Severity=L.default,e.INotificationService=(0,k.createDecorator)("notificationService");class y{}e.NoOpNotification=y}),define(ne[56],se([1,0,11,22,8]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extractSelection=e.matchesSomeScheme=e.matchesScheme=e.IOpenerService=void 0,e.IOpenerService=(0,y.createDecorator)("openerService");function D(_,g){return k.URI.isUri(_)?(0,L.equalsIgnoreCase)(_.scheme,g):(0,L.startsWithIgnoreCase)(_,g+":")}e.matchesScheme=D;function S(_,...g){return g.some(C=>D(_,C))}e.matchesSomeScheme=S;function f(_){let g;const C=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(_.fragment);return C&&(g={startLineNumber:parseInt(C[1]),startColumn:C[2]?parseInt(C[2]):1,endLineNumber:C[4]?parseInt(C[4]):void 0,endColumn:C[4]?C[5]?parseInt(C[5]):1:void 0},_=_.with({fragment:""})),{selection:g,uri:_}}e.extractSelection=f}),define(ne[768],se([1,0,7,19,64,65,221,54,45,22,33,27,743,56]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OpenerService=void 0;let t=class{constructor(r){this._commandService=r}open(r,c){return we(this,void 0,void 0,function*(){if(!(0,n.matchesScheme)(r,f.Schemas.command))return!1;if(!c?.allowCommands||(typeof r=="string"&&(r=g.URI.parse(r)),Array.isArray(c.allowCommands)&&!c.allowCommands.includes(r.path)))return!0;let o=[];try{o=(0,S.parse)(decodeURIComponent(r.query))}catch{try{o=(0,S.parse)(r.query)}catch{}}return Array.isArray(o)||(o=[o]),yield this._commandService.executeCommand(r.path,...o),!0})}};t=ke([fe(0,s.ICommandService)],t);let a=class{constructor(r){this._editorService=r}open(r,c){return we(this,void 0,void 0,function*(){typeof r=="string"&&(r=g.URI.parse(r));const{selection:o,uri:d}=(0,n.extractSelection)(r);return r=d,r.scheme===f.Schemas.file&&(r=(0,_.normalizePath)(r)),yield this._editorService.openCodeEditor({resource:r,options:Object.assign({selection:o,source:c?.fromUserGesture?i.EditorOpenSource.USER:i.EditorOpenSource.API},c?.editorOptions)},this._editorService.getFocusedCodeEditor(),c?.openToSide),!0})}};a=ke([fe(0,C.ICodeEditorService)],a);let u=class{constructor(r,c){this._openers=new y.LinkedList,this._validators=new y.LinkedList,this._resolvers=new y.LinkedList,this._resolvedUriTargets=new D.ResourceMap(o=>o.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new y.LinkedList,this._defaultExternalOpener={openExternal:o=>we(this,void 0,void 0,function*(){return(0,n.matchesSomeScheme)(o,f.Schemas.http,f.Schemas.https)?L.windowOpenNoOpener(o):window.location.href=o,!0})},this._openers.push({open:(o,d)=>we(this,void 0,void 0,function*(){return d?.openExternal||(0,n.matchesSomeScheme)(o,f.Schemas.mailto,f.Schemas.http,f.Schemas.https,f.Schemas.vsls)?(yield this._doOpenExternal(o,d),!0):!1})}),this._openers.push(new t(c)),this._openers.push(new a(r))}registerOpener(r){return{dispose:this._openers.unshift(r)}}open(r,c){var o;return we(this,void 0,void 0,function*(){const d=typeof r=="string"?g.URI.parse(r):r,l=(o=this._resolvedUriTargets.get(d))!==null&&o!==void 0?o:r;for(const p of this._validators)if(!(yield p.shouldOpen(l,c)))return!1;for(const p of this._openers)if(yield p.open(r,c))return!0;return!1})}resolveExternalUri(r,c){return we(this,void 0,void 0,function*(){for(const o of this._resolvers)try{const d=yield o.resolveExternalUri(r,c);if(d)return this._resolvedUriTargets.has(d.resolved)||this._resolvedUriTargets.set(d.resolved,r),d}catch{}throw new Error("Could not resolve external URI: "+r.toString())})}_doOpenExternal(r,c){return we(this,void 0,void 0,function*(){const o=typeof r=="string"?g.URI.parse(r):r;let d;try{d=(yield this.resolveExternalUri(o,c)).resolved}catch{d=o}let l;if(typeof r=="string"&&o.toString()===d.toString()?l=r:l=encodeURI(d.toString(!0)),c?.allowContributedOpeners){const p=typeof c?.allowContributedOpeners=="string"?c?.allowContributedOpeners:void 0;for(const m of this._externalOpeners)if(yield m.openExternal(l,{sourceUri:o,preferredOpenerId:p},k.CancellationToken.None))return!0}return this._defaultExternalOpener.openExternal(l,{sourceUri:o},k.CancellationToken.None)})}dispose(){this._validators.clear()}};e.OpenerService=u,e.OpenerService=u=ke([fe(0,C.ICodeEditorService),fe(1,s.ICommandService)],u)}),define(ne[76],se([1,0,143,65,141,239,50,8,70,56]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeatureDebounceService=e.ILanguageFeatureDebounceService=void 0,e.ILanguageFeatureDebounceService=(0,f.createDecorator)("ILanguageFeatureDebounceService");var C;(function(t){const a=new WeakMap;let u=0;function h(r){let c=a.get(r);return c===void 0&&(c=++u,a.set(r,c)),c}t.of=h})(C||(C={}));class s{constructor(a){this._default=a}get(a){return this._default}update(a,u){return this._default}default(){return this._default}}class i{constructor(a,u,h,r,c,o){this._logService=a,this._name=u,this._registry=h,this._default=r,this._min=c,this._max=o,this._cache=new k.LRUCache(50,.7)}_key(a){return a.id+this._registry.all(a).reduce((u,h)=>(0,L.doHash)(C.of(h),u),0)}get(a){const u=this._key(a),h=this._cache.get(u);return h?(0,y.clamp)(h.value,this._min,this._max):this.default()}update(a,u){const h=this._key(a);let r=this._cache.get(h);r||(r=new y.SlidingWindowAverage(6),this._cache.set(h,r));const c=(0,y.clamp)(r.update(u),this._min,this._max);return(0,g.matchesScheme)(a.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${a.uri.toString()} is ${c}ms`),c}_overall(){const a=new y.MovingAverage;for(const[,u]of this._cache)a.update(u.value);return a.value}default(){const a=this._overall()|0||this._default;return(0,y.clamp)(a,this._min,this._max)}}let n=class{constructor(a,u){this._logService=a,this._data=new Map,this._isDev=u.isExtensionDevelopment||!u.isBuilt}for(a,u,h){var r,c,o;const d=(r=h?.min)!==null&&r!==void 0?r:50,l=(c=h?.max)!==null&&c!==void 0?c:Math.pow(d,2),p=(o=h?.key)!==null&&o!==void 0?o:void 0,m=`${C.of(a)},${d}${p?","+p:""}`;let v=this._data.get(m);return v||(this._isDev?v=new i(this._logService,u,a,this._overallAverage()|0||d*1.5,d,l):(this._logService.debug(`[DEBOUNCE: ${u}] is disabled in developed mode`),v=new s(d*1.5)),this._data.set(m,v)),v}_overallAverage(){const a=new y.MovingAverage;for(const u of this._data.values())a.update(u.default());return a.value}};e.LanguageFeatureDebounceService=n,e.LanguageFeatureDebounceService=n=ke([fe(0,_.ILogService),fe(1,D.IEnvironmentService)],n),(0,S.registerSingleton)(e.ILanguageFeatureDebounceService,n,1)}),define(ne[188],se([1,0,14,19,9,46,65,12,5,76,8,50,51,2,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OutlineModelService=e.IOutlineModelService=e.OutlineModel=e.OutlineGroup=e.OutlineElement=e.TreeElement=void 0;class a{remove(){var d;(d=this.parent)===null||d===void 0||d.children.delete(this.id)}static findId(d,l){let p;typeof d=="string"?p=`${l.id}/${d}`:(p=`${l.id}/${d.name}`,l.children.get(p)!==void 0&&(p=`${l.id}/${d.name}_${d.range.startLineNumber}_${d.range.startColumn}`));let m=p;for(let v=0;l.children.get(m)!==void 0;v++)m=`${p}_${v}`;return m}static empty(d){return d.children.size===0}}e.TreeElement=a;class u extends a{constructor(d,l,p){super(),this.id=d,this.parent=l,this.symbol=p,this.children=new Map}}e.OutlineElement=u;class h extends a{constructor(d,l,p,m){super(),this.id=d,this.parent=l,this.label=p,this.order=m,this.children=new Map}}e.OutlineGroup=h;class r extends a{static create(d,l,p){const m=new k.CancellationTokenSource(p),v=new r(l.uri),b=d.ordered(l),w=b.map((I,M)=>{var P;const x=a.findId(`provider_${M}`,v),T=new h(x,v,(P=I.displayName)!==null&&P!==void 0?P:"Unknown Outline Provider",M);return Promise.resolve(I.provideDocumentSymbols(l,m.token)).then(A=>{for(const N of A||[])r._makeOutlineElement(N,T);return T},A=>((0,y.onUnexpectedExternalError)(A),T)).then(A=>{a.empty(A)?A.remove():v._groups.set(x,A)})}),E=d.onDidChange(()=>{const I=d.ordered(l);(0,L.equals)(I,b)||m.cancel()});return Promise.all(w).then(()=>m.token.isCancellationRequested&&!p.isCancellationRequested?r.create(d,l,p):v._compact()).finally(()=>{E.dispose()})}static _makeOutlineElement(d,l){const p=a.findId(d,l),m=new u(p,l,d);if(d.children)for(const v of d.children)r._makeOutlineElement(v,m);l.children.set(m.id,m)}constructor(d){super(),this.uri=d,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let d=0;for(const[l,p]of this._groups)p.children.size===0?this._groups.delete(l):d+=1;if(d!==1)this.children=this._groups;else{const l=D.Iterable.first(this._groups.values());for(const[,p]of l.children)p.parent=this,this.children.set(p.id,p)}return this}getTopLevelSymbols(){const d=[];for(const l of this.children.values())l instanceof u?d.push(l.symbol):d.push(...D.Iterable.map(l.children.values(),p=>p.symbol));return d.sort((l,p)=>_.Range.compareRangesUsingStarts(l.range,p.range))}asListOfDocumentSymbols(){const d=this.getTopLevelSymbols(),l=[];return r._flattenDocumentSymbols(l,d,""),l.sort((p,m)=>f.Position.compare(_.Range.getStartPosition(p.range),_.Range.getStartPosition(m.range))||f.Position.compare(_.Range.getEndPosition(m.range),_.Range.getEndPosition(p.range)))}static _flattenDocumentSymbols(d,l,p){for(const m of l)d.push({kind:m.kind,tags:m.tags,name:m.name,detail:m.detail,containerName:m.containerName||p,range:m.range,selectionRange:m.selectionRange,children:void 0}),m.children&&r._flattenDocumentSymbols(d,m.children,m.name)}}e.OutlineModel=r,e.IOutlineModelService=(0,C.createDecorator)("IOutlineModelService");let c=class{constructor(d,l,p){this._languageFeaturesService=d,this._disposables=new n.DisposableStore,this._cache=new S.LRUCache(10,.7),this._debounceInformation=l.for(d.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(p.onModelRemoved(m=>{this._cache.delete(m.id)}))}dispose(){this._disposables.dispose()}getOrCreate(d,l){return we(this,void 0,void 0,function*(){const p=this._languageFeaturesService.documentSymbolProvider,m=p.ordered(d);let v=this._cache.get(d.id);if(!v||v.versionId!==d.getVersionId()||!(0,L.equals)(v.provider,m)){const w=new k.CancellationTokenSource;v={versionId:d.getVersionId(),provider:m,promiseCnt:0,source:w,promise:r.create(p,d,w.token),model:void 0},this._cache.set(d.id,v);const E=Date.now();v.promise.then(I=>{v.model=I,this._debounceInformation.update(d,Date.now()-E)}).catch(I=>{this._cache.delete(d.id)})}if(v.model)return v.model;v.promiseCnt+=1;const b=l.onCancellationRequested(()=>{--v.promiseCnt===0&&(v.source.cancel(),this._cache.delete(d.id))});try{return yield v.promise}finally{b.dispose()}})}};e.OutlineModelService=c,e.OutlineModelService=c=ke([fe(0,t.ILanguageFeaturesService),fe(1,g.ILanguageFeatureDebounceService),fe(2,i.IModelService)],c),(0,s.registerSingleton)(e.IOutlineModelService,c,1)}),define(ne[769],se([1,0,19,20,22,69,188,27]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),f.CommandsRegistry.registerCommand("_executeDocumentSymbolProvider",function(_,...g){return we(this,void 0,void 0,function*(){const[C]=g;(0,k.assertType)(y.URI.isUri(C));const s=_.get(S.IOutlineModelService),n=yield _.get(D.ITextModelService).createModelReference(C);try{return(yield s.getOrCreate(n.object.textEditorModel,L.CancellationToken.None)).getTopLevelSymbols()}finally{n.dispose()}})})}),define(ne[770],se([1,0,7,81,44,61,6,2,56,473]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Link=void 0;let g=class extends f.Disposable{get enabled(){return this._enabled}set enabled(s){s?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=s}constructor(s,i,n={},t){var a;super(),this._link=i,this._enabled=!0,this.el=(0,L.append)(s,(0,L.$)("a.monaco-link",{tabIndex:(a=i.tabIndex)!==null&&a!==void 0?a:0,href:i.href,title:i.title},i.label)),this.el.setAttribute("role","button");const u=this._register(new k.DomEmitter(this.el,"click")),h=this._register(new k.DomEmitter(this.el,"keypress")),r=S.Event.chain(h.event).map(d=>new y.StandardKeyboardEvent(d)).filter(d=>d.keyCode===3).event,c=this._register(new k.DomEmitter(this.el,D.EventType.Tap)).event;this._register(D.Gesture.addTarget(this.el));const o=S.Event.any(u.event,r,c);this._register(o(d=>{this.enabled&&(L.EventHelper.stop(d,!0),n?.opener?n.opener(this._link.href):t.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}};e.Link=g,e.Link=g=ke([fe(3,_.IOpenerService)],g)}),define(ne[77],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEditorProgressService=e.Progress=e.emptyProgressRunner=e.IProgressService=void 0,e.IProgressService=(0,L.createDecorator)("progressService"),e.emptyProgressRunner=Object.freeze({total(){},worked(){},done(){}});class k{constructor(D,S){this.callback=D,this.report=S?.async?this._reportAsync.bind(this):this._reportSync.bind(this)}_reportSync(D){this._value=D,this.callback(this._value)}_reportAsync(D){Promise.resolve(this._lastTask).finally(()=>{this._value=D;const S=this.callback(this._value);this._lastTask=Promise.resolve(S).finally(()=>this._lastTask=void 0)})}}e.Progress=k,k.None=Object.freeze({report(){}}),e.IEditorProgressService=(0,L.createDecorator)("editorProgressService")}),define(ne[771],se([1,0,13,19,2,20]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PickerQuickAccessProvider=e.TriggerAction=void 0;var S;(function(C){C[C.NO_ACTION=0]="NO_ACTION",C[C.CLOSE_PICKER=1]="CLOSE_PICKER",C[C.REFRESH_PICKER=2]="REFRESH_PICKER",C[C.REMOVE_ITEM=3]="REMOVE_ITEM"})(S||(e.TriggerAction=S={}));function f(C){const s=C;return Array.isArray(s.items)}function _(C){const s=C;return!!s.picks&&s.additionalPicks instanceof Promise}class g extends y.Disposable{constructor(s,i){super(),this.prefix=s,this.options=i}provide(s,i,n){var t;const a=new y.DisposableStore;s.canAcceptInBackground=!!(!((t=this.options)===null||t===void 0)&&t.canAcceptInBackground),s.matchOnLabel=s.matchOnDescription=s.matchOnDetail=s.sortByLabel=!1;let u;const h=a.add(new y.MutableDisposable),r=()=>we(this,void 0,void 0,function*(){const c=h.value=new y.DisposableStore;u?.dispose(!0),s.busy=!1,u=new k.CancellationTokenSource(i);const o=u.token,d=s.value.substr(this.prefix.length).trim(),l=this._getPicks(d,c,o,n),p=(v,b)=>{var w;let E,I;if(f(v)?(E=v.items,I=v.active):E=v,E.length===0){if(b)return!1;(d.length>0||s.hideInput)&&(!((w=this.options)===null||w===void 0)&&w.noResultsPick)&&((0,D.isFunction)(this.options.noResultsPick)?E=[this.options.noResultsPick(d)]:E=[this.options.noResultsPick])}return s.items=E,I&&(s.activeItems=[I]),!0},m=v=>we(this,void 0,void 0,function*(){let b=!1,w=!1;yield Promise.all([(()=>we(this,void 0,void 0,function*(){typeof v.mergeDelay=="number"&&(yield(0,L.timeout)(v.mergeDelay),o.isCancellationRequested)||w||(b=p(v.picks,!0))}))(),(()=>we(this,void 0,void 0,function*(){s.busy=!0;try{const E=yield v.additionalPicks;if(o.isCancellationRequested)return;let I,M;f(v.picks)?(I=v.picks.items,M=v.picks.active):I=v.picks;let P,x;if(f(E)?(P=E.items,x=E.active):P=E,P.length>0||!b){let T;if(!M&&!x){const A=s.activeItems[0];A&&I.indexOf(A)!==-1&&(T=A)}p({items:[...I,...P],active:M||x||T})}}finally{o.isCancellationRequested||(s.busy=!1),w=!0}}))()])});if(l!==null)if(_(l))yield m(l);else if(!(l instanceof Promise))p(l);else{s.busy=!0;try{const v=yield l;if(o.isCancellationRequested)return;_(v)?yield m(v):p(v)}finally{o.isCancellationRequested||(s.busy=!1)}}});return a.add(s.onDidChangeValue(()=>r())),r(),a.add(s.onDidAccept(c=>{const[o]=s.selectedItems;typeof o?.accept=="function"&&(c.inBackground||s.hide(),o.accept(s.keyMods,c))})),a.add(s.onDidTriggerItemButton(({button:c,item:o})=>we(this,void 0,void 0,function*(){var d,l;if(typeof o.trigger=="function"){const p=(l=(d=o.buttons)===null||d===void 0?void 0:d.indexOf(c))!==null&&l!==void 0?l:-1;if(p>=0){const m=o.trigger(p,s.keyMods),v=typeof m=="number"?m:yield m;if(i.isCancellationRequested)return;switch(v){case S.NO_ACTION:break;case S.CLOSE_PICKER:s.hide();break;case S.REFRESH_PICKER:r();break;case S.REMOVE_ITEM:{const b=s.items.indexOf(o);if(b!==-1){const w=s.items.slice(),E=w.splice(b,1),I=s.activeItems.filter(P=>P!==E[0]),M=s.keepScrollPosition;s.keepScrollPosition=!0,s.items=w,I&&(s.activeItems=I),s.keepScrollPosition=M}break}}}}}))),a}}e.PickerQuickAccessProvider=g}),define(ne[772],se([1,0,7,44,60,228,2,101,174]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputBox=void 0;const _=L.$;class g extends S.Disposable{constructor(s,i,n){super(),this.parent=s,this.onKeyDown=a=>L.addDisposableListener(this.findInput.inputBox.inputElement,L.EventType.KEY_DOWN,u=>{a(new k.StandardKeyboardEvent(u))}),this.onMouseDown=a=>L.addDisposableListener(this.findInput.inputBox.inputElement,L.EventType.MOUSE_DOWN,u=>{a(new y.StandardMouseEvent(u))}),this.onDidChange=a=>this.findInput.onDidChange(a),this.container=L.append(this.parent,_(".quick-input-box")),this.findInput=this._register(new D.FindInput(this.container,void 0,{label:"",inputBoxStyles:i,toggleStyles:n}));const t=this.findInput.inputBox.inputElement;t.role="combobox",t.ariaHasPopup="menu",t.ariaAutoComplete="list",t.ariaExpanded="true"}get value(){return this.findInput.getValue()}set value(s){this.findInput.setValue(s)}select(s=null){this.findInput.inputBox.select(s)}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(s){this.findInput.inputBox.setPlaceHolder(s)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(s){this.findInput.inputBox.inputElement.type=s?"password":"text"}set enabled(s){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!s)}set toggles(s){this.findInput.setAdditionalToggles(s)}setAttribute(s,i){this.findInput.inputBox.inputElement.setAttribute(s,i)}showDecoration(s){s===f.default.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:s===f.default.Info?1:s===f.default.Warning?2:3,content:""})}stylesForType(s){return this.findInput.inputBox.stylesForType(s===f.default.Info?1:s===f.default.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}e.QuickInputBox=g}),define(ne[339],se([1,0,7,81,6,44,61,129,164,385,735,174]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderQuickInputDescription=e.getIconClass=void 0;const s={},i=new _.IdGenerator("quick-input-button-icon-");function n(a){if(!a)return;let u;const h=a.dark.toString();return s[h]?u=s[h]:(u=i.nextId(),L.createCSSRule(`.${u}, .hc-light .${u}`,`background-image: ${L.asCSSUrl(a.light||a.dark)}`),L.createCSSRule(`.vs-dark .${u}, .hc-black .${u}`,`background-image: ${L.asCSSUrl(a.dark)}`),s[h]=u),u}e.getIconClass=n;function t(a,u,h){L.reset(u);const r=(0,g.parseLinkedText)(a);let c=0;for(const o of r.nodes)if(typeof o=="string")u.append(...(0,f.renderLabelWithIcons)(o));else{let d=o.title;!d&&o.href.startsWith("command:")?d=(0,C.localize)(0,null,o.href.substring(8)):d||(d=o.href);const l=L.$("a",{href:o.href,title:d,tabIndex:c++},o.label);l.style.textDecoration="underline";const p=E=>{L.isEventLike(E)&&L.EventHelper.stop(E,!0),h.callback(o.href)},m=h.disposables.add(new k.DomEmitter(l,L.EventType.CLICK)).event,v=h.disposables.add(new k.DomEmitter(l,L.EventType.KEY_DOWN)).event,b=h.disposables.add(y.Event.chain(v)).filter(E=>{const I=new D.StandardKeyboardEvent(E);return I.equals(10)||I.equals(3)}).event;h.disposables.add(S.Gesture.addTarget(l));const w=h.disposables.add(new k.DomEmitter(l,S.EventType.Tap)).event;y.Event.any(m,w,b)(p,null,h.disposables),u.appendChild(l)}}e.renderQuickInputDescription=t}),define(ne[71],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IQuickInputService=e.quickPickItemScorerAccessor=e.QuickPickItemScorerAccessor=e.ItemActivation=e.QuickInputHideReason=e.NO_KEY_MODS=void 0,e.NO_KEY_MODS={ctrlCmd:!1,alt:!1};var k;(function(S){S[S.Blur=1]="Blur",S[S.Gesture=2]="Gesture",S[S.Other=3]="Other"})(k||(e.QuickInputHideReason=k={}));var y;(function(S){S[S.NONE=0]="NONE",S[S.FIRST=1]="FIRST",S[S.SECOND=2]="SECOND",S[S.LAST=3]="LAST"})(y||(e.ItemActivation=y={}));class D{constructor(f){this.options=f}}e.QuickPickItemScorerAccessor=D,e.quickPickItemScorerAccessor=new D,e.IQuickInputService=(0,L.createDecorator)("quickInputService")}),define(ne[37],se([1,0,85,20]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Registry=void 0;class y{constructor(){this.data=new Map}add(S,f){L.ok(k.isString(S)),L.ok(k.isObject(f)),L.ok(!this.data.has(S),"There is already an extension with this id"),this.data.set(S,f)}as(S){return this.data.get(S)||null}}e.Registry=new y}),define(ne[340],se([1,0,37]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LocalSelectionTransfer=e.Extensions=e.CodeDataTransfers=void 0,e.CodeDataTransfers={EDITORS:"CodeEditors",FILES:"CodeFiles"};class k{}e.Extensions={DragAndDropContribution:"workbench.contributions.dragAndDrop"},L.Registry.add(e.Extensions.DragAndDropContribution,new k);class y{constructor(){}static getInstance(){return y.INSTANCE}hasData(S){return S&&S===this.proto}getData(S){if(this.hasData(S))return this.data}}e.LocalSelectionTransfer=y,y.INSTANCE=new y}),define(ne[341],se([1,0,197,171,107,22,340]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toExternalVSDataTransfer=e.toVSDataTransfer=void 0;function f(s){const i=new k.VSDataTransfer;for(const n of s.items){const t=n.type;if(n.kind==="string"){const a=new Promise(u=>n.getAsString(u));i.append(t,(0,k.createStringDataTransferItem)(a))}else if(n.kind==="file"){const a=n.getAsFile();a&&i.append(t,_(a))}}return i}e.toVSDataTransfer=f;function _(s){const i=s.path?D.URI.parse(s.path):void 0;return(0,k.createFileDataTransferItem)(s.name,i,()=>we(this,void 0,void 0,function*(){return new Uint8Array(yield s.arrayBuffer())}))}const g=Object.freeze([S.CodeDataTransfers.EDITORS,S.CodeDataTransfers.FILES,L.DataTransfers.RESOURCES,L.DataTransfers.INTERNAL_URI_LIST]);function C(s,i=!1){const n=f(s),t=n.get(L.DataTransfers.INTERNAL_URI_LIST);if(t)n.replace(y.Mimes.uriList,t);else if(i||!n.has(y.Mimes.uriList)){const a=[];for(const u of s.items){const h=u.getAsFile();if(h){const r=h.path;try{r?a.push(D.URI.file(r).toString()):a.push(D.URI.parse(h.name,!0).toString())}catch{}}}a.length&&n.replace(y.Mimes.uriList,(0,k.createStringDataTransferItem)(k.UriList.create(a)))}for(const a of g)n.delete(a);return n}e.toExternalVSDataTransfer=C}),define(ne[240],se([1,0,6,37]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Extensions=void 0,e.Extensions={JSONContribution:"base.contributions.json"};function y(f){return f.length>0&&f.charAt(f.length-1)==="#"?f.substring(0,f.length-1):f}class D{constructor(){this._onDidChangeSchema=new L.Emitter,this.schemasById={}}registerSchema(_,g){this.schemasById[y(_)]=g,this._onDidChangeSchema.fire(_)}notifySchemaChanged(_){this._onDidChangeSchema.fire(_)}}const S=new D;k.Registry.add(e.Extensions.JSONContribution,S)}),define(ne[98],se([1,0,14,6,20,721,28,240,37]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.validateProperty=e.getDefaultValue=e.overrideIdentifiersFromKey=e.OVERRIDE_PROPERTY_REGEX=e.OVERRIDE_PROPERTY_PATTERN=e.resourceLanguageSettingsSchemaId=e.resourceSettings=e.windowSettings=e.machineOverridableSettings=e.machineSettings=e.applicationSettings=e.allSettings=e.Extensions=void 0,e.Extensions={Configuration:"base.contributions.configuration"},e.allSettings={properties:{},patternProperties:{}},e.applicationSettings={properties:{},patternProperties:{}},e.machineSettings={properties:{},patternProperties:{}},e.machineOverridableSettings={properties:{},patternProperties:{}},e.windowSettings={properties:{},patternProperties:{}},e.resourceSettings={properties:{},patternProperties:{}},e.resourceLanguageSettingsSchemaId="vscode://schemas/settings/resourceLanguage";const g=_.Registry.as(f.Extensions.JSONContribution);class C{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new k.Emitter,this._onDidUpdateConfiguration=new k.Emitter,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:D.localize(0,null),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},g.registerSchema(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(r,c=!0){this.registerConfigurations([r],c)}registerConfigurations(r,c=!0){const o=new Set;this.doRegisterConfigurations(r,c,o),g.registerSchema(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o})}registerDefaultConfigurations(r){const c=new Set;this.doRegisterDefaultConfigurations(r,c),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:c,defaultsOverrides:!0})}doRegisterDefaultConfigurations(r,c){var o;const d=[];for(const{overrides:l,source:p}of r)for(const m in l)if(c.add(m),e.OVERRIDE_PROPERTY_REGEX.test(m)){const v=this.configurationDefaultsOverrides.get(m),b=(o=v?.valuesSources)!==null&&o!==void 0?o:new Map;if(p)for(const M of Object.keys(l[m]))b.set(M,p);const w=Object.assign(Object.assign({},v?.value||{}),l[m]);this.configurationDefaultsOverrides.set(m,{source:p,value:w,valuesSources:b});const E=(0,S.getLanguageTagSettingPlainKey)(m),I={type:"object",default:w,description:D.localize(1,null,E),$ref:e.resourceLanguageSettingsSchemaId,defaultDefaultValue:w,source:y.isString(p)?void 0:p,defaultValueSource:p};d.push(...n(m)),this.configurationProperties[m]=I,this.defaultLanguageConfigurationOverridesNode.properties[m]=I}else{this.configurationDefaultsOverrides.set(m,{value:l[m],source:p});const v=this.configurationProperties[m];v&&(this.updatePropertyDefaultValue(m,v),this.updateSchema(m,v))}this.doRegisterOverrideIdentifiers(d)}registerOverrideIdentifiers(r){this.doRegisterOverrideIdentifiers(r),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(r){for(const c of r)this.overrideIdentifiers.add(c);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(r,c,o){r.forEach(d=>{this.validateAndRegisterProperties(d,c,d.extensionInfo,d.restrictedProperties,void 0,o),this.configurationContributors.push(d),this.registerJSONConfiguration(d)})}validateAndRegisterProperties(r,c=!0,o,d,l=3,p){var m;l=y.isUndefinedOrNull(r.scope)?l:r.scope;const v=r.properties;if(v)for(const w in v){const E=v[w];if(c&&u(w,E)){delete v[w];continue}if(E.source=o,E.defaultDefaultValue=v[w].default,this.updatePropertyDefaultValue(w,E),e.OVERRIDE_PROPERTY_REGEX.test(w)?E.scope=void 0:(E.scope=y.isUndefinedOrNull(E.scope)?l:E.scope,E.restricted=y.isUndefinedOrNull(E.restricted)?!!d?.includes(w):E.restricted),v[w].hasOwnProperty("included")&&!v[w].included){this.excludedConfigurationProperties[w]=v[w],delete v[w];continue}else this.configurationProperties[w]=v[w],!((m=v[w].policy)===null||m===void 0)&&m.name&&this.policyConfigurations.set(v[w].policy.name,w);!v[w].deprecationMessage&&v[w].markdownDeprecationMessage&&(v[w].deprecationMessage=v[w].markdownDeprecationMessage),p.add(w)}const b=r.allOf;if(b)for(const w of b)this.validateAndRegisterProperties(w,c,o,d,l,p)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(r){const c=o=>{const d=o.properties;if(d)for(const p in d)this.updateSchema(p,d[p]);const l=o.allOf;l?.forEach(c)};c(r)}updateSchema(r,c){switch(e.allSettings.properties[r]=c,c.scope){case 1:e.applicationSettings.properties[r]=c;break;case 2:e.machineSettings.properties[r]=c;break;case 6:e.machineOverridableSettings.properties[r]=c;break;case 3:e.windowSettings.properties[r]=c;break;case 4:e.resourceSettings.properties[r]=c;break;case 5:e.resourceSettings.properties[r]=c,this.resourceLanguageSettingsSchema.properties[r]=c;break}}updateOverridePropertyPatternKey(){for(const r of this.overrideIdentifiers.values()){const c=`[${r}]`,o={type:"object",description:D.localize(2,null),errorMessage:D.localize(3,null),$ref:e.resourceLanguageSettingsSchemaId};this.updatePropertyDefaultValue(c,o),e.allSettings.properties[c]=o,e.applicationSettings.properties[c]=o,e.machineSettings.properties[c]=o,e.machineOverridableSettings.properties[c]=o,e.windowSettings.properties[c]=o,e.resourceSettings.properties[c]=o}}registerOverridePropertyPatternKey(){const r={type:"object",description:D.localize(4,null),errorMessage:D.localize(5,null),$ref:e.resourceLanguageSettingsSchemaId};e.allSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.applicationSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.machineSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.machineOverridableSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.windowSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.resourceSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(r,c){const o=this.configurationDefaultsOverrides.get(r);let d=o?.value,l=o?.source;y.isUndefined(d)&&(d=c.defaultDefaultValue,l=void 0),y.isUndefined(d)&&(d=t(c.type)),c.default=d,c.defaultValueSource=l}}const s="\\[([^\\]]+)\\]",i=new RegExp(s,"g");e.OVERRIDE_PROPERTY_PATTERN=`^(${s})+$`,e.OVERRIDE_PROPERTY_REGEX=new RegExp(e.OVERRIDE_PROPERTY_PATTERN);function n(h){const r=[];if(e.OVERRIDE_PROPERTY_REGEX.test(h)){let c=i.exec(h);for(;c?.length;){const o=c[1].trim();o&&r.push(o),c=i.exec(h)}}return(0,L.distinct)(r)}e.overrideIdentifiersFromKey=n;function t(h){switch(Array.isArray(h)?h[0]:h){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}e.getDefaultValue=t;const a=new C;_.Registry.add(e.Extensions.Configuration,a);function u(h,r){var c,o,d,l;return h.trim()?e.OVERRIDE_PROPERTY_REGEX.test(h)?D.localize(7,null,h):a.getConfigurationProperties()[h]!==void 0?D.localize(8,null,h):!((c=r.policy)===null||c===void 0)&&c.name&&a.getPolicyConfigurations().get((o=r.policy)===null||o===void 0?void 0:o.name)!==void 0?D.localize(9,null,h,(d=r.policy)===null||d===void 0?void 0:d.name,a.getPolicyConfigurations().get((l=r.policy)===null||l===void 0?void 0:l.name)):null:D.localize(6,null)}e.validateProperty=u}),define(ne[241],se([1,0,271,36,175,618,98,37]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isDiffEditorConfigurationKey=e.isEditorConfigurationKey=e.editorConfigurationBaseNode=void 0,e.editorConfigurationBaseNode=Object.freeze({id:"editor",order:5,type:"object",title:D.localize(0,null),scope:5});const _=Object.assign(Object.assign({},e.editorConfigurationBaseNode),{properties:{"editor.tabSize":{type:"number",default:y.EDITOR_MODEL_DEFAULTS.tabSize,minimum:1,markdownDescription:D.localize(1,null,"`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:D.localize(2,null)},"editor.insertSpaces":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.insertSpaces,markdownDescription:D.localize(3,null,"`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.detectIndentation,markdownDescription:D.localize(4,null,"`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,description:D.localize(5,null)},"editor.largeFileOptimizations":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,description:D.localize(6,null)},"editor.wordBasedSuggestions":{type:"boolean",default:!0,description:D.localize(7,null)},"editor.wordBasedSuggestionsMode":{enum:["currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[D.localize(8,null),D.localize(9,null),D.localize(10,null)],description:D.localize(11,null)},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[D.localize(12,null),D.localize(13,null),D.localize(14,null)],default:"configuredByTheme",description:D.localize(15,null)},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:D.localize(16,null)},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:D.localize(17,null)},"editor.experimental.asyncTokenization":{type:"boolean",default:!1,description:D.localize(18,null),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:D.localize(19,null)},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:D.localize(20,null),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:D.localize(21,null),items:{type:"array",items:[{type:"string",description:D.localize(22,null)},{type:"string",description:D.localize(23,null)}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:D.localize(24,null),items:{type:"array",items:[{type:"string",description:D.localize(25,null)},{type:"string",description:D.localize(26,null)}]}},"diffEditor.maxComputationTime":{type:"number",default:L.diffEditorDefaultOptions.maxComputationTime,description:D.localize(27,null)},"diffEditor.maxFileSize":{type:"number",default:L.diffEditorDefaultOptions.maxFileSize,description:D.localize(28,null)},"diffEditor.renderSideBySide":{type:"boolean",default:L.diffEditorDefaultOptions.renderSideBySide,description:D.localize(29,null)},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:L.diffEditorDefaultOptions.renderSideBySideInlineBreakpoint,description:D.localize(30,null)},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:L.diffEditorDefaultOptions.useInlineViewWhenSpaceIsLimited,description:D.localize(31,null)},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:L.diffEditorDefaultOptions.renderMarginRevertIcon,description:D.localize(32,null)},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:L.diffEditorDefaultOptions.ignoreTrimWhitespace,description:D.localize(33,null)},"diffEditor.renderIndicators":{type:"boolean",default:L.diffEditorDefaultOptions.renderIndicators,description:D.localize(34,null)},"diffEditor.codeLens":{type:"boolean",default:L.diffEditorDefaultOptions.diffCodeLens,description:D.localize(35,null)},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:L.diffEditorDefaultOptions.diffWordWrap,markdownEnumDescriptions:[D.localize(36,null),D.localize(37,null),D.localize(38,null,"`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:L.diffEditorDefaultOptions.diffAlgorithm,markdownEnumDescriptions:[D.localize(39,null),D.localize(40,null)],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:L.diffEditorDefaultOptions.hideUnchangedRegions.enabled,markdownDescription:D.localize(41,null,"`#diffEditor.experimental.useVersion2#`")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.revealLineCount,markdownDescription:D.localize(42,null,"`#diffEditor.experimental.useVersion2#`"),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.minimumLineCount,markdownDescription:D.localize(43,null,"`#diffEditor.experimental.useVersion2#`"),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.contextLineCount,markdownDescription:D.localize(44,null,"`#diffEditor.experimental.useVersion2#`"),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:L.diffEditorDefaultOptions.experimental.showMoves,markdownDescription:D.localize(45,null,"`#diffEditor.experimental.useVersion2#`")},"diffEditor.experimental.useVersion2":{type:"boolean",default:!0,description:D.localize(46,null),tags:["experimental"]},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:L.diffEditorDefaultOptions.experimental.showEmptyDecorations,description:D.localize(47,null)}}});function g(a){return typeof a.type<"u"||typeof a.anyOf<"u"}for(const a of k.editorOptionsRegistry){const u=a.schema;if(typeof u<"u")if(g(u))_.properties[`editor.${a.name}`]=u;else for(const h in u)Object.hasOwnProperty.call(u,h)&&(_.properties[h]=u[h])}let C=null;function s(){return C===null&&(C=Object.create(null),Object.keys(_.properties).forEach(a=>{C[a]=!0})),C}function i(a){return s()[`editor.${a}`]||!1}e.isEditorConfigurationKey=i;function n(a){return s()[`diffEditor.${a}`]||!1}e.isDiffEditorConfigurationKey=n,f.Registry.as(S.Extensions.Configuration).registerConfiguration(_)}),define(ne[78],se([1,0,628,6,37,107,98]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PLAINTEXT_EXTENSION=e.PLAINTEXT_LANGUAGE_ID=e.ModesRegistry=e.EditorModesRegistry=e.Extensions=void 0,e.Extensions={ModesRegistry:"editor.modesRegistry"};class f{constructor(){this._onDidChangeLanguages=new k.Emitter,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(g){return this._languages.push(g),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let C=0,s=this._languages.length;C{const W=O.change.keys.some(j=>F.has(j)),U=O.change.overrides.filter(([j,R])=>R.some(K=>F.has(K))).map(([j])=>j);if(W)this.configurations.clear(),this.onDidChangeEmitter.fire(new c(void 0));else for(const j of U)this.languageService.isRegisteredLanguageId(j)&&(this.configurations.delete(j),this.onDidChangeEmitter.fire(new c(j)))})),this._register(this._registry.onDidChange(O=>{this.configurations.delete(O.languageId),this.onDidChangeEmitter.fire(new c(O.languageId))}))}register(A,N,F){return this._registry.register(A,N,F)}getLanguageConfiguration(A){let N=this.configurations.get(A);return N||(N=d(A,this._registry,this.configurationService,this.languageService),this.configurations.set(A,N)),N}};e.LanguageConfigurationService=o,e.LanguageConfigurationService=o=ke([fe(0,t.IConfigurationService),fe(1,a.ILanguageService)],o);function d(T,A,N,F){let O=A.getLanguageConfiguration(T);if(!O){if(!F.isRegisteredLanguageId(T))return new x(T,{});O=new x(T,{})}const W=p(O.languageId,N),U=E([O.underlyingConfig,W]);return new x(O.languageId,U)}const l={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function p(T,A){const N=A.getValue(l.brackets,{overrideIdentifier:T}),F=A.getValue(l.colorizedBracketPairs,{overrideIdentifier:T});return{brackets:m(N),colorizedBracketPairs:m(F)}}function m(T){if(Array.isArray(T))return T.map(A=>{if(!(!Array.isArray(A)||A.length!==2))return[A[0],A[1]]}).filter(A=>!!A)}function v(T,A,N){const F=T.getLineContent(A);let O=y.getLeadingWhitespace(F);return O.length>N-1&&(O=O.substring(0,N-1)),O}e.getIndentationAtPosition=v;function b(T,A,N){T.tokenization.forceTokenization(A);const F=T.tokenization.getLineTokens(A),O=typeof N>"u"?T.getLineMaxColumn(A)-1:N-1;return(0,f.createScopedLineTokens)(F,O)}e.getScopedLineTokens=b;class w{constructor(A){this.languageId=A,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(A,N){const F=new I(A,N,++this._order);return this._entries.push(F),this._resolved=null,(0,k.toDisposable)(()=>{for(let O=0;OA.configuration)))}}function E(T){let A={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const N of T)A={comments:N.comments||A.comments,brackets:N.brackets||A.brackets,wordPattern:N.wordPattern||A.wordPattern,indentationRules:N.indentationRules||A.indentationRules,onEnterRules:N.onEnterRules||A.onEnterRules,autoClosingPairs:N.autoClosingPairs||A.autoClosingPairs,surroundingPairs:N.surroundingPairs||A.surroundingPairs,autoCloseBefore:N.autoCloseBefore||A.autoCloseBefore,folding:N.folding||A.folding,colorizedBracketPairs:N.colorizedBracketPairs||A.colorizedBracketPairs,__electricCharacterSupport:N.__electricCharacterSupport||A.__electricCharacterSupport};return A}class I{constructor(A,N,F){this.configuration=A,this.priority=N,this.order=F}static cmp(A,N){return A.priority===N.priority?A.order-N.order:A.priority-N.priority}}class M{constructor(A){this.languageId=A}}e.LanguageConfigurationChangeEvent=M;class P extends k.Disposable{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._register(this.register(h.PLAINTEXT_LANGUAGE_ID,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(A,N,F=0){let O=this._entries.get(A);O||(O=new w(A),this._entries.set(A,O));const W=O.register(N,F);return this._onDidChange.fire(new M(A)),(0,k.toDisposable)(()=>{W.dispose(),this._onDidChange.fire(new M(A))})}getLanguageConfiguration(A){const N=this._entries.get(A);return N?.getResolvedConfiguration()||null}}e.LanguageConfigurationRegistry=P;class x{constructor(A,N){this.languageId=A,this.underlyingConfig=N,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new s.OnEnterSupport(this.underlyingConfig):null,this.comments=x._handleComments(this.underlyingConfig),this.characterPair=new _.CharacterPairSupport(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||D.DEFAULT_WORD_REGEXP,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new C.IndentRulesSupport(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new r.LanguageBracketsConfiguration(A,this.underlyingConfig)}getWordDefinition(){return(0,D.ensureValidWordDefinition)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new i.RichEditBrackets(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new g.BracketElectricCharacterSupport(this.brackets)),this._electricCharacter}onEnter(A,N,F,O){return this._onEnterSupport?this._onEnterSupport.onEnter(A,N,F,O):null}getAutoClosingPairs(){return new S.AutoClosingPairs(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(A){return this.characterPair.getAutoCloseBeforeSet(A)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(A){const N=A.comments;if(!N)return null;const F={};if(N.lineComment&&(F.lineCommentToken=N.lineComment),N.blockComment){const[O,W]=N.blockComment;F.blockCommentStartToken=O,F.blockCommentEndToken=W}return F}}e.ResolvedLanguageConfiguration=x,(0,u.registerSingleton)(e.ILanguageConfigurationService,o,1)}),define(ne[242],se([1,0,13,2,317,587,5,32,627,51,187,14,70,58,9,18,109,66]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorWorkerClient=e.EditorWorkerHost=e.EditorWorkerService=void 0;const r=60*1e3,c=5*60*1e3;function o(E,I){const M=E.getModel(I);return!(!M||M.isTooLargeForSyncing())}let d=class extends k.Disposable{constructor(I,M,P,x,T){super(),this._modelService=I,this._workerManager=this._register(new p(this._modelService,x)),this._logService=P,this._register(T.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:(A,N)=>o(this._modelService,A.uri)?this._workerManager.withWorker().then(F=>F.computeLinks(A.uri)).then(F=>F&&{links:F}):Promise.resolve({links:[]})})),this._register(T.completionProvider.register("*",new l(this._workerManager,M,this._modelService,x)))}dispose(){super.dispose()}canComputeUnicodeHighlights(I){return o(this._modelService,I)}computedUnicodeHighlights(I,M,P){return this._workerManager.withWorker().then(x=>x.computedUnicodeHighlights(I,M,P))}computeDiff(I,M,P,x){return we(this,void 0,void 0,function*(){const T=yield this._workerManager.withWorker().then(F=>F.computeDiff(I,M,P,x));if(!T)return null;return{identical:T.identical,quitEarly:T.quitEarly,changes:N(T.changes),moves:T.moves.map(F=>new u.MovedText(new u.SimpleLineRangeMapping(new h.LineRange(F[0],F[1]),new h.LineRange(F[2],F[3])),N(F[4])))};function N(F){return F.map(O=>{var W;return new u.LineRangeMapping(new h.LineRange(O[0],O[1]),new h.LineRange(O[2],O[3]),(W=O[4])===null||W===void 0?void 0:W.map(U=>new u.RangeMapping(new S.Range(U[0],U[1],U[2],U[3]),new S.Range(U[4],U[5],U[6],U[7]))))})}})}computeMoreMinimalEdits(I,M,P=!1){if((0,s.isNonEmptyArray)(M)){if(!o(this._modelService,I))return Promise.resolve(M);const x=n.StopWatch.create(),T=this._workerManager.withWorker().then(A=>A.computeMoreMinimalEdits(I,M,P));return T.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",I.toString(!0),x.elapsed())),Promise.race([T,(0,L.timeout)(1e3).then(()=>M)])}else return Promise.resolve(void 0)}canNavigateValueSet(I){return o(this._modelService,I)}navigateValueSet(I,M,P){return this._workerManager.withWorker().then(x=>x.navigateValueSet(I,M,P))}canComputeWordRanges(I){return o(this._modelService,I)}computeWordRanges(I,M){return this._workerManager.withWorker().then(P=>P.computeWordRanges(I,M))}};e.EditorWorkerService=d,e.EditorWorkerService=d=ke([fe(0,g.IModelService),fe(1,C.ITextResourceConfigurationService),fe(2,i.ILogService),fe(3,f.ILanguageConfigurationService),fe(4,a.ILanguageFeaturesService)],d);class l{constructor(I,M,P,x){this.languageConfigurationService=x,this._debugDisplayName="wordbasedCompletions",this._workerManager=I,this._configurationService=M,this._modelService=P}provideCompletionItems(I,M){return we(this,void 0,void 0,function*(){const P=this._configurationService.getValue(I.uri,M,"editor");if(!P.wordBasedSuggestions)return;const x=[];if(P.wordBasedSuggestionsMode==="currentDocument")o(this._modelService,I.uri)&&x.push(I.uri);else for(const U of this._modelService.getModels())o(this._modelService,U.uri)&&(U===I?x.unshift(U.uri):(P.wordBasedSuggestionsMode==="allDocuments"||U.getLanguageId()===I.getLanguageId())&&x.push(U.uri));if(x.length===0)return;const T=this.languageConfigurationService.getLanguageConfiguration(I.getLanguageId()).getWordDefinition(),A=I.getWordAtPosition(M),N=A?new S.Range(M.lineNumber,A.startColumn,M.lineNumber,A.endColumn):S.Range.fromPositions(M),F=N.setEndPosition(M.lineNumber,M.column),W=yield(yield this._workerManager.withWorker()).textualSuggest(x,A?.word,T);if(W)return{duration:W.duration,suggestions:W.words.map(U=>({kind:18,label:U,insertText:U,range:{insert:F,replace:N}}))}})}}class p extends k.Disposable{constructor(I,M){super(),this.languageConfigurationService=M,this._modelService=I,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new L.IntervalTimer).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(c/2)),this._register(this._modelService.onModelRemoved(x=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>c&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new w(this._modelService,!1,"editorWorkerService",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class m extends k.Disposable{constructor(I,M,P){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=I,this._modelService=M,!P){const x=new L.IntervalTimer;x.cancelAndSet(()=>this._checkStopModelSync(),Math.round(r/2)),this._register(x)}}dispose(){for(const I in this._syncedModels)(0,k.dispose)(this._syncedModels[I]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(I,M){for(const P of I){const x=P.toString();this._syncedModels[x]||this._beginModelSync(P,M),this._syncedModels[x]&&(this._syncedModelsLastUsedTime[x]=new Date().getTime())}}_checkStopModelSync(){const I=new Date().getTime(),M=[];for(const P in this._syncedModelsLastUsedTime)I-this._syncedModelsLastUsedTime[P]>r&&M.push(P);for(const P of M)this._stopModelSync(P)}_beginModelSync(I,M){const P=this._modelService.getModel(I);if(!P||!M&&P.isTooLargeForSyncing())return;const x=I.toString();this._proxy.acceptNewModel({url:P.uri.toString(),lines:P.getLinesContent(),EOL:P.getEOL(),versionId:P.getVersionId()});const T=new k.DisposableStore;T.add(P.onDidChangeContent(A=>{this._proxy.acceptModelChanged(x.toString(),A)})),T.add(P.onWillDispose(()=>{this._stopModelSync(x)})),T.add((0,k.toDisposable)(()=>{this._proxy.acceptRemovedModel(x)})),this._syncedModels[x]=T}_stopModelSync(I){const M=this._syncedModels[I];delete this._syncedModels[I],delete this._syncedModelsLastUsedTime[I],(0,k.dispose)(M)}}class v{constructor(I){this._instance=I,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class b{constructor(I){this._workerClient=I}fhr(I,M){return this._workerClient.fhr(I,M)}}e.EditorWorkerHost=b;class w extends k.Disposable{constructor(I,M,P,x){super(),this.languageConfigurationService=x,this._disposed=!1,this._modelService=I,this._keepIdleModels=M,this._workerFactory=new D.DefaultWorkerFactory(P),this._worker=null,this._modelManager=null}fhr(I,M){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new y.SimpleWorkerClient(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new b(this)))}catch(I){(0,y.logOnceWebWorkerWarning)(I),this._worker=new v(new _.EditorSimpleWorker(new b(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,I=>((0,y.logOnceWebWorkerWarning)(I),this._worker=new v(new _.EditorSimpleWorker(new b(this),null)),this._getOrCreateWorker().getProxyObject()))}_getOrCreateModelManager(I){return this._modelManager||(this._modelManager=this._register(new m(I,this._modelService,this._keepIdleModels))),this._modelManager}_withSyncedResources(I,M=!1){return we(this,void 0,void 0,function*(){return this._disposed?Promise.reject((0,t.canceled)()):this._getProxy().then(P=>(this._getOrCreateModelManager(P).ensureSyncedResources(I,M),P))})}computedUnicodeHighlights(I,M,P){return this._withSyncedResources([I]).then(x=>x.computeUnicodeHighlights(I.toString(),M,P))}computeDiff(I,M,P,x){return this._withSyncedResources([I,M],!0).then(T=>T.computeDiff(I.toString(),M.toString(),P,x))}computeMoreMinimalEdits(I,M,P){return this._withSyncedResources([I]).then(x=>x.computeMoreMinimalEdits(I.toString(),M,P))}computeLinks(I){return this._withSyncedResources([I]).then(M=>M.computeLinks(I.toString()))}computeDefaultDocumentColors(I){return this._withSyncedResources([I]).then(M=>M.computeDefaultDocumentColors(I.toString()))}textualSuggest(I,M,P){return we(this,void 0,void 0,function*(){const x=yield this._withSyncedResources(I),T=P.source,A=P.flags;return x.textualSuggest(I.map(N=>N.toString()),M,T,A)})}computeWordRanges(I,M){return this._withSyncedResources([I]).then(P=>{const x=this._modelService.getModel(I);if(!x)return Promise.resolve(null);const T=this.languageConfigurationService.getLanguageConfiguration(x.getLanguageId()).getWordDefinition(),A=T.source,N=T.flags;return P.computeWordRanges(I.toString(),M,A,N)})}navigateValueSet(I,M,P){return this._withSyncedResources([I]).then(x=>{const T=this._modelService.getModel(I);if(!T)return null;const A=this.languageConfigurationService.getLanguageConfiguration(T.getLanguageId()).getWordDefinition(),N=A.source,F=A.flags;return x.navigateValueSet(I.toString(),M,P,N,F)})}dispose(){super.dispose(),this._disposed=!0}}e.EditorWorkerClient=w}),define(ne[773],se([1,0,47,242]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createWebWorker=void 0;function y(S,f,_){return new D(S,f,_)}e.createWebWorker=y;class D extends k.EditorWorkerClient{constructor(f,_,g){super(f,g.keepIdleModels||!1,g.label,_),this._foreignModuleId=g.moduleId,this._foreignModuleCreateData=g.createData||null,this._foreignModuleHost=g.host||null,this._foreignProxy=null}fhr(f,_){if(!this._foreignModuleHost||typeof this._foreignModuleHost[f]!="function")return Promise.reject(new Error("Missing method "+f+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[f].apply(this._foreignModuleHost,_))}catch(g){return Promise.reject(g)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(f=>{const _=this._foreignModuleHost?(0,L.getAllMethodNames)(this._foreignModuleHost):[];return f.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,_).then(g=>{this._foreignModuleCreateData=null;const C=(n,t)=>f.fmr(n,t),s=(n,t)=>function(){const a=Array.prototype.slice.call(arguments,0);return t(n,a)},i={};for(const n of g)i[n]=s(n,C);return i})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(f){return this._withSyncedResources(f).then(_=>this.getProxy())}}}),define(ne[243],se([1,0,11,110,125,32]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getIndentMetadata=e.getIndentActionForType=e.getIndentForEnter=e.getGoodIndentForLine=e.getInheritIndentForLine=void 0;function S(i,n,t){const a=i.tokenization.getLanguageIdAtPosition(n,0);if(n>1){let u,h=-1;for(u=n-1;u>=1;u--){if(i.tokenization.getLanguageIdAtPosition(u,0)!==a)return h;const r=i.getLineContent(u);if(t.shouldIgnore(r)||/^\s+$/.test(r)||r===""){h=u;continue}return u}}return-1}function f(i,n,t,a=!0,u){if(i<4)return null;const h=u.getLanguageConfiguration(n.tokenization.getLanguageId()).indentRulesSupport;if(!h)return null;if(t<=1)return{indentation:"",action:null};for(let o=t-1;o>0&&n.getLineContent(o)==="";o--)if(o===1)return{indentation:"",action:null};const r=S(n,t,h);if(r<0)return null;if(r<1)return{indentation:"",action:null};const c=n.getLineContent(r);if(h.shouldIncrease(c)||h.shouldIndentNextLine(c))return{indentation:L.getLeadingWhitespace(c),action:k.IndentAction.Indent,line:r};if(h.shouldDecrease(c))return{indentation:L.getLeadingWhitespace(c),action:null,line:r};{if(r===1)return{indentation:L.getLeadingWhitespace(n.getLineContent(r)),action:null,line:r};const o=r-1,d=h.getIndentMetadata(n.getLineContent(o));if(!(d&3)&&d&4){let l=0;for(let p=o-1;p>0;p--)if(!h.shouldIndentNextLine(n.getLineContent(p))){l=p;break}return{indentation:L.getLeadingWhitespace(n.getLineContent(l+1)),action:null,line:l+1}}if(a)return{indentation:L.getLeadingWhitespace(n.getLineContent(r)),action:null,line:r};for(let l=r;l>0;l--){const p=n.getLineContent(l);if(h.shouldIncrease(p))return{indentation:L.getLeadingWhitespace(p),action:k.IndentAction.Indent,line:l};if(h.shouldIndentNextLine(p)){let m=0;for(let v=l-1;v>0;v--)if(!h.shouldIndentNextLine(n.getLineContent(l))){m=v;break}return{indentation:L.getLeadingWhitespace(n.getLineContent(m+1)),action:null,line:m+1}}else if(h.shouldDecrease(p))return{indentation:L.getLeadingWhitespace(p),action:null,line:l}}return{indentation:L.getLeadingWhitespace(n.getLineContent(1)),action:null,line:1}}}e.getInheritIndentForLine=f;function _(i,n,t,a,u,h){if(i<4)return null;const r=h.getLanguageConfiguration(t);if(!r)return null;const c=h.getLanguageConfiguration(t).indentRulesSupport;if(!c)return null;const o=f(i,n,a,void 0,h),d=n.getLineContent(a);if(o){const l=o.line;if(l!==void 0){let p=!0;for(let m=l;m0&&h.getLanguageId(0)!==r.languageId?(o=!0,d=c.substr(0,t.startColumn-1-r.firstCharOffset)):d=h.getLineContent().substring(0,t.startColumn-1);let l;t.isEmpty()?l=c.substr(t.startColumn-1-r.firstCharOffset):l=(0,D.getScopedLineTokens)(n,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-r.firstCharOffset);const p=u.getLanguageConfiguration(r.languageId).indentRulesSupport;if(!p)return null;const m=d,v=L.getLeadingWhitespace(d),b={tokenization:{getLineTokens:M=>n.tokenization.getLineTokens(M),getLanguageId:()=>n.getLanguageId(),getLanguageIdAtPosition:(M,P)=>n.getLanguageIdAtPosition(M,P)},getLineContent:M=>M===t.startLineNumber?m:n.getLineContent(M)},w=L.getLeadingWhitespace(h.getLineContent()),E=f(i,b,t.startLineNumber+1,void 0,u);if(!E){const M=o?w:v;return{beforeEnter:M,afterEnter:M}}let I=o?w:E.indentation;return E.action===k.IndentAction.Indent&&(I=a.shiftIndent(I)),p.shouldDecrease(l)&&(I=a.unshiftIndent(I)),{beforeEnter:o?w:v,afterEnter:I}}e.getIndentForEnter=g;function C(i,n,t,a,u,h){if(i<4)return null;const r=(0,D.getScopedLineTokens)(n,t.startLineNumber,t.startColumn);if(r.firstCharOffset)return null;const c=h.getLanguageConfiguration(r.languageId).indentRulesSupport;if(!c)return null;const o=r.getLineContent(),d=o.substr(0,t.startColumn-1-r.firstCharOffset);let l;if(t.isEmpty()?l=o.substr(t.startColumn-1-r.firstCharOffset):l=(0,D.getScopedLineTokens)(n,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-r.firstCharOffset),!c.shouldDecrease(d+l)&&c.shouldDecrease(d+a+l)){const p=f(i,n,t.startLineNumber,!1,h);if(!p)return null;let m=p.indentation;return p.action!==k.IndentAction.Indent&&(m=u.unshiftIndent(m)),m}return null}e.getIndentActionForType=C;function s(i,n,t){const a=t.getLanguageConfiguration(i.getLanguageId()).indentRulesSupport;return!a||n<1||n>i.getLineCount()?null:a.getIndentMetadata(i.getLineContent(n))}e.getIndentMetadata=s}),define(ne[244],se([1,0,110,32]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEnterAction=void 0;function y(D,S,f,_){const g=(0,k.getScopedLineTokens)(S,f.startLineNumber,f.startColumn),C=_.getLanguageConfiguration(g.languageId);if(!C)return null;const s=g.getLineContent(),i=s.substr(0,f.startColumn-1-g.firstCharOffset);let n;f.isEmpty()?n=s.substr(f.startColumn-1-g.firstCharOffset):n=(0,k.getScopedLineTokens)(S,f.endLineNumber,f.endColumn).getLineContent().substr(f.endColumn-1-g.firstCharOffset);let t="";if(f.startLineNumber>1&&g.firstCharOffset===0){const o=(0,k.getScopedLineTokens)(S,f.startLineNumber-1);o.languageId===g.languageId&&(t=o.getLineContent())}const a=C.onEnter(D,t,i,n);if(!a)return null;const u=a.indentAction;let h=a.appendText;const r=a.removeText||0;h?u===L.IndentAction.Indent&&(h=" "+h):u===L.IndentAction.Indent||u===L.IndentAction.IndentOutdent?h=" ":h="";let c=(0,k.getIndentationAtPosition)(S,f.startLineNumber,f.startColumn);return r&&(c=c.substring(0,c.length-r)),{indentAction:u,appendText:h,removeText:r,indentation:c}}e.getEnterAction=y}),define(ne[245],se([1,0,11,82,5,24,244,32]),function(Q,e,L,k,y,D,S,f){"use strict";var _;Object.defineProperty(e,"__esModule",{value:!0}),e.ShiftCommand=void 0;const g=Object.create(null);function C(i,n){if(n<=0)return"";g[i]||(g[i]=["",i]);const t=g[i];for(let a=t.length;a<=n;a++)t[a]=t[a-1]+i;return t[n]}let s=_=class{static unshiftIndent(n,t,a,u,h){const r=k.CursorColumns.visibleColumnFromColumn(n,t,a);if(h){const c=C(" ",u),d=k.CursorColumns.prevIndentTabStop(r,u)/u;return C(c,d)}else{const c=" ",d=k.CursorColumns.prevRenderTabStop(r,a)/a;return C(c,d)}}static shiftIndent(n,t,a,u,h){const r=k.CursorColumns.visibleColumnFromColumn(n,t,a);if(h){const c=C(" ",u),d=k.CursorColumns.nextIndentTabStop(r,u)/u;return C(c,d)}else{const c=" ",d=k.CursorColumns.nextRenderTabStop(r,a)/a;return C(c,d)}}constructor(n,t,a){this._languageConfigurationService=a,this._opts=t,this._selection=n,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(n,t,a){this._useLastEditRangeForCursorEndPosition?n.addTrackedEditOperation(t,a):n.addEditOperation(t,a)}getEditOperations(n,t){const a=this._selection.startLineNumber;let u=this._selection.endLineNumber;this._selection.endColumn===1&&a!==u&&(u=u-1);const{tabSize:h,indentSize:r,insertSpaces:c}=this._opts,o=a===u;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(n.getLineContent(a))&&(this._useLastEditRangeForCursorEndPosition=!0);let d=0,l=0;for(let p=a;p<=u;p++,d=l){l=0;const m=n.getLineContent(p);let v=L.firstNonWhitespaceIndex(m);if(this._opts.isUnshift&&(m.length===0||v===0)||!o&&!this._opts.isUnshift&&m.length===0)continue;if(v===-1&&(v=m.length),p>1&&k.CursorColumns.visibleColumnFromColumn(m,v+1,h)%r!==0&&n.tokenization.isCheapToTokenize(p-1)){const E=(0,S.getEnterAction)(this._opts.autoIndent,n,new y.Range(p-1,n.getLineMaxColumn(p-1),p-1,n.getLineMaxColumn(p-1)),this._languageConfigurationService);if(E){if(l=d,E.appendText)for(let I=0,M=E.appendText.length;I1){let M;for(M=b-1;M>=1;M--){const T=v.getLineContent(M);if(k.lastNonWhitespaceIndex(T)>=0)break}if(M<1)return null;const P=v.getLineMaxColumn(M),x=(0,a.getEnterAction)(m.autoIndent,v,new g.Range(M,P,M,P),m.languageConfigurationService);x&&(E=x.indentation+x.appendText)}return w&&(w===s.IndentAction.Indent&&(E=u.shiftIndent(m,E)),w===s.IndentAction.Outdent&&(E=u.unshiftIndent(m,E)),E=m.normalizeIndentation(E)),E||null}static _replaceJumpToNextIndent(m,v,b,w){let E="";const I=b.getStartPosition();if(m.insertSpaces){const M=m.visibleColumnFromColumn(v,I),P=m.indentSize,x=P-M%P;for(let T=0;Tthis._compositionType(b,T,E,I,M,P));return new f.EditOperationResult(4,x,{shouldPushStackElementBefore:o(m,4),shouldPushStackElementAfter:!1})}static _compositionType(m,v,b,w,E,I){if(!v.isEmpty())return null;const M=v.getPosition(),P=Math.max(1,M.column-w),x=Math.min(m.getLineMaxColumn(M.lineNumber),M.column+E),T=new g.Range(M.lineNumber,P,M.lineNumber,x);return m.getValueInRange(T)===b&&I===0?null:new y.ReplaceCommandWithOffsetCursorState(T,b,0,I)}static _typeCommand(m,v,b){return b?new y.ReplaceCommandWithoutChangingPosition(m,v,!0):new y.ReplaceCommand(m,v,!0)}static _enter(m,v,b,w){if(m.autoIndent===0)return u._typeCommand(w,` -`,b);if(!v.tokenization.isCheapToTokenize(w.getStartPosition().lineNumber)||m.autoIndent===1){const P=v.getLineContent(w.startLineNumber),x=k.getLeadingWhitespace(P).substring(0,w.startColumn-1);return u._typeCommand(w,` -`+m.normalizeIndentation(x),b)}const E=(0,a.getEnterAction)(m.autoIndent,v,w,m.languageConfigurationService);if(E){if(E.indentAction===s.IndentAction.None)return u._typeCommand(w,` -`+m.normalizeIndentation(E.indentation+E.appendText),b);if(E.indentAction===s.IndentAction.Indent)return u._typeCommand(w,` -`+m.normalizeIndentation(E.indentation+E.appendText),b);if(E.indentAction===s.IndentAction.IndentOutdent){const P=m.normalizeIndentation(E.indentation),x=m.normalizeIndentation(E.indentation+E.appendText),T=` -`+x+` -`+P;return b?new y.ReplaceCommandWithoutChangingPosition(w,T,!0):new y.ReplaceCommandWithOffsetCursorState(w,T,-1,x.length-P.length,!0)}else if(E.indentAction===s.IndentAction.Outdent){const P=u.unshiftIndent(m,E.indentation);return u._typeCommand(w,` -`+m.normalizeIndentation(P+E.appendText),b)}}const I=v.getLineContent(w.startLineNumber),M=k.getLeadingWhitespace(I).substring(0,w.startColumn-1);if(m.autoIndent>=4){const P=(0,t.getIndentForEnter)(m.autoIndent,v,w,{unshiftIndent:x=>u.unshiftIndent(m,x),shiftIndent:x=>u.shiftIndent(m,x),normalizeIndentation:x=>m.normalizeIndentation(x)},m.languageConfigurationService);if(P){let x=m.visibleColumnFromColumn(v,w.getEndPosition());const T=w.endColumn,A=v.getLineContent(w.endLineNumber),N=k.firstNonWhitespaceIndex(A);if(N>=0?w=w.setEndPosition(w.endLineNumber,Math.max(w.endColumn,N+1)):w=w.setEndPosition(w.endLineNumber,v.getLineMaxColumn(w.endLineNumber)),b)return new y.ReplaceCommandWithoutChangingPosition(w,` -`+m.normalizeIndentation(P.afterEnter),!0);{let F=0;return T<=N+1&&(m.insertSpaces||(x=Math.ceil(x/m.indentSize)),F=Math.min(x+1-m.normalizeIndentation(P.afterEnter).length-1,0)),new y.ReplaceCommandWithOffsetCursorState(w,` -`+m.normalizeIndentation(P.afterEnter),0,F,!0)}}}return u._typeCommand(w,` -`+m.normalizeIndentation(M),b)}static _isAutoIndentType(m,v,b){if(m.autoIndent<4)return!1;for(let w=0,E=b.length;wu.shiftIndent(m,M),unshiftIndent:M=>u.unshiftIndent(m,M)},m.languageConfigurationService);if(I===null)return null;if(I!==m.normalizeIndentation(E)){const M=v.getLineFirstNonWhitespaceColumn(b.startLineNumber);return M===0?u._typeCommand(new g.Range(b.startLineNumber,1,b.endLineNumber,b.endColumn),m.normalizeIndentation(I)+w,!1):u._typeCommand(new g.Range(b.startLineNumber,1,b.endLineNumber,b.endColumn),m.normalizeIndentation(I)+v.getLineContent(b.startLineNumber).substring(M-1,b.startColumn-1)+w,!1)}return null}static _isAutoClosingOvertype(m,v,b,w,E){if(m.autoClosingOvertype==="never"||!m.autoClosingPairs.autoClosingPairsCloseSingleChar.has(E))return!1;for(let I=0,M=b.length;I2?T.charCodeAt(x.column-2):0)===92&&N)return!1;if(m.autoClosingOvertype==="auto"){let O=!1;for(let W=0,U=w.length;Wv.startsWith(P.open)),M=E.some(P=>v.startsWith(P.close));return!I&&M}static _findAutoClosingPairOpen(m,v,b,w){const E=m.autoClosingPairs.autoClosingPairsOpenByEnd.get(w);if(!E)return null;let I=null;for(const M of E)if(I===null||M.open.length>I.open.length){let P=!0;for(const x of b)if(v.getValueInRange(new g.Range(x.lineNumber,x.column-M.open.length+1,x.lineNumber,x.column))+w!==M.open){P=!1;break}P&&(I=M)}return I}static _findContainedAutoClosingPair(m,v){if(v.open.length<=1)return null;const b=v.close.charAt(v.close.length-1),w=m.autoClosingPairs.autoClosingPairsCloseByEnd.get(b)||[];let E=null;for(const I of w)I.open!==v.open&&v.open.includes(I.open)&&v.close.endsWith(I.close)&&(!E||I.open.length>E.open.length)&&(E=I);return E}static _getAutoClosingPairClose(m,v,b,w,E){const I=(0,f.isQuote)(w),M=I?m.autoClosingQuotes:m.autoClosingBrackets,P=I?m.shouldAutoCloseBefore.quote:m.shouldAutoCloseBefore.bracket;if(M==="never")return null;for(const O of b)if(!O.isEmpty())return null;const x=b.map(O=>{const W=O.getPosition();return E?{lineNumber:W.lineNumber,beforeColumn:W.column-w.length,afterColumn:W.column}:{lineNumber:W.lineNumber,beforeColumn:W.column,afterColumn:W.column}}),T=this._findAutoClosingPairOpen(m,v,x.map(O=>new C.Position(O.lineNumber,O.beforeColumn)),w);if(!T)return null;const A=this._findContainedAutoClosingPair(m,T),N=A?A.close:"";let F=!0;for(const O of x){const{lineNumber:W,beforeColumn:U,afterColumn:j}=O,R=v.getLineContent(W),K=R.substring(0,U-1),G=R.substring(j-1);if(G.startsWith(N)||(F=!1),G.length>0){const H=G.charAt(0);if(!u._isBeforeClosingBrace(m,G)&&!P(H))return null}if(T.open.length===1&&(w==="'"||w==='"')&&M!=="always"){const H=(0,_.getMapForWordSeparators)(m.wordSeparators);if(K.length>0){const B=K.charCodeAt(K.length-1);if(H.get(B)===0)return null}}if(!v.tokenization.isCheapToTokenize(W))return null;v.tokenization.forceTokenization(W);const Z=v.tokenization.getLineTokens(W),J=(0,n.createScopedLineTokens)(Z,U-1);if(!T.shouldAutoClose(J,U-J.firstCharOffset))return null;const X=T.findNeutralCharacter();if(X){const H=v.tokenization.getTokenTypeIfInsertingCharacter(W,U,X);if(!T.isOK(H))return null}}return F?T.close.substring(0,T.close.length-N.length):T.close}static _runAutoClosingOpenCharType(m,v,b,w,E,I,M){const P=[];for(let x=0,T=w.length;xnew y.ReplaceCommand(new g.Range(N.positionLineNumber,N.positionColumn,N.positionLineNumber,N.positionColumn+1),"",!1));return new f.EditOperationResult(4,A,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const T=this._getAutoClosingPairClose(v,b,E,P,!0);return T!==null?this._runAutoClosingOpenCharType(m,v,b,E,P,!0,T):null}static typeWithInterceptors(m,v,b,w,E,I,M){if(!m&&M===` -`){const T=[];for(let A=0,N=E.length;A0){const l=this._cursors.getSelections();for(let p=0;pw&&(v=v.slice(0,w),b=!0);const E=u.from(this._model,this);return this._cursors.setStates(v),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(l,p,m,E,b)}setCursorColumnSelectData(l){this._columnSelectData=l}revealPrimary(l,p,m,v,b,w){const E=this._cursors.getViewPositions();let I=null,M=null;E.length>1?M=this._cursors.getViewSelections():I=g.Range.fromPositions(E[0],E[0]),l.emitViewEvent(new i.ViewRevealRangeRequestEvent(p,m,I,M,v,b,w))}saveState(){const l=[],p=this._cursors.getSelections();for(let m=0,v=p.length;m0){const b=D.CursorState.fromModelSelections(m.resultingSelection);this.setStates(l,"modelChange",m.isUndoing?5:m.isRedoing?6:2,b)&&this.revealPrimary(l,"modelChange",!1,0,!0,0)}else{const b=this._cursors.readSelectionFromMarkers();this.setStates(l,"modelChange",2,D.CursorState.fromModelSelections(b))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const l=this._cursors.getPrimaryCursor(),p=l.viewState.selectionStart.getStartPosition(),m=l.viewState.position;return{isReal:!1,fromViewLineNumber:p.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,p),toViewLineNumber:m.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,m)}}getSelections(){return this._cursors.getSelections()}setSelections(l,p,m,v){this.setStates(l,p,v,D.CursorState.fromModelSelections(m))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(l){this._prevEditOperationType=l}_pushAutoClosedAction(l,p){const m=[],v=[];for(let E=0,I=l.length;E0&&this._pushAutoClosedAction(m,v),this._prevEditOperationType=l.type}l.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(l){(!l||l.length===0)&&(l=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(l),this._cursors.normalize()}_emitStateChangedIfNecessary(l,p,m,v,b){const w=u.from(this._model,this);if(w.equals(v))return!1;const E=this._cursors.getSelections(),I=this._cursors.getViewSelections();if(l.emitViewEvent(new i.ViewCursorStateChangedEvent(I,E,m)),!v||v.cursorState.length!==w.cursorState.length||w.cursorState.some((M,P)=>!M.modelState.equals(v.cursorState[P].modelState))){const M=v?v.cursorState.map(x=>x.modelState.selection):null,P=v?v.modelVersionId:0;l.emitOutgoingEvent(new t.CursorStateChangedEvent(M,E,P,w.modelVersionId,p||"keyboard",m,b))}return!0}_findAutoClosingPairs(l){if(!l.length)return null;const p=[];for(let m=0,v=l.length;m=0)return null;const w=b.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!w)return null;const E=w[1],I=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(E);if(!I||I.length!==1)return null;const M=I[0].open,P=b.text.length-w[2].length-1,x=b.text.lastIndexOf(M,P-1);if(x===-1)return null;p.push([x,P])}return p}executeEdits(l,p,m,v){let b=null;p==="snippet"&&(b=this._findAutoClosingPairs(m)),b&&(m[0]._isTracked=!0);const w=[],E=[],I=this._model.pushEditOperations(this.getSelections(),m,M=>{if(b)for(let x=0,T=b.length;x0&&this._pushAutoClosedAction(w,E)}_executeEdit(l,p,m,v=0){if(this.context.cursorConfig.readOnly)return;const b=u.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),l()}catch(w){(0,L.onUnexpectedError)(w)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(p,m,v,b,!1)&&this.revealPrimary(p,m,!1,0,!0,0)}getAutoClosedCharacters(){return h.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(l){this._compositionState=new o(this._model,this.getSelections())}endComposition(l,p){const m=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{p==="keyboard"&&this._executeEditOperation(_.TypeOperations.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,m,this.getSelections(),this.getAutoClosedCharacters()))},l,p)}type(l,p,m){this._executeEdit(()=>{if(m==="keyboard"){const v=p.length;let b=0;for(;b{const M=I.getPosition();return new C.Selection(M.lineNumber,M.column+b,M.lineNumber,M.column+b)});this.setSelections(l,w,E,0)}return}this._executeEdit(()=>{this._executeEditOperation(_.TypeOperations.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),p,m,v,b))},l,w)}paste(l,p,m,v,b){this._executeEdit(()=>{this._executeEditOperation(_.TypeOperations.paste(this.context.cursorConfig,this._model,this.getSelections(),p,m,v||[]))},l,b,4)}cut(l,p){this._executeEdit(()=>{this._executeEditOperation(f.DeleteOperations.cut(this.context.cursorConfig,this._model,this.getSelections()))},l,p)}executeCommand(l,p,m){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new D.EditOperationResult(0,[p],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},l,m)}executeCommands(l,p,m){this._executeEdit(()=>{this._executeEditOperation(new D.EditOperationResult(0,p,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},l,m)}}e.CursorsController=a;class u{static from(l,p){return new u(l.getVersionId(),p.getCursorStates())}constructor(l,p){this.modelVersionId=l,this.cursorState=p}equals(l){if(!l||this.modelVersionId!==l.modelVersionId||this.cursorState.length!==l.cursorState.length)return!1;for(let p=0,m=this.cursorState.length;p=p.length||!p[m].strictContainsRange(l[m]))return!1;return!0}}class r{static executeCommands(l,p,m){const v={model:l,selectionsBefore:p,trackedRanges:[],trackedRangesDirection:[]},b=this._innerExecuteCommands(v,m);for(let w=0,E=v.trackedRanges.length;w0&&(w[0]._isTracked=!0);let E=l.model.pushEditOperations(l.selectionsBefore,w,M=>{const P=[];for(let A=0;AA.identifier.minor-N.identifier.minor,T=[];for(let A=0;A0?(P[A].sort(x),T[A]=p[A].computeCursorState(l.model,{getInverseEditOperations:()=>P[A],getTrackedSelection:N=>{const F=parseInt(N,10),O=l.model._getTrackedRange(l.trackedRanges[F]);return l.trackedRangesDirection[F]===0?new C.Selection(O.startLineNumber,O.startColumn,O.endLineNumber,O.endColumn):new C.Selection(O.endLineNumber,O.endColumn,O.startLineNumber,O.startColumn)}})):T[A]=l.selectionsBefore[A];return T});E||(E=l.selectionsBefore);const I=[];for(const M in b)b.hasOwnProperty(M)&&I.push(parseInt(M,10));I.sort((M,P)=>P-M);for(const M of I)E.splice(M,1);return E}static _arrayIsEmpty(l){for(let p=0,m=l.length;p{g.Range.isEmpty(x)&&T===""||v.push({identifier:{major:p,minor:b++},range:x,text:T,forceMoveMarkers:A,isAutoWhitespaceEdit:m.insertsAutoWhitespace})};let E=!1;const P={addEditOperation:w,addTrackedEditOperation:(x,T,A)=>{E=!0,w(x,T,A)},trackSelection:(x,T)=>{const A=C.Selection.liftSelection(x);let N;if(A.isEmpty())if(typeof T=="boolean")T?N=2:N=3;else{const W=l.model.getLineMaxColumn(A.startLineNumber);A.startColumn===W?N=2:N=3}else N=1;const F=l.trackedRanges.length,O=l.model._setTrackedRange(null,A,N);return l.trackedRanges[F]=O,l.trackedRangesDirection[F]=A.getDirection(),F.toString()}};try{m.getEditOperations(l.model,P)}catch(x){return(0,L.onUnexpectedError)(x),{operations:[],hadTrackedEditOperation:!1}}return{operations:v,hadTrackedEditOperation:E}}static _getLoserCursorMap(l){l=l.slice(0),l.sort((m,v)=>-g.Range.compareRangesUsingEnds(m.range,v.range));const p={};for(let m=1;mb.identifier.major?w=v.identifier.major:w=b.identifier.major,p[w.toString()]=!0;for(let E=0;E0&&m--}}return p}}class c{constructor(l,p,m){this.text=l,this.startSelection=p,this.endSelection=m}}class o{static _capture(l,p){const m=[];for(const v of p){if(v.startLineNumber!==v.endLineNumber)return null;m.push(new c(l.getLineContent(v.startLineNumber),v.startColumn-1,v.endColumn-1))}return m}constructor(l,p){this._original=o._capture(l,p)}deduceOutcome(l,p){if(!this._original)return null;const m=o._capture(l,p);if(!m||this._original.length!==m.length)return null;const v=[];for(let b=0,w=this._original.length;b{m.mime===p.mime||m.userConfigured||(p.extension&&m.extension===p.extension&&console.warn(`Overwriting extension <<${p.extension}>> to now point to mime <<${p.mime}>>`),p.filename&&m.filename===p.filename&&console.warn(`Overwriting filename <<${p.filename}>> to now point to mime <<${p.mime}>>`),p.filepattern&&m.filepattern===p.filepattern&&console.warn(`Overwriting filepattern <<${p.filepattern}>> to now point to mime <<${p.mime}>>`),p.firstline&&m.firstline===p.firstline&&console.warn(`Overwriting firstline <<${p.firstline}>> to now point to mime <<${p.mime}>>`))})}function t(o,d){return{id:o.id,mime:o.mime,filename:o.filename,extension:o.extension,filepattern:o.filepattern,firstline:o.firstline,userConfigured:d,filenameLowercase:o.filename?o.filename.toLowerCase():void 0,extensionLowercase:o.extension?o.extension.toLowerCase():void 0,filepatternLowercase:o.filepattern?(0,L.parse)(o.filepattern.toLowerCase()):void 0,filepatternOnPath:o.filepattern?o.filepattern.indexOf(D.posix.sep)>=0:!1}}function a(){g=g.filter(o=>o.userConfigured),C=[]}e.clearPlatformLanguageAssociations=a;function u(o,d){return h(o,d).map(l=>l.id)}e.getLanguageIds=u;function h(o,d){let l;if(o)switch(o.scheme){case y.Schemas.file:l=o.fsPath;break;case y.Schemas.data:{l=S.DataUri.parseMetaData(o).get(S.DataUri.META_DATA_LABEL);break}case y.Schemas.vscodeNotebookCell:l=void 0;break;default:l=o.path}if(!l)return[{id:"unknown",mime:k.Mimes.unknown}];l=l.toLowerCase();const p=(0,D.basename)(l),m=r(l,p,s);if(m)return[m,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];const v=r(l,p,C);if(v)return[v,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];if(d){const b=c(d);if(b)return[b,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}]}return[{id:"unknown",mime:k.Mimes.unknown}]}function r(o,d,l){var p;let m,v,b;for(let w=l.length-1;w>=0;w--){const E=l[w];if(d===E.filenameLowercase){m=E;break}if(E.filepattern&&(!v||E.filepattern.length>v.filepattern.length)){const I=E.filepatternOnPath?o:d;!((p=E.filepatternLowercase)===null||p===void 0)&&p.call(E,I)&&(v=E)}E.extension&&(!b||E.extension.length>b.extension.length)&&d.endsWith(E.extensionLowercase)&&(b=E)}if(m)return m;if(v)return v;if(b)return b}function c(o){if((0,f.startsWithUTF8BOM)(o)&&(o=o.substr(1)),o.length>0)for(let d=g.length-1;d>=0;d--){const l=g[d];if(!l.firstline)continue;const p=o.match(l.firstline);if(p&&p.length>0)return l}}}),define(ne[777],se([1,0,6,2,11,776,78,98,37]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguagesRegistry=e.LanguageIdCodec=void 0;const g=Object.prototype.hasOwnProperty,C="vs.editor.nullLanguage";class s{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(C,0),this._register(S.PLAINTEXT_LANGUAGE_ID,1),this._nextLanguageId=2}_register(t,a){this._languageIdToLanguage[a]=t,this._languageToLanguageId.set(t,a)}register(t){if(this._languageToLanguageId.has(t))return;const a=this._nextLanguageId++;this._register(t,a)}encodeLanguageId(t){return this._languageToLanguageId.get(t)||0}decodeLanguageId(t){return this._languageIdToLanguage[t]||C}}e.LanguageIdCodec=s;class i extends k.Disposable{constructor(t=!0,a=!1){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,i.instanceCount++,this._warnOnOverwrite=a,this.languageIdCodec=new s,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},t&&(this._initializeFromRegistry(),this._register(S.ModesRegistry.onDidChangeLanguages(u=>{this._initializeFromRegistry()})))}dispose(){i.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},(0,D.clearPlatformLanguageAssociations)();const t=[].concat(S.ModesRegistry.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(t)}_registerLanguages(t){for(const a of t)this._registerLanguage(a);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(a=>{const u=this._languages[a];u.name&&(this._nameMap[u.name]=u.identifier),u.aliases.forEach(h=>{this._lowercaseNameMap[h.toLowerCase()]=u.identifier}),u.mimetypes.forEach(h=>{this._mimeTypesMap[h]=u.identifier})}),_.Registry.as(f.Extensions.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(t){const a=t.id;let u;g.call(this._languages,a)?u=this._languages[a]:(this.languageIdCodec.register(a),u={identifier:a,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[a]=u),this._mergeLanguage(u,t)}_mergeLanguage(t,a){const u=a.id;let h=null;if(Array.isArray(a.mimetypes)&&a.mimetypes.length>0&&(t.mimetypes.push(...a.mimetypes),h=a.mimetypes[0]),h||(h=`text/x-${u}`,t.mimetypes.push(h)),Array.isArray(a.extensions)){a.configuration?t.extensions=a.extensions.concat(t.extensions):t.extensions=t.extensions.concat(a.extensions);for(const o of a.extensions)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,extension:o},this._warnOnOverwrite)}if(Array.isArray(a.filenames))for(const o of a.filenames)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,filename:o},this._warnOnOverwrite),t.filenames.push(o);if(Array.isArray(a.filenamePatterns))for(const o of a.filenamePatterns)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,filepattern:o},this._warnOnOverwrite);if(typeof a.firstLine=="string"&&a.firstLine.length>0){let o=a.firstLine;o.charAt(0)!=="^"&&(o="^"+o);try{const d=new RegExp(o);(0,y.regExpLeadsToEndlessLoop)(d)||(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,firstline:d},this._warnOnOverwrite)}catch(d){console.warn(`[${a.id}]: Invalid regular expression \`${o}\`: `,d)}}t.aliases.push(u);let r=null;if(typeof a.aliases<"u"&&Array.isArray(a.aliases)&&(a.aliases.length===0?r=[null]:r=a.aliases),r!==null)for(const o of r)!o||o.length===0||t.aliases.push(o);const c=r!==null&&r.length>0;if(!(c&&r[0]===null)){const o=(c?r[0]:null)||u;(c||!t.name)&&(t.name=o)}a.configuration&&t.configurationFiles.push(a.configuration),a.icon&&t.icons.push(a.icon)}isRegisteredLanguageId(t){return t?g.call(this._languages,t):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(t){const a=t.toLowerCase();return g.call(this._lowercaseNameMap,a)?this._lowercaseNameMap[a]:null}getLanguageIdByMimeType(t){return t&&g.call(this._mimeTypesMap,t)?this._mimeTypesMap[t]:null}guessLanguageIdByFilepathOrFirstLine(t,a){return!t&&!a?[]:(0,D.getLanguageIds)(t,a)}}e.LanguagesRegistry=i,i.instanceCount=0}),define(ne[778],se([1,0,6,2,777,14,29,78]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageService=void 0;class _ extends k.Disposable{constructor(s=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new L.Emitter),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new L.Emitter),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new L.Emitter({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,_.instanceCount++,this._registry=this._register(new y.LanguagesRegistry(!0,s)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){_.instanceCount--,super.dispose()}isRegisteredLanguageId(s){return this._registry.isRegisteredLanguageId(s)}getLanguageIdByLanguageName(s){return this._registry.getLanguageIdByLanguageName(s)}getLanguageIdByMimeType(s){return this._registry.getLanguageIdByMimeType(s)}guessLanguageIdByFilepathOrFirstLine(s,i){const n=this._registry.guessLanguageIdByFilepathOrFirstLine(s,i);return(0,D.firstOrDefault)(n,null)}createById(s){return new g(this.onDidChange,()=>this._createAndGetLanguageIdentifier(s))}createByFilepathOrFirstLine(s,i){return new g(this.onDidChange,()=>{const n=this.guessLanguageIdByFilepathOrFirstLine(s,i);return this._createAndGetLanguageIdentifier(n)})}_createAndGetLanguageIdentifier(s){return(!s||!this.isRegisteredLanguageId(s))&&(s=f.PLAINTEXT_LANGUAGE_ID),s}requestBasicLanguageFeatures(s){this._requestedBasicLanguages.has(s)||(this._requestedBasicLanguages.add(s),this._onDidRequestBasicLanguageFeatures.fire(s))}requestRichLanguageFeatures(s){this._requestedRichLanguages.has(s)||(this._requestedRichLanguages.add(s),this.requestBasicLanguageFeatures(s),S.TokenizationRegistry.getOrCreate(s),this._onDidRequestRichLanguageFeatures.fire(s))}}e.LanguageService=_,_.instanceCount=0;class g{constructor(s,i){this._onDidChangeLanguages=s,this._selector=i,this._listener=null,this._emitter=null,this.languageId=this._selector()}_dispose(){this._listener&&(this._listener.dispose(),this._listener=null),this._emitter&&(this._emitter.dispose(),this._emitter=null)}get onDidChange(){return this._listener||(this._listener=this._onDidChangeLanguages(()=>this._evaluate())),this._emitter||(this._emitter=new L.Emitter({onDidRemoveLastListener:()=>{this._dispose()}})),this._emitter.event}_evaluate(){var s;const i=this._selector();i!==this.languageId&&(this.languageId=i,(s=this._emitter)===null||s===void 0||s.fire(this.languageId))}}}),define(ne[342],se([1,0,38,242,51,32,2,18,149]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultDocumentColorProvider=void 0;class g{constructor(i,n){this._editorWorkerClient=new k.EditorWorkerClient(i,!1,"editorWorkerService",n)}provideDocumentColors(i,n){return we(this,void 0,void 0,function*(){return this._editorWorkerClient.computeDefaultDocumentColors(i.uri)})}provideColorPresentations(i,n,t){const a=n.range,u=n.color,h=u.alpha,r=new L.Color(new L.RGBA(Math.round(255*u.red),Math.round(255*u.green),Math.round(255*u.blue),h)),c=h?L.Color.Format.CSS.formatRGB(r):L.Color.Format.CSS.formatRGBA(r),o=h?L.Color.Format.CSS.formatHSL(r):L.Color.Format.CSS.formatHSLA(r),d=h?L.Color.Format.CSS.formatHex(r):L.Color.Format.CSS.formatHexA(r),l=[];return l.push({label:c,textEdit:{range:a,text:c}}),l.push({label:o,textEdit:{range:a,text:o}}),l.push({label:d,textEdit:{range:a,text:d}}),l}}e.DefaultDocumentColorProvider=g;let C=class extends S.Disposable{constructor(i,n,t){super(),this._register(t.colorProvider.register("*",new g(i,n)))}};C=ke([fe(0,y.IModelService),fe(1,D.ILanguageConfigurationService),fe(2,f.ILanguageFeaturesService)],C),(0,_.registerEditorFeature)(C)}),define(ne[343],se([1,0,19,9,22,5,51,27,18,342,28]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getColorPresentations=e.getColors=void 0;function s(r,c,o,d=!0){return we(this,void 0,void 0,function*(){return u(new n,r,c,o,d)})}e.getColors=s;function i(r,c,o,d){return Promise.resolve(o.provideColorPresentations(r,c,d))}e.getColorPresentations=i;class n{constructor(){}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideDocumentColors(o,d);if(Array.isArray(p))for(const m of p)l.push({colorInfo:m,provider:c});return Array.isArray(p)})}}class t{constructor(){}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideDocumentColors(o,d);if(Array.isArray(p))for(const m of p)l.push({range:m.range,color:[m.color.red,m.color.green,m.color.blue,m.color.alpha]});return Array.isArray(p)})}}class a{constructor(c){this.colorInfo=c}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideColorPresentations(o,this.colorInfo,L.CancellationToken.None);return Array.isArray(p)&&l.push(...p),Array.isArray(p)})}}function u(r,c,o,d,l){return we(this,void 0,void 0,function*(){let p=!1,m;const v=[],b=c.ordered(o);for(let w=b.length-1;w>=0;w--){const E=b[w];if(E instanceof g.DefaultDocumentColorProvider)m=E;else try{(yield r.compute(E,o,d,v))&&(p=!0)}catch(I){(0,k.onUnexpectedExternalError)(I)}}return p?v:m&&l?(yield r.compute(m,o,d,v),v):[]})}function h(r,c){const{colorProvider:o}=r.get(_.ILanguageFeaturesService),d=r.get(S.IModelService).getModel(c);if(!d)throw(0,k.illegalArgument)();const l=r.get(C.IConfigurationService).getValue("editor.defaultColorDecorators",{resource:c});return{model:d,colorProviderRegistry:o,isDefaultColorDecoratorsEnabled:l}}f.CommandsRegistry.registerCommand("_executeDocumentColorProvider",function(r,...c){const[o]=c;if(!(o instanceof y.URI))throw(0,k.illegalArgument)();const{model:d,colorProviderRegistry:l,isDefaultColorDecoratorsEnabled:p}=h(r,o);return u(new t,l,d,L.CancellationToken.None,p)}),f.CommandsRegistry.registerCommand("_executeColorPresentationProvider",function(r,...c){const[o,d]=c,{uri:l,range:p}=d;if(!(l instanceof y.URI)||!Array.isArray(o)||o.length!==4||!D.Range.isIRange(p))throw(0,k.illegalArgument)();const{model:m,colorProviderRegistry:v,isDefaultColorDecoratorsEnabled:b}=h(r,l),[w,E,I,M]=o;return u(new a({range:p,color:{red:w,green:E,blue:I,alpha:M}}),v,m,L.CancellationToken.None,b)})}),define(ne[779],se([1,0,19,72,2,42,12,29,32,18,600,296]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionWithUpdatedRange=e.UpToDateInlineCompletions=e.InlineCompletionsSource=void 0;let i=class extends y.Disposable{constructor(d,l,p,m,v){super(),this.textModel=d,this.versionId=l,this._debounceValue=p,this.languageFeaturesService=m,this.languageConfigurationService=v,this._updateOperation=this._register(new y.MutableDisposable),this.inlineCompletions=(0,D.disposableObservableValue)("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=(0,D.disposableObservableValue)("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(d,l,p){var m,v;const b=new t(d,l,this.textModel.getVersionId()),w=l.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if(!((m=this._updateOperation.value)===null||m===void 0)&&m.request.satisfies(b))return this._updateOperation.value.promise;if(!((v=w.get())===null||v===void 0)&&v.request.satisfies(b))return Promise.resolve(!0);const E=!!this._updateOperation.value;this._updateOperation.clear();const I=new L.CancellationTokenSource,M=(()=>we(this,void 0,void 0,function*(){if((E||l.triggerKind===f.InlineCompletionTriggerKind.Automatic)&&(yield n(this._debounceValue.get(this.textModel))),I.token.isCancellationRequested||this.textModel.getVersionId()!==b.versionId)return!1;const T=new Date,A=yield(0,C.provideInlineCompletions)(this.languageFeaturesService.inlineCompletionsProvider,d,this.textModel,l,I.token,this.languageConfigurationService);if(I.token.isCancellationRequested||this.textModel.getVersionId()!==b.versionId)return!1;const N=new Date;this._debounceValue.update(this.textModel,N.getTime()-T.getTime());const F=new h(A,b,this.textModel,this.versionId);if(p){const O=p.toInlineCompletion(void 0);p.canBeReused(this.textModel,d)&&!A.has(O)&&F.prepend(p.inlineCompletion,O.range,!0)}return this._updateOperation.clear(),(0,D.transaction)(O=>{w.set(F,O)}),!0}))(),P=new u(b,I,M);return this._updateOperation.value=P,M}clear(d){this._updateOperation.clear(),this.inlineCompletions.set(void 0,d),this.suggestWidgetInlineCompletions.set(void 0,d)}clearSuggestWidgetInlineCompletions(d){var l;!((l=this._updateOperation.value)===null||l===void 0)&&l.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,d)}cancelUpdate(){this._updateOperation.clear()}};e.InlineCompletionsSource=i,e.InlineCompletionsSource=i=ke([fe(3,g.ILanguageFeaturesService),fe(4,_.ILanguageConfigurationService)],i);function n(o,d){return new Promise(l=>{let p;const m=setTimeout(()=>{p&&p.dispose(),l()},o);d&&(p=d.onCancellationRequested(()=>{clearTimeout(m),p&&p.dispose(),l()}))})}class t{constructor(d,l,p){this.position=d,this.context=l,this.versionId=p}satisfies(d){return this.position.equals(d.position)&&a(this.context.selectedSuggestionInfo,d.context.selectedSuggestionInfo,(l,p)=>l.equals(p))&&(d.context.triggerKind===f.InlineCompletionTriggerKind.Automatic||this.context.triggerKind===f.InlineCompletionTriggerKind.Explicit)&&this.versionId===d.versionId}}function a(o,d,l){return!o||!d?o===d:l(o,d)}class u{constructor(d,l,p){this.request=d,this.cancellationTokenSource=l,this.promise=p}dispose(){this.cancellationTokenSource.cancel()}}class h{get inlineCompletions(){return this._inlineCompletions}constructor(d,l,p,m){this.inlineCompletionProviderResult=d,this.request=l,this.textModel=p,this.versionId=m,this._refCount=1,this._prependedInlineCompletionItems=[],this._rangeVersionIdValue=0,this._rangeVersionId=(0,D.derived)(b=>{this.versionId.read(b);let w=!1;for(const E of this._inlineCompletions)w=w||E._updateRange(this.textModel);return w&&this._rangeVersionIdValue++,this._rangeVersionIdValue});const v=p.deltaDecorations([],d.completions.map(b=>({range:b.range,options:{description:"inline-completion-tracking-range"}})));this._inlineCompletions=d.completions.map((b,w)=>new r(b,v[w],this._rangeVersionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this.textModel.isDisposed()||this.textModel.deltaDecorations(this._inlineCompletions.map(d=>d.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const d of this._prependedInlineCompletionItems)d.source.removeRef()}}prepend(d,l,p){p&&d.source.addRef();const m=this.textModel.deltaDecorations([],[{range:l,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new r(d,m,this._rangeVersionId,l)),this._prependedInlineCompletionItems.push(d)}}e.UpToDateInlineCompletions=h;class r{get forwardStable(){var d;return(d=this.inlineCompletion.source.inlineCompletions.enableForwardStability)!==null&&d!==void 0?d:!1}constructor(d,l,p,m){this.inlineCompletion=d,this.decorationId=l,this.rangeVersion=p,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._isValid=!0,this._updatedRange=m??d.range}toInlineCompletion(d){return this.inlineCompletion.withRange(this._getUpdatedRange(d))}toSingleTextEdit(d){return new s.SingleTextEdit(this._getUpdatedRange(d),this.inlineCompletion.insertText)}isVisible(d,l,p){const m=this._toFilterTextReplacement(p).removeCommonPrefix(d);if(!this._isValid||!this.inlineCompletion.range.getStartPosition().equals(this._getUpdatedRange(p).getStartPosition())||l.lineNumber!==m.range.startLineNumber)return!1;const v=d.getValueInRange(m.range,1).toLowerCase(),b=m.text.toLowerCase(),w=Math.max(0,l.column-m.range.startColumn);let E=b.substring(0,w),I=b.substring(w),M=v.substring(0,w),P=v.substring(w);const x=d.getLineIndentColumn(m.range.startLineNumber);return m.range.startColumn<=x&&(M=M.trimStart(),M.length===0&&(P=P.trimStart()),E=E.trimStart(),E.length===0&&(I=I.trimStart())),E.startsWith(M)&&!!(0,k.matchesSubString)(P,I)}canBeReused(d,l){return this._isValid&&this._getUpdatedRange(void 0).containsPosition(l)&&this.isVisible(d,l,void 0)&&!this._isSmallerThanOriginal(void 0)}_toFilterTextReplacement(d){return new s.SingleTextEdit(this._getUpdatedRange(d),this.inlineCompletion.filterText)}_isSmallerThanOriginal(d){return c(this._getUpdatedRange(d)).isBefore(c(this.inlineCompletion.range))}_getUpdatedRange(d){return this.rangeVersion.read(d),this._updatedRange}_updateRange(d){const l=d.getDecorationRange(this.decorationId);return l?this._updatedRange.equalsRange(l)?!1:(this._updatedRange=l,!0):(this._isValid=!1,!0)}}e.InlineCompletionWithUpdatedRange=r;function c(o){return o.startLineNumber===o.endLineNumber?new S.Position(1,1+o.endColumn-o.startColumn):new S.Position(1+o.endLineNumber-o.startLineNumber,o.endColumn)}}),define(ne[780],se([1,0,11,245,5,24,110,32,295,243,244]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MoveLinesCommand=void 0;let s=class{constructor(n,t,a,u){this._languageConfigurationService=u,this._selection=n,this._isMovingDown=t,this._autoIndent=a,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(n,t){const a=n.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===a){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let u=this._selection;u.startLineNumbern.tokenization.getLineTokens(l),getLanguageId:()=>n.getLanguageId(),getLanguageIdAtPosition:(l,p)=>n.getLanguageIdAtPosition(l,p)},getLineContent:null};if(u.startLineNumber===u.endLineNumber&&n.getLineMaxColumn(u.startLineNumber)===1){const l=u.startLineNumber,p=this._isMovingDown?l+1:l-1;n.getLineMaxColumn(p)===1?t.addEditOperation(new y.Range(1,1,1,1),null):(t.addEditOperation(new y.Range(l,1,l,1),n.getLineContent(p)),t.addEditOperation(new y.Range(p,1,p,n.getLineMaxColumn(p)),null)),u=new D.Selection(p,1,p,1)}else{let l,p;if(this._isMovingDown){l=u.endLineNumber+1,p=n.getLineContent(l),t.addEditOperation(new y.Range(l-1,n.getLineMaxColumn(l-1),l,n.getLineMaxColumn(l)),null);let m=p;if(this.shouldAutoIndent(n,u)){const v=this.matchEnterRule(n,o,h,l,u.startLineNumber-1);if(v!==null){const w=L.getLeadingWhitespace(n.getLineContent(l)),E=v+_.getSpaceCnt(w,h);m=_.generateIndent(E,h,c)+this.trimStart(p)}else{d.getLineContent=E=>E===u.startLineNumber?n.getLineContent(l):n.getLineContent(E);const w=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(l,1),u.startLineNumber,o,this._languageConfigurationService);if(w!==null){const E=L.getLeadingWhitespace(n.getLineContent(l)),I=_.getSpaceCnt(w,h),M=_.getSpaceCnt(E,h);I!==M&&(m=_.generateIndent(I,h,c)+this.trimStart(p))}}t.addEditOperation(new y.Range(u.startLineNumber,1,u.startLineNumber,1),m+` -`);const b=this.matchEnterRuleMovingDown(n,o,h,u.startLineNumber,l,m);if(b!==null)b!==0&&this.getIndentEditsOfMovingBlock(n,t,u,h,c,b);else{d.getLineContent=E=>E===u.startLineNumber?m:E>=u.startLineNumber+1&&E<=u.endLineNumber+1?n.getLineContent(E-1):n.getLineContent(E);const w=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(l,1),u.startLineNumber+1,o,this._languageConfigurationService);if(w!==null){const E=L.getLeadingWhitespace(n.getLineContent(u.startLineNumber)),I=_.getSpaceCnt(w,h),M=_.getSpaceCnt(E,h);if(I!==M){const P=I-M;this.getIndentEditsOfMovingBlock(n,t,u,h,c,P)}}}}else t.addEditOperation(new y.Range(u.startLineNumber,1,u.startLineNumber,1),m+` -`)}else if(l=u.startLineNumber-1,p=n.getLineContent(l),t.addEditOperation(new y.Range(l,1,l+1,1),null),t.addEditOperation(new y.Range(u.endLineNumber,n.getLineMaxColumn(u.endLineNumber),u.endLineNumber,n.getLineMaxColumn(u.endLineNumber)),` -`+p),this.shouldAutoIndent(n,u)){d.getLineContent=v=>v===l?n.getLineContent(u.startLineNumber):n.getLineContent(v);const m=this.matchEnterRule(n,o,h,u.startLineNumber,u.startLineNumber-2);if(m!==null)m!==0&&this.getIndentEditsOfMovingBlock(n,t,u,h,c,m);else{const v=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(u.startLineNumber,1),l,o,this._languageConfigurationService);if(v!==null){const b=L.getLeadingWhitespace(n.getLineContent(u.startLineNumber)),w=_.getSpaceCnt(v,h),E=_.getSpaceCnt(b,h);if(w!==E){const I=w-E;this.getIndentEditsOfMovingBlock(n,t,u,h,c,I)}}}}}this._selectionId=t.trackSelection(u)}buildIndentConverter(n,t,a){return{shiftIndent:u=>k.ShiftCommand.shiftIndent(u,u.length+1,n,t,a),unshiftIndent:u=>k.ShiftCommand.unshiftIndent(u,u.length+1,n,t,a)}}parseEnterResult(n,t,a,u,h){if(h){let r=h.indentation;h.indentAction===S.IndentAction.None||h.indentAction===S.IndentAction.Indent?r=h.indentation+h.appendText:h.indentAction===S.IndentAction.IndentOutdent?r=h.indentation:h.indentAction===S.IndentAction.Outdent&&(r=t.unshiftIndent(h.indentation)+h.appendText);const c=n.getLineContent(u);if(this.trimStart(c).indexOf(this.trimStart(r))>=0){const o=L.getLeadingWhitespace(n.getLineContent(u));let d=L.getLeadingWhitespace(r);const l=(0,g.getIndentMetadata)(n,u,this._languageConfigurationService);l!==null&&l&2&&(d=t.unshiftIndent(d));const p=_.getSpaceCnt(d,a),m=_.getSpaceCnt(o,a);return p-m}}return null}matchEnterRuleMovingDown(n,t,a,u,h,r){if(L.lastNonWhitespaceIndex(r)>=0){const c=n.getLineMaxColumn(h),o=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(h,c,h,c),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,o)}else{let c=u-1;for(;c>=1;){const l=n.getLineContent(c);if(L.lastNonWhitespaceIndex(l)>=0)break;c--}if(c<1||u>n.getLineCount())return null;const o=n.getLineMaxColumn(c),d=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(c,o,c,o),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,d)}}matchEnterRule(n,t,a,u,h,r){let c=h;for(;c>=1;){let l;if(c===h&&r!==void 0?l=r:l=n.getLineContent(c),L.lastNonWhitespaceIndex(l)>=0)break;c--}if(c<1||u>n.getLineCount())return null;const o=n.getLineMaxColumn(c),d=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(c,o,c,o),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,d)}trimStart(n){return n.replace(/^\s+/,"")}shouldAutoIndent(n,t){if(this._autoIndent<4||!n.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const a=n.getLanguageIdAtPosition(t.startLineNumber,1),u=n.getLanguageIdAtPosition(t.endLineNumber,1);return!(a!==u||this._languageConfigurationService.getLanguageConfiguration(a).indentRulesSupport===null)}getIndentEditsOfMovingBlock(n,t,a,u,h,r){for(let c=a.startLineNumber;c<=a.endLineNumber;c++){const o=n.getLineContent(c),d=L.getLeadingWhitespace(o),p=_.getSpaceCnt(d,u)+r,m=_.generateIndent(p,u,h);m!==d&&(t.addEditOperation(new y.Range(c,1,c,d.length+1),m),c===a.endLineNumber&&a.endColumn<=d.length+1&&m===""&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(n,t){let a=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(a=a.setEndPosition(a.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&a.startLineNumber{}};const o=new S.DisposableStore,d=o.add((0,L.renderMarkdown)(h,Object.assign(Object.assign({},this._getRenderOptions(h,o)),r),c));return d.element.classList.add("rendered-markdown"),{element:d.element,dispose:()=>o.dispose()}}_getRenderOptions(h,r){return{codeBlockRenderer:(c,o)=>we(this,void 0,void 0,function*(){var d,l,p;let m;c?m=this._languageService.getLanguageIdByLanguageName(c):this._options.editor&&(m=(d=this._options.editor.getModel())===null||d===void 0?void 0:d.getLanguageId()),m||(m=g.PLAINTEXT_LANGUAGE_ID);const v=yield(0,C.tokenizeToString)(this._languageService,o,m),b=document.createElement("span");if(b.innerHTML=(p=(l=i._ttpTokenizer)===null||l===void 0?void 0:l.createHTML(v))!==null&&p!==void 0?p:v,this._options.editor){const w=this._options.editor.getOption(49);(0,f.applyFontInfo)(b,w)}else this._options.codeBlockFontFamily&&(b.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(b.style.fontSize=this._options.codeBlockFontSize),b}),asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:c=>t(this._openerService,c,h.isTrusted),disposables:r}}}};e.MarkdownRenderer=n,n._ttpTokenizer=(0,k.createTrustedTypesPolicy)("tokenizeToString",{createHTML(u){return u}}),e.MarkdownRenderer=n=i=ke([fe(1,_.ILanguageService),fe(2,s.IOpenerService)],n);function t(u,h,r){return we(this,void 0,void 0,function*(){try{return yield u.open(h,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:a(r)})}catch(c){return(0,y.onUnexpectedError)(c),!1}})}e.openLinkFromMarkdown=t;function a(u){return u===!0?!0:u&&Array.isArray(u.enabledCommands)?u.enabledCommands:!1}}),define(ne[781],se([1,0,7,14,55,2,117,321,310]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarginHoverWidget=void 0;const g=L.$;class C extends D.Disposable{constructor(n,t,a){super(),this._renderDisposeables=this._register(new D.DisposableStore),this._editor=n,this._isVisible=!1,this._messages=[],this._hover=this._register(new _.HoverWidget),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new S.MarkdownRenderer({editor:this._editor},t,a)),this._computer=new s(this._editor),this._hoverOperation=this._register(new f.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(u=>{this._withResult(u.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(49)&&this._updateFont()})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return C.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(t=>this._editor.applyFontInfo(t))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}startShowingAt(n){this._computer.lineNumber!==n&&(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=n,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(n){this._messages=n,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(n,t){this._renderDisposeables.clear();const a=document.createDocumentFragment();for(const u of t){const h=g("div.hover-row.markdown-hover"),r=L.append(h,g("div.hover-contents")),c=this._renderDisposeables.add(this._markdownRenderer.render(u.value));r.appendChild(c.element),a.appendChild(h)}this._updateContents(a),this._showAt(n)}_updateContents(n){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(n),this._updateFont()}_showAt(n){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const t=this._editor.getLayoutInfo(),a=this._editor.getTopForLineNumber(n),u=this._editor.getScrollTop(),h=this._editor.getOption(65),r=this._hover.containerDomNode.clientHeight,c=a-u-(r-h)/2;this._hover.containerDomNode.style.left=`${t.glyphMarginLeft+t.glyphMarginWidth}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(c),0)}px`}}e.MarginHoverWidget=C,C.ID="editor.contrib.modesGlyphHoverWidget";class s{get lineNumber(){return this._lineNumber}set lineNumber(n){this._lineNumber=n}constructor(n){this._editor=n,this._lineNumber=-1}computeSync(){const n=u=>({value:u}),t=this._editor.getLineDecorations(this._lineNumber),a=[];if(!t)return a;for(const u of t){if(!u.options.glyphMarginClassName)continue;const h=u.options.glyphMarginHoverMessage;!h||(0,y.isEmptyMarkdownString)(h)||a.push(...(0,k.asArray)(h).map(n))}return a}}}),define(ne[344],se([1,0,7,75,25,26,6,55,2,117,223,703,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestDetailsOverlay=e.SuggestDetailsWidget=e.canExpandCompletionItem=void 0;function n(u){return!!u&&!!(u.completion.documentation||u.completion.detail&&u.completion.detail!==u.completion.label)}e.canExpandCompletionItem=n;let t=class{constructor(h,r){this._editor=h,this._onDidClose=new S.Emitter,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new S.Emitter,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new _.DisposableStore,this._renderDisposeable=new _.DisposableStore,this._borderWidth=1,this._size=new L.Dimension(330,0),this.domNode=L.$(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=r.createInstance(g.MarkdownRenderer,{editor:h}),this._body=L.$(".body"),this._scrollbar=new k.DomScrollableElement(this._body,{alwaysConsumeMouseWheel:!0}),L.append(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=L.append(this._body,L.$(".header")),this._close=L.append(this._header,L.$("span"+D.ThemeIcon.asCSSSelector(y.Codicon.close))),this._close.title=s.localize(0,null),this._type=L.append(this._header,L.$("p.type")),this._docs=L.append(this._body,L.$("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration(c=>{c.hasChanged(49)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const h=this._editor.getOptions(),r=h.get(49),c=r.getMassagedFontFamily(),o=h.get(117)||r.fontSize,d=h.get(118)||r.lineHeight,l=r.fontWeight,p=`${o}px`,m=`${d}px`;this.domNode.style.fontSize=p,this.domNode.style.lineHeight=`${d/o}`,this.domNode.style.fontWeight=l,this.domNode.style.fontFeatureSettings=r.fontFeatureSettings,this._type.style.fontFamily=c,this._close.style.height=m,this._close.style.width=m}getLayoutInfo(){const h=this._editor.getOption(118)||this._editor.getOption(49).lineHeight,r=this._borderWidth,c=r*2;return{lineHeight:h,borderWidth:r,borderHeight:c,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=s.localize(1,null),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(h,r){var c,o;this._renderDisposeable.clear();let{detail:d,documentation:l}=h.completion;if(r){let p="";p+=`score: ${h.score[0]} -`,p+=`prefix: ${(c=h.word)!==null&&c!==void 0?c:"(no prefix)"} -`,p+=`word: ${h.completion.filterText?h.completion.filterText+" (filterText)":h.textLabel} -`,p+=`distance: ${h.distance} (localityBonus-setting) -`,p+=`index: ${h.idx}, based on ${h.completion.sortText&&`sortText: "${h.completion.sortText}"`||"label"} -`,p+=`commit_chars: ${(o=h.completion.commitCharacters)===null||o===void 0?void 0:o.join("")} -`,l=new f.MarkdownString().appendCodeblock("empty",p),d=`Provider: ${h.provider._debugDisplayName}`}if(!r&&!n(h)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),d){const p=d.length>1e5?`${d.substr(0,1e5)}\u2026`:d;this._type.textContent=p,this._type.title=p,L.show(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(p))}else L.clearNode(this._type),this._type.title="",L.hide(this._type),this.domNode.classList.add("no-type");if(L.clearNode(this._docs),typeof l=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=l;else if(l){this._docs.classList.add("markdown-docs"),L.clearNode(this._docs);const p=this._markdownRenderer.render(l);this._docs.appendChild(p.element),this._renderDisposeable.add(p),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=p=>{p.preventDefault(),p.stopPropagation()},this._close.onclick=p=>{p.preventDefault(),p.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get size(){return this._size}layout(h,r){const c=new L.Dimension(h,r);L.Dimension.equals(c,this._size)||(this._size=c,L.size(this.domNode,h,r)),this._scrollbar.scanDomNode()}scrollDown(h=8){this._body.scrollTop+=h}scrollUp(h=8){this._body.scrollTop-=h}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(h){this._borderWidth=h}get borderWidth(){return this._borderWidth}};e.SuggestDetailsWidget=t,e.SuggestDetailsWidget=t=ke([fe(1,i.IInstantiationService)],t);class a{constructor(h,r){this.widget=h,this._editor=r,this._disposables=new _.DisposableStore,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new C.ResizableHTMLElement,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(h.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let c,o,d=0,l=0;this._disposables.add(this._resizable.onDidWillResize(()=>{c=this._topLeft,o=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(p=>{if(c&&o){this.widget.layout(p.dimension.width,p.dimension.height);let m=!1;p.west&&(l=o.width-p.dimension.width,m=!0),p.north&&(d=o.height-p.dimension.height,m=!0),m&&this._applyTopLeft({top:c.top+d,left:c.left+l})}p.done&&(c=void 0,o=void 0,d=0,l=0,this._userSize=p.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{var p;this._anchorBox&&this._placeAtAnchor(this._anchorBox,(p=this._userSize)!==null&&p!==void 0?p:this.widget.size,this._preferAlignAtTop)}))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return null}show(){this._added||(this._editor.addOverlayWidget(this),this.getDomNode().style.position="fixed",this._added=!0)}hide(h=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),h&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(h,r){var c;const o=h.getBoundingClientRect();this._anchorBox=o,this._preferAlignAtTop=r,this._placeAtAnchor(this._anchorBox,(c=this._userSize)!==null&&c!==void 0?c:this.widget.size,r)}_placeAtAnchor(h,r,c){var o;const d=L.getClientArea(document.body),l=this.widget.getLayoutInfo(),p=new L.Dimension(220,2*l.lineHeight),m=h.top,v=function(){const N=d.width-(h.left+h.width+l.borderWidth+l.horizontalPadding),F=-l.borderWidth+h.left+h.width,O=new L.Dimension(N,d.height-h.top-l.borderHeight-l.verticalPadding),W=O.with(void 0,h.top+h.height-l.borderHeight-l.verticalPadding);return{top:m,left:F,fit:N-r.width,maxSizeTop:O,maxSizeBottom:W,minSize:p.with(Math.min(N,p.width))}}(),b=function(){const N=h.left-l.borderWidth-l.horizontalPadding,F=Math.max(l.horizontalPadding,h.left-r.width-l.borderWidth),O=new L.Dimension(N,d.height-h.top-l.borderHeight-l.verticalPadding),W=O.with(void 0,h.top+h.height-l.borderHeight-l.verticalPadding);return{top:m,left:F,fit:N-r.width,maxSizeTop:O,maxSizeBottom:W,minSize:p.with(Math.min(N,p.width))}}(),w=function(){const N=h.left,F=-l.borderWidth+h.top+h.height,O=new L.Dimension(h.width-l.borderHeight,d.height-h.top-h.height-l.verticalPadding);return{top:F,left:N,fit:O.height-r.height,maxSizeBottom:O,maxSizeTop:O,minSize:p.with(O.width)}}(),E=[v,b,w],I=(o=E.find(N=>N.fit>=0))!==null&&o!==void 0?o:E.sort((N,F)=>F.fit-N.fit)[0],M=h.top+h.height-l.borderHeight;let P,x=r.height;const T=Math.max(I.maxSizeTop.height,I.maxSizeBottom.height);x>T&&(x=T);let A;c?x<=I.maxSizeTop.height?(P=!0,A=I.maxSizeTop):(P=!1,A=I.maxSizeBottom):x<=I.maxSizeBottom.height?(P=!1,A=I.maxSizeBottom):(P=!0,A=I.maxSizeTop),this._applyTopLeft({left:I.left,top:P?I.top:M-x}),this.getDomNode().style.position="fixed",this._resizable.enableSashes(!P,I===v,P,I!==v),this._resizable.minSize=I.minSize,this._resizable.maxSize=A,this._resizable.layout(x,Math.min(A.width,r.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(h){this._topLeft=h,this.getDomNode().style.left=`${this._topLeft.left}px`,this.getDomNode().style.top=`${this._topLeft.top}px`}}e.SuggestDetailsOverlay=a}),define(ne[345],se([1,0,14,65,47,20,22,28,98,37]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationChangeEvent=e.Configuration=e.ConfigurationModelParser=e.ConfigurationModel=void 0;function C(u){return Object.isFrozen(u)?u:y.deepFreeze(u)}class s{constructor(h={},r=[],c=[],o){this._contents=h,this._keys=r,this._overrides=c,this.raw=o,this.overrideConfigurations=new Map}get rawConfiguration(){var h;if(!this._rawConfiguration)if(!((h=this.raw)===null||h===void 0)&&h.length){const r=this.raw.map(c=>{if(c instanceof s)return c;const o=new i("");return o.parseRaw(c),o.configurationModel});this._rawConfiguration=r.reduce((c,o)=>o===c?o:c.merge(o),r[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(h){return h?(0,f.getConfigurationValue)(this.contents,h):this.contents}inspect(h,r){const c=this.rawConfiguration.getValue(h),o=r?this.rawConfiguration.getOverrideValue(h,r):void 0,d=r?this.rawConfiguration.override(r).getValue(h):c;return{value:c,override:o,merged:d}}getOverrideValue(h,r){const c=this.getContentsForOverrideIdentifer(r);return c?h?(0,f.getConfigurationValue)(c,h):c:void 0}override(h){let r=this.overrideConfigurations.get(h);return r||(r=this.createOverrideConfigurationModel(h),this.overrideConfigurations.set(h,r)),r}merge(...h){var r,c;const o=y.deepClone(this.contents),d=y.deepClone(this.overrides),l=[...this.keys],p=!((r=this.raw)===null||r===void 0)&&r.length?[...this.raw]:[this];for(const m of h)if(p.push(...!((c=m.raw)===null||c===void 0)&&c.length?m.raw:[m]),!m.isEmpty()){this.mergeContents(o,m.contents);for(const v of m.overrides){const[b]=d.filter(w=>L.equals(w.identifiers,v.identifiers));b?(this.mergeContents(b.contents,v.contents),b.keys.push(...v.keys),b.keys=L.distinct(b.keys)):d.push(y.deepClone(v))}for(const v of m.keys)l.indexOf(v)===-1&&l.push(v)}return new s(o,l,d,p.every(m=>m instanceof s)?void 0:p)}createOverrideConfigurationModel(h){const r=this.getContentsForOverrideIdentifer(h);if(!r||typeof r!="object"||!Object.keys(r).length)return this;const c={};for(const o of L.distinct([...Object.keys(this.contents),...Object.keys(r)])){let d=this.contents[o];const l=r[o];l&&(typeof d=="object"&&typeof l=="object"?(d=y.deepClone(d),this.mergeContents(d,l)):d=l),c[o]=d}return new s(c,this.keys,this.overrides)}mergeContents(h,r){for(const c of Object.keys(r)){if(c in h&&D.isObject(h[c])&&D.isObject(r[c])){this.mergeContents(h[c],r[c]);continue}h[c]=y.deepClone(r[c])}}getContentsForOverrideIdentifer(h){let r=null,c=null;const o=d=>{d&&(c?this.mergeContents(c,d):c=y.deepClone(d))};for(const d of this.overrides)d.identifiers.length===1&&d.identifiers[0]===h?r=d.contents:d.identifiers.includes(h)&&o(d.contents);return o(r),c}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(h,r){this.updateValue(h,r,!0)}setValue(h,r){this.updateValue(h,r,!1)}removeValue(h){const r=this.keys.indexOf(h);r!==-1&&(this.keys.splice(r,1),(0,f.removeFromValueTree)(this.contents,h),_.OVERRIDE_PROPERTY_REGEX.test(h)&&this.overrides.splice(this.overrides.findIndex(c=>L.equals(c.identifiers,(0,_.overrideIdentifiersFromKey)(h))),1))}updateValue(h,r,c){(0,f.addToValueTree)(this.contents,h,r,o=>console.error(o)),c=c||this.keys.indexOf(h)===-1,c&&this.keys.push(h),_.OVERRIDE_PROPERTY_REGEX.test(h)&&this.overrides.push({identifiers:(0,_.overrideIdentifiersFromKey)(h),keys:Object.keys(this.contents[h]),contents:(0,f.toValuesTree)(this.contents[h],o=>console.error(o))})}}e.ConfigurationModel=s;class i{constructor(h){this._name=h,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new s}parseRaw(h,r){this._raw=h;const{contents:c,keys:o,overrides:d,restricted:l,hasExcludedProperties:p}=this.doParseRaw(h,r);this._configurationModel=new s(c,o,d,p?[h]:void 0),this._restrictedConfigurations=l||[]}doParseRaw(h,r){const c=g.Registry.as(_.Extensions.Configuration).getConfigurationProperties(),o=this.filter(h,c,!0,r);h=o.raw;const d=(0,f.toValuesTree)(h,m=>console.error(`Conflict in settings file ${this._name}: ${m}`)),l=Object.keys(h),p=this.toOverrides(h,m=>console.error(`Conflict in settings file ${this._name}: ${m}`));return{contents:d,keys:l,overrides:p,restricted:o.restricted,hasExcludedProperties:o.hasExcludedProperties}}filter(h,r,c,o){var d,l,p;let m=!1;if(!o?.scopes&&!o?.skipRestricted&&!(!((d=o?.exclude)===null||d===void 0)&&d.length))return{raw:h,restricted:[],hasExcludedProperties:m};const v={},b=[];for(const w in h)if(_.OVERRIDE_PROPERTY_REGEX.test(w)&&c){const E=this.filter(h[w],r,!1,o);v[w]=E.raw,m=m||E.hasExcludedProperties,b.push(...E.restricted)}else{const E=r[w],I=E?typeof E.scope<"u"?E.scope:3:void 0;E?.restricted&&b.push(w),!(!((l=o.exclude)===null||l===void 0)&&l.includes(w))&&(!((p=o.include)===null||p===void 0)&&p.includes(w)||(I===void 0||o.scopes===void 0||o.scopes.includes(I))&&!(o.skipRestricted&&E?.restricted))?v[w]=h[w]:m=!0}return{raw:v,restricted:b,hasExcludedProperties:m}}toOverrides(h,r){const c=[];for(const o of Object.keys(h))if(_.OVERRIDE_PROPERTY_REGEX.test(o)){const d={};for(const l in h[o])d[l]=h[o][l];c.push({identifiers:(0,_.overrideIdentifiersFromKey)(o),keys:Object.keys(d),contents:(0,f.toValuesTree)(d,r)})}return c}}e.ConfigurationModelParser=i;class n{constructor(h,r,c,o,d,l,p,m,v,b,w,E,I){this.key=h,this.overrides=r,this._value=c,this.overrideIdentifiers=o,this.defaultConfiguration=d,this.policyConfiguration=l,this.applicationConfiguration=p,this.userConfiguration=m,this.localUserConfiguration=v,this.remoteUserConfiguration=b,this.workspaceConfiguration=w,this.folderConfigurationModel=E,this.memoryConfigurationModel=I}inspect(h,r,c){const o=h.inspect(r,c);return{get value(){return C(o.value)},get override(){return C(o.override)},get merged(){return C(o.merged)}}}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.inspect(this.userConfiguration,this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.userInspectValue.value!==void 0||this.userInspectValue.override!==void 0?{value:this.userInspectValue.value,override:this.userInspectValue.override}:void 0}}class t{constructor(h,r,c,o,d=new s,l=new s,p=new k.ResourceMap,m=new s,v=new k.ResourceMap){this._defaultConfiguration=h,this._policyConfiguration=r,this._applicationConfiguration=c,this._localUserConfiguration=o,this._remoteUserConfiguration=d,this._workspaceConfiguration=l,this._folderConfigurations=p,this._memoryConfiguration=m,this._memoryConfigurationByResource=v,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new k.ResourceMap,this._userConfiguration=null}getValue(h,r,c){return this.getConsolidatedConfigurationModel(h,r,c).getValue(h)}updateValue(h,r,c={}){let o;c.resource?(o=this._memoryConfigurationByResource.get(c.resource),o||(o=new s,this._memoryConfigurationByResource.set(c.resource,o))):o=this._memoryConfiguration,r===void 0?o.removeValue(h):o.setValue(h,r),c.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(h,r,c){const o=this.getConsolidatedConfigurationModel(h,r,c),d=this.getFolderConfigurationModelForResource(r.resource,c),l=r.resource?this._memoryConfigurationByResource.get(r.resource)||this._memoryConfiguration:this._memoryConfiguration,p=new Set;for(const m of o.overrides)for(const v of m.identifiers)o.getOverrideValue(h,v)!==void 0&&p.add(v);return new n(h,r,o.getValue(h),p.size?[...p]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,c?this._workspaceConfiguration:void 0,d||void 0,l)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(h,r,c){let o=this.getConsolidatedConfigurationModelForResource(r,c);return r.overrideIdentifier&&(o=o.override(r.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(h)!==void 0&&(o=o.merge(this._policyConfiguration)),o}getConsolidatedConfigurationModelForResource({resource:h},r){let c=this.getWorkspaceConsolidatedConfiguration();if(r&&h){const o=r.getFolder(h);o&&(c=this.getFolderConsolidatedConfiguration(o.uri)||c);const d=this._memoryConfigurationByResource.get(h);d&&(c=c.merge(d))}return c}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(h){let r=this._foldersConsolidatedConfigurations.get(h);if(!r){const c=this.getWorkspaceConsolidatedConfiguration(),o=this._folderConfigurations.get(h);o?(r=c.merge(o),this._foldersConsolidatedConfigurations.set(h,r)):r=c}return r}getFolderConfigurationModelForResource(h,r){if(r&&h){const c=r.getFolder(h);if(c)return this._folderConfigurations.get(c.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce((h,r)=>{const{contents:c,overrides:o,keys:d}=this._folderConfigurations.get(r);return h.push([r,{contents:c,overrides:o,keys:d}]),h},[])}}static parse(h){const r=this.parseConfigurationModel(h.defaults),c=this.parseConfigurationModel(h.policy),o=this.parseConfigurationModel(h.application),d=this.parseConfigurationModel(h.user),l=this.parseConfigurationModel(h.workspace),p=h.folders.reduce((m,v)=>(m.set(S.URI.revive(v[0]),this.parseConfigurationModel(v[1])),m),new k.ResourceMap);return new t(r,c,o,d,new s,l,p,new s,new k.ResourceMap)}static parseConfigurationModel(h){return new s(h.contents,h.keys,h.overrides)}}e.Configuration=t;class a{constructor(h,r,c,o){this.change=h,this.previous=r,this.currentConfiguraiton=c,this.currentWorkspace=o,this._marker=` -`,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=".".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const d of h.keys)this.affectedKeys.add(d);for(const[,d]of h.overrides)for(const l of d)this.affectedKeys.add(l);this._affectsConfigStr=this._marker;for(const d of this.affectedKeys)this._affectsConfigStr+=d+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=t.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(h,r){var c;const o=this._marker+h,d=this._affectsConfigStr.indexOf(o);if(d<0)return!1;const l=d+o.length;if(l>=this._affectsConfigStr.length)return!1;const p=this._affectsConfigStr.charCodeAt(l);if(p!==this._markerCode1&&p!==this._markerCode2)return!1;if(r){const m=this.previousConfiguration?this.previousConfiguration.getValue(h,r,(c=this.previous)===null||c===void 0?void 0:c.workspace):void 0,v=this.currentConfiguraiton.getValue(h,r,this.currentWorkspace);return!y.equals(m,v)}return!0}}e.ConfigurationChangeEvent=a}),define(ne[782],se([1,0,2,345,98,37]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultConfiguration=void 0;class S extends L.Disposable{constructor(){super(...arguments),this._configurationModel=new k.ConfigurationModel}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new k.ConfigurationModel;const _=D.Registry.as(y.Extensions.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(_),_)}updateConfigurationModel(_,g){const C=this.getConfigurationDefaultOverrides();for(const s of _){const i=C[s],n=g[s];i!==void 0?this._configurationModel.addValue(s,i):n?this._configurationModel.addValue(s,n.default):this._configurationModel.removeValue(s)}}}e.DefaultConfiguration=S}),define(ne[118],se([1,0,119,17,27,37,2,64]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Extensions=e.KeybindingsRegistry=void 0;class _{constructor(){this._coreKeybindings=new f.LinkedList,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(s){if(k.OS===1){if(s&&s.win)return s.win}else if(k.OS===2){if(s&&s.mac)return s.mac}else if(s&&s.linux)return s.linux;return s}registerKeybindingRule(s){const i=_.bindToCurrentPlatform(s),n=new S.DisposableStore;if(i&&i.primary){const t=(0,L.decodeKeybinding)(i.primary,k.OS);t&&n.add(this._registerDefaultKeybinding(t,s.id,s.args,s.weight,0,s.when))}if(i&&Array.isArray(i.secondary))for(let t=0,a=i.secondary.length;t{h(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(g)),this._cachedMergedKeybindings.slice(0)}}e.KeybindingsRegistry=new _,e.Extensions={EditorModes:"platform.keybindingsRegistry"},D.Registry.add(e.Extensions.EditorModes,e.KeybindingsRegistry);function g(C,s){if(C.weight1!==s.weight1)return C.weight1-s.weight1;if(C.command&&s.command){if(C.commands.command)return 1}return C.weight2-s.weight2}});var vi=this&&this.__rest||function(Q,e){var L={};for(var k in Q)Object.prototype.hasOwnProperty.call(Q,k)&&e.indexOf(k)<0&&(L[k]=Q[k]);if(Q!=null&&typeof Object.getOwnPropertySymbols=="function")for(var y=0,k=Object.getOwnPropertySymbols(Q);yl===d}}a._all=new Map,e.MenuRegistry=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new y.MicrotaskEmitter({merge:a.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(o){return this._commands.set(o.id,o),this._onDidChangeMenu.fire(a.for(t.CommandPalette)),(0,D.toDisposable)(()=>{this._commands.delete(o.id)&&this._onDidChangeMenu.fire(a.for(t.CommandPalette))})}getCommand(o){return this._commands.get(o)}getCommands(){const o=new Map;return this._commands.forEach((d,l)=>o.set(l,d)),o}appendMenuItem(o,d){let l=this._menuItems.get(o);l||(l=new S.LinkedList,this._menuItems.set(o,l));const p=l.push(d);return this._onDidChangeMenu.fire(a.for(o)),(0,D.toDisposable)(()=>{p(),this._onDidChangeMenu.fire(a.for(o))})}appendMenuItems(o){const d=new D.DisposableStore;for(const{id:l,item:p}of o)d.add(this.appendMenuItem(l,p));return d}getMenuItems(o){let d;return this._menuItems.has(o)?d=[...this._menuItems.get(o)]:d=[],o===t.CommandPalette&&this._appendImplicitItems(d),d}_appendImplicitItems(o){const d=new Set;for(const l of o)i(l)&&(d.add(l.command.id),l.alt&&d.add(l.alt.id));this._commands.forEach((l,p)=>{d.has(p)||o.push({command:l})})}};class u extends L.SubmenuAction{constructor(d,l,p){super(`submenuitem.${d.submenu.id}`,typeof d.title=="string"?d.title:d.title.value,p,"submenu"),this.item=d,this.hideActions=l}}e.SubmenuItemAction=u;let h=s=class{static label(d,l){return l?.renderShortTitle&&d.shortTitle?typeof d.shortTitle=="string"?d.shortTitle:d.shortTitle.value:typeof d.title=="string"?d.title:d.title.value}constructor(d,l,p,m,v,b){var w,E;this.hideActions=m,this._commandService=b,this.id=d.id,this.label=s.label(d,p),this.tooltip=(E=typeof d.tooltip=="string"?d.tooltip:(w=d.tooltip)===null||w===void 0?void 0:w.value)!==null&&E!==void 0?E:"",this.enabled=!d.precondition||v.contextMatchesRules(d.precondition),this.checked=void 0;let I;if(d.toggled){const M=d.toggled.condition?d.toggled:{condition:d.toggled};this.checked=v.contextMatchesRules(M.condition),this.checked&&M.tooltip&&(this.tooltip=typeof M.tooltip=="string"?M.tooltip:M.tooltip.value),this.checked&&k.ThemeIcon.isThemeIcon(M.icon)&&(I=M.icon),this.checked&&M.title&&(this.label=typeof M.title=="string"?M.title:M.title.value)}I||(I=k.ThemeIcon.isThemeIcon(d.icon)?d.icon:void 0),this.item=d,this.alt=l?new s(l,void 0,p,m,v,b):void 0,this._options=p,this.class=I&&k.ThemeIcon.asClassName(I)}run(...d){var l,p;let m=[];return!((l=this._options)===null||l===void 0)&&l.arg&&(m=[...m,this._options.arg]),!((p=this._options)===null||p===void 0)&&p.shouldForwardArgs&&(m=[...m,...d]),this._commandService.executeCommand(this.id,...m)}};e.MenuItemAction=h,e.MenuItemAction=h=s=ke([fe(4,_.IContextKeyService),fe(5,f.ICommandService)],h);class r{constructor(d){this.desc=d}}e.Action2=r;function c(o){const d=new D.DisposableStore,l=new o,p=l.desc,{f1:m,menu:v,keybinding:b,description:w}=p,E=vi(p,["f1","menu","keybinding","description"]);if(d.add(f.CommandsRegistry.registerCommand({id:E.id,handler:(I,...M)=>l.run(I,...M),description:w})),Array.isArray(v))for(const I of v)d.add(e.MenuRegistry.appendMenuItem(I.id,Object.assign({command:Object.assign(Object.assign({},E),{precondition:I.precondition===null?void 0:E.precondition})},I)));else v&&d.add(e.MenuRegistry.appendMenuItem(v.id,Object.assign({command:Object.assign(Object.assign({},E),{precondition:v.precondition===null?void 0:E.precondition})},v)));if(m&&(d.add(e.MenuRegistry.appendMenuItem(t.CommandPalette,{command:E,when:E.precondition})),d.add(e.MenuRegistry.addCommand(E))),Array.isArray(b))for(const I of b)d.add(C.KeybindingsRegistry.registerKeybindingRule(Object.assign(Object.assign({},I),{id:E.id,when:E.precondition?_.ContextKeyExpr.and(E.precondition,I.when):I.when})));else b&&d.add(C.KeybindingsRegistry.registerKeybindingRule(Object.assign(Object.assign({},b),{id:E.id,when:E.precondition?_.ContextKeyExpr.and(E.precondition,b.when):b.when})));return d}e.registerAction2=c}),define(ne[783],se([1,0,33,21,605,30,27,15]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findFocusedDiffEditor=e.AccessibleDiffViewerPrev=e.AccessibleDiffViewerNext=void 0;const _={value:(0,y.localize)(0,null),original:"Accessible Diff Viewer"};class g extends D.Action2{constructor(){super({id:g.id,title:{value:(0,y.localize)(1,null),original:"Go to Next Difference"},category:_,precondition:f.ContextKeyExpr.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(t){const a=s(t);a?.accessibleDiffViewerNext()}}e.AccessibleDiffViewerNext=g,g.id="editor.action.accessibleDiffViewer.next",D.MenuRegistry.appendMenuItem(D.MenuId.EditorTitle,{command:{id:g.id,title:(0,y.localize)(2,null)},order:10,group:"2_diff",when:f.ContextKeyExpr.and(k.EditorContextKeys.accessibleDiffViewerVisible.negate(),f.ContextKeyExpr.has("isInDiffEditor"))});class C extends D.Action2{constructor(){super({id:C.id,title:{value:(0,y.localize)(3,null),original:"Go to Previous Difference"},category:_,precondition:f.ContextKeyExpr.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(t){const a=s(t);a?.accessibleDiffViewerPrev()}}e.AccessibleDiffViewerPrev=C,C.id="editor.action.accessibleDiffViewer.prev";function s(n){var t;const a=n.get(L.ICodeEditorService),u=a.listDiffEditors(),h=(t=a.getFocusedCodeEditor())!==null&&t!==void 0?t:a.getActiveCodeEditor();if(!h)return null;for(let r=0,c=u.length;r{this._instantiateSome(1)})),this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(2)})),this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(3)},5e3))}saveViewState(){const f={};for(const[_,g]of this._instances)typeof g.saveViewState=="function"&&(f[_]=g.saveViewState());return f}restoreViewState(f){for(const[_,g]of this._instances)typeof g.restoreViewState=="function"&&g.restoreViewState(f[_])}get(f){return this._instantiateById(f),this._instances.get(f)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(1)},50))}_instantiateSome(f){if(this._finishedInstantiation[f])return;this._finishedInstantiation[f]=!0;const _=this._findPendingContributionsByInstantiation(f);for(const g of _)this._instantiateById(g.id)}_findPendingContributionsByInstantiation(f){const _=[];for(const[,g]of this._pending)g.instantiation===f&&_.push(g);return _}_instantiateById(f){const _=this._pending.get(f);if(_){if(this._pending.delete(f),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const g=this._instantiationService.createInstance(_.ctor,this._editor);this._instances.set(_.id,g),typeof g.restoreViewState=="function"&&_.instantiation!==0&&console.warn(`Editor contribution '${_.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(g){(0,k.onUnexpectedError)(g)}}}}e.CodeEditorContributions=D}),define(ne[785],se([1,0,49,201,707,30,15]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleTabFocusModeAction=void 0;class f extends D.Action2{constructor(){super({id:f.ID,title:{value:y.localize(0,null),original:"Toggle Tab Key Moves Focus"},precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},f1:!0})}run(g){const C=g.get(S.IContextKeyService).getContextKeyValue("focusedView")==="terminal"?"terminalFocus":"editorFocus",i=!k.TabFocus.getTabFocusMode(C);k.TabFocus.setTabFocusMode(i,C),i?(0,L.alert)(y.localize(1,null)):(0,L.alert)(y.localize(2,null))}}e.ToggleTabFocusModeAction=f,f.ID="editor.action.toggleTabFocusMode",(0,D.registerAction2)(f)}),define(ne[346],se([1,0,228,582,15,118,726,2]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextScopedReplaceInput=e.ContextScopedFindInput=e.registerAndCreateHistoryNavigationContext=e.historyNavigationVisible=void 0,e.historyNavigationVisible=new y.RawContextKey("suggestWidgetVisible",!1,(0,S.localize)(0,null));const _="historyNavigationWidgetFocus",g="historyNavigationForwardsEnabled",C="historyNavigationBackwardsEnabled";let s;const i=[];function n(u,h){if(i.includes(h))throw new Error("Cannot register the same widget multiple times");i.push(h);const r=new f.DisposableStore,c=new y.RawContextKey(_,!1).bindTo(u),o=new y.RawContextKey(g,!0).bindTo(u),d=new y.RawContextKey(C,!0).bindTo(u),l=()=>{c.set(!0),s=h},p=()=>{c.set(!1),s===h&&(s=void 0)};return h.element===document.activeElement&&l(),r.add(h.onDidFocus(()=>l())),r.add(h.onDidBlur(()=>p())),r.add((0,f.toDisposable)(()=>{i.splice(i.indexOf(h),1),p()})),{historyNavigationForwardsEnablement:o,historyNavigationBackwardsEnablement:d,dispose(){r.dispose()}}}e.registerAndCreateHistoryNavigationContext=n;let t=class extends L.FindInput{constructor(h,r,c,o){super(h,r,c);const d=this._register(o.createScoped(this.inputBox.element));this._register(n(d,this.inputBox))}};e.ContextScopedFindInput=t,e.ContextScopedFindInput=t=ke([fe(3,y.IContextKeyService)],t);let a=class extends k.ReplaceInput{constructor(h,r,c,o,d=!1){super(h,r,d,c);const l=this._register(o.createScoped(this.inputBox.element));this._register(n(l,this.inputBox))}};e.ContextScopedReplaceInput=a,e.ContextScopedReplaceInput=a=ke([fe(3,y.IContextKeyService)],a),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(_),y.ContextKeyExpr.equals(C,!0),y.ContextKeyExpr.not("isComposing"),e.historyNavigationVisible.isEqualTo(!1)),primary:16,secondary:[528],handler:u=>{s?.showPreviousValue()}}),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(_),y.ContextKeyExpr.equals(g,!0),y.ContextKeyExpr.not("isComposing"),e.historyNavigationVisible.isEqualTo(!1)),primary:18,secondary:[530],handler:u=>{s?.showNextValue()}})}),define(ne[135],se([1,0,19,9,72,2,58,20,22,12,5,69,128,700,30,27,15,18,346]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickSuggestionsOptions=e.showSimpleSuggestions=e.getSuggestionComparator=e.provideSuggestionItems=e.CompletionItemModel=e.getSnippetSuggestSupport=e.CompletionOptions=e.CompletionItem=e.suggestWidgetStatusbarMenu=e.Context=void 0,e.Context={Visible:r.historyNavigationVisible,HasFocusedSuggestion:new u.RawContextKey("suggestWidgetHasFocusedSuggestion",!1,(0,n.localize)(0,null)),DetailsVisible:new u.RawContextKey("suggestWidgetDetailsVisible",!1,(0,n.localize)(1,null)),MultipleSuggestions:new u.RawContextKey("suggestWidgetMultipleSuggestions",!1,(0,n.localize)(2,null)),MakesTextEdit:new u.RawContextKey("suggestionMakesTextEdit",!0,(0,n.localize)(3,null)),AcceptSuggestionsOnEnter:new u.RawContextKey("acceptSuggestionOnEnter",!0,(0,n.localize)(4,null)),HasInsertAndReplaceRange:new u.RawContextKey("suggestionHasInsertAndReplaceRange",!1,(0,n.localize)(5,null)),InsertMode:new u.RawContextKey("suggestionInsertMode",void 0,{type:"string",description:(0,n.localize)(6,null)}),CanResolve:new u.RawContextKey("suggestionCanResolve",!1,(0,n.localize)(7,null))},e.suggestWidgetStatusbarMenu=new t.MenuId("suggestWidgetStatusBar");class c{constructor(T,A,N,F){var O;this.position=T,this.completion=A,this.container=N,this.provider=F,this.isInvalid=!1,this.score=y.FuzzyScore.Default,this.distance=0,this.textLabel=typeof A.label=="string"?A.label:(O=A.label)===null||O===void 0?void 0:O.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=A.sortText&&A.sortText.toLowerCase(),this.filterTextLow=A.filterText&&A.filterText.toLowerCase(),this.extensionId=A.extensionId,C.Range.isIRange(A.range)?(this.editStart=new g.Position(A.range.startLineNumber,A.range.startColumn),this.editInsertEnd=new g.Position(A.range.endLineNumber,A.range.endColumn),this.editReplaceEnd=new g.Position(A.range.endLineNumber,A.range.endColumn),this.isInvalid=this.isInvalid||C.Range.spansMultipleLines(A.range)||A.range.startLineNumber!==T.lineNumber):(this.editStart=new g.Position(A.range.insert.startLineNumber,A.range.insert.startColumn),this.editInsertEnd=new g.Position(A.range.insert.endLineNumber,A.range.insert.endColumn),this.editReplaceEnd=new g.Position(A.range.replace.endLineNumber,A.range.replace.endColumn),this.isInvalid=this.isInvalid||C.Range.spansMultipleLines(A.range.insert)||C.Range.spansMultipleLines(A.range.replace)||A.range.insert.startLineNumber!==T.lineNumber||A.range.replace.startLineNumber!==T.lineNumber||A.range.insert.startColumn!==A.range.replace.startColumn),typeof F.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}resolve(T){return we(this,void 0,void 0,function*(){if(!this._resolveCache){const A=T.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),N=new S.StopWatch(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,T)).then(F=>{Object.assign(this.completion,F),this._resolveDuration=N.elapsed(),A.dispose()},F=>{(0,k.isCancellationError)(F)&&(this._resolveCache=void 0,this._resolveDuration=void 0)})}return this._resolveCache})}}e.CompletionItem=c;class o{constructor(T=2,A=new Set,N=new Set,F=new Map,O=!0){this.snippetSortOrder=T,this.kindFilter=A,this.providerFilter=N,this.providerItemsToReuse=F,this.showDeprecated=O}}e.CompletionOptions=o,o.default=new o;let d;function l(){return d}e.getSnippetSuggestSupport=l;class p{constructor(T,A,N,F){this.items=T,this.needsClipboard=A,this.durations=N,this.disposable=F}}e.CompletionItemModel=p;function m(x,T,A,N=o.default,F={triggerKind:0},O=L.CancellationToken.None){return we(this,void 0,void 0,function*(){const W=new S.StopWatch;A=A.clone();const U=T.getWordAtPosition(A),j=U?new C.Range(A.lineNumber,U.startColumn,A.lineNumber,U.endColumn):C.Range.fromPositions(A),R={replace:j,insert:j.setEndPosition(A.lineNumber,A.column)},K=[],G=new D.DisposableStore,Z=[];let J=!1;const X=(B,V,Y)=>{var ie,ae,ce;let de=!1;if(!V)return de;for(const he of V.suggestions)if(!N.kindFilter.has(he.kind)){if(!N.showDeprecated&&(!((ie=he?.tags)===null||ie===void 0)&&ie.includes(1)))continue;he.range||(he.range=R),he.sortText||(he.sortText=typeof he.label=="string"?he.label:he.label.label),!J&&he.insertTextRules&&he.insertTextRules&4&&(J=i.SnippetParser.guessNeedsClipboard(he.insertText)),K.push(new c(A,he,V,B)),de=!0}return(0,D.isDisposable)(V)&&G.add(V),Z.push({providerName:(ae=B._debugDisplayName)!==null&&ae!==void 0?ae:"unknown_provider",elapsedProvider:(ce=V.duration)!==null&&ce!==void 0?ce:-1,elapsedOverall:Y.elapsed()}),de},H=(()=>we(this,void 0,void 0,function*(){if(!d||N.kindFilter.has(27))return;const B=N.providerItemsToReuse.get(d);if(B){B.forEach(ie=>K.push(ie));return}if(N.providerFilter.size>0&&!N.providerFilter.has(d))return;const V=new S.StopWatch,Y=yield d.provideCompletionItems(T,A,F,O);X(d,Y,V)}))();for(const B of x.orderedGroups(T)){let V=!1;if(yield Promise.all(B.map(Y=>we(this,void 0,void 0,function*(){if(N.providerItemsToReuse.has(Y)){const ie=N.providerItemsToReuse.get(Y);ie.forEach(ae=>K.push(ae)),V=V||ie.length>0;return}if(!(N.providerFilter.size>0&&!N.providerFilter.has(Y)))try{const ie=new S.StopWatch,ae=yield Y.provideCompletionItems(T,A,F,O);V=X(Y,ae,ie)||V}catch(ie){(0,k.onUnexpectedExternalError)(ie)}}))),V||O.isCancellationRequested)break}return yield H,O.isCancellationRequested?(G.dispose(),Promise.reject(new k.CancellationError)):new p(K.sort(I(N.snippetSortOrder)),J,{entries:Z,elapsed:W.elapsed()},G)})}e.provideSuggestionItems=m;function v(x,T){if(x.sortTextLow&&T.sortTextLow){if(x.sortTextLowT.sortTextLow)return 1}return x.textLabelT.textLabel?1:x.completion.kind-T.completion.kind}function b(x,T){if(x.completion.kind!==T.completion.kind){if(x.completion.kind===27)return-1;if(T.completion.kind===27)return 1}return v(x,T)}function w(x,T){if(x.completion.kind!==T.completion.kind){if(x.completion.kind===27)return 1;if(T.completion.kind===27)return-1}return v(x,T)}const E=new Map;E.set(0,b),E.set(2,w),E.set(1,v);function I(x){return E.get(x)}e.getSuggestionComparator=I,a.CommandsRegistry.registerCommand("_executeCompletionItemProvider",(x,...T)=>we(void 0,void 0,void 0,function*(){const[A,N,F,O]=T;(0,f.assertType)(_.URI.isUri(A)),(0,f.assertType)(g.Position.isIPosition(N)),(0,f.assertType)(typeof F=="string"||!F),(0,f.assertType)(typeof O=="number"||!O);const{completionProvider:W}=x.get(h.ILanguageFeaturesService),U=yield x.get(s.ITextModelService).createModelReference(A);try{const j={incomplete:!1,suggestions:[]},R=[],K=U.object.textEditorModel.validatePosition(N),G=yield m(W,U.object.textEditorModel,K,void 0,{triggerCharacter:F??void 0,triggerKind:F?1:0});for(const Z of G.items)R.length<(O??0)&&R.push(Z.resolve(L.CancellationToken.None)),j.incomplete=j.incomplete||Z.container.incomplete,j.suggestions.push(Z.completion);try{return yield Promise.all(R),j}finally{setTimeout(()=>G.disposable.dispose(),100)}}finally{U.dispose()}}));function M(x,T){var A;(A=x.getContribution("editor.contrib.suggestController"))===null||A===void 0||A.triggerSuggest(new Set().add(T),void 0,!0)}e.showSimpleSuggestions=M;class P{static isAllOff(T){return T.other==="off"&&T.comments==="off"&&T.strings==="off"}static isAllOn(T){return T.other==="on"&&T.comments==="on"&&T.strings==="on"}static valueFor(T,A){switch(A){case 1:return T.comments;case 2:return T.strings;default:return T.other}}}e.QuickSuggestionsOptions=P}),define(ne[136],se([1,0,14,2,37]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickAccessRegistry=e.Extensions=e.DefaultQuickAccessFilterValue=void 0;var D;(function(f){f[f.PRESERVE=0]="PRESERVE",f[f.LAST=1]="LAST"})(D||(e.DefaultQuickAccessFilterValue=D={})),e.Extensions={Quickaccess:"workbench.contributions.quickaccess"};class S{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(_){return _.prefix.length===0?this.defaultProvider=_:this.providers.push(_),this.providers.sort((g,C)=>C.prefix.length-g.prefix.length),(0,k.toDisposable)(()=>{this.providers.splice(this.providers.indexOf(_),1),this.defaultProvider===_&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return(0,L.coalesce)([this.defaultProvider,...this.providers])}getQuickAccessProvider(_){return _&&this.providers.find(C=>_.startsWith(C.prefix))||void 0||this.defaultProvider}}e.QuickAccessRegistry=S,y.Registry.add(e.Extensions.Quickaccess,new S)}),define(ne[786],se([1,0,731,37,2,34,136,71]),function(Q,e,L,k,y,D,S,f){"use strict";var _;Object.defineProperty(e,"__esModule",{value:!0}),e.HelpQuickAccessProvider=void 0;let g=_=class{constructor(s,i){this.quickInputService=s,this.keybindingService=i,this.registry=k.Registry.as(S.Extensions.Quickaccess)}provide(s){const i=new y.DisposableStore;return i.add(s.onDidAccept(()=>{const[n]=s.selectedItems;n&&this.quickInputService.quickAccess.show(n.prefix,{preserveValue:!0})})),i.add(s.onDidChangeValue(n=>{const t=this.registry.getQuickAccessProvider(n.substr(_.PREFIX.length));t&&t.prefix&&t.prefix!==_.PREFIX&&this.quickInputService.quickAccess.show(t.prefix,{preserveValue:!0})})),s.items=this.getQuickAccessProviders().filter(n=>n.prefix!==_.PREFIX),i}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((i,n)=>i.prefix.localeCompare(n.prefix)).flatMap(i=>this.createPicks(i))}createPicks(s){return s.helpEntries.map(i=>{const n=i.prefix||s.prefix,t=n||"\u2026";return{prefix:n,label:t,keybinding:i.commandId?this.keybindingService.lookupKeybinding(i.commandId):void 0,ariaLabel:(0,L.localize)(0,null,t,i.description),description:i.description}})}};e.HelpQuickAccessProvider=g,g.PREFIX="?",e.HelpQuickAccessProvider=g=_=ke([fe(0,f.IQuickInputService),fe(1,D.IKeybindingService)],g)}),define(ne[787],se([1,0,37,136,94,786]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:D.HelpQuickAccessProvider,prefix:"",helpEntries:[{description:y.QuickHelpNLS.helpQuickAccessActionLabel}]})}),define(ne[788],se([1,0,13,19,99,2,8,136,71,37]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickAccessController=void 0;let C=class extends D.Disposable{constructor(i,n){super(),this.quickInputService=i,this.instantiationService=n,this.registry=g.Registry.as(f.Extensions.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(i="",n){this.doShowOrPick(i,!1,n)}doShowOrPick(i,n,t){var a;const[u,h]=this.getOrInstantiateProvider(i),r=this.visibleQuickAccess,c=r?.descriptor;if(r&&h&&c===h){i!==h.prefix&&!t?.preserveValue&&(r.picker.value=i),this.adjustValueSelection(r.picker,h,t);return}if(h&&!t?.preserveValue){let m;if(r&&c&&c!==h){const v=r.value.substr(c.prefix.length);v&&(m=`${h.prefix}${v}`)}if(!m){const v=u?.defaultFilterValue;v===f.DefaultQuickAccessFilterValue.LAST?m=this.lastAcceptedPickerValues.get(h):typeof v=="string"&&(m=`${h.prefix}${v}`)}typeof m=="string"&&(i=m)}const o=new D.DisposableStore,d=o.add(this.quickInputService.createQuickPick());d.value=i,this.adjustValueSelection(d,h,t),d.placeholder=h?.placeholder,d.quickNavigate=t?.quickNavigateConfiguration,d.hideInput=!!d.quickNavigate&&!r,(typeof t?.itemActivation=="number"||t?.quickNavigateConfiguration)&&(d.itemActivation=(a=t?.itemActivation)!==null&&a!==void 0?a:_.ItemActivation.SECOND),d.contextKey=h?.contextKey,d.filterValue=m=>m.substring(h?h.prefix.length:0);let l;n&&(l=new L.DeferredPromise,o.add((0,y.once)(d.onWillAccept)(m=>{m.veto(),d.hide()}))),o.add(this.registerPickerListeners(d,u,h,i,t?.providerOptions));const p=o.add(new k.CancellationTokenSource);if(u&&o.add(u.provide(d,p.token,t?.providerOptions)),(0,y.once)(d.onDidHide)(()=>{d.selectedItems.length===0&&p.cancel(),o.dispose(),l?.complete(d.selectedItems.slice(0))}),d.show(),n)return l?.p}adjustValueSelection(i,n,t){var a;let u;t?.preserveValue?u=[i.value.length,i.value.length]:u=[(a=n?.prefix.length)!==null&&a!==void 0?a:0,i.value.length],i.valueSelection=u}registerPickerListeners(i,n,t,a,u){const h=new D.DisposableStore,r=this.visibleQuickAccess={picker:i,descriptor:t,value:a};return h.add((0,D.toDisposable)(()=>{r===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),h.add(i.onDidChangeValue(c=>{const[o]=this.getOrInstantiateProvider(c);o!==n?this.show(c,{preserveValue:!0,providerOptions:u}):r.value=c})),t&&h.add(i.onDidAccept(()=>{this.lastAcceptedPickerValues.set(t,i.value)})),h}getOrInstantiateProvider(i){const n=this.registry.getQuickAccessProvider(i);if(!n)return[void 0,void 0];let t=this.mapProviderToDescriptor.get(n);return t||(t=this.instantiationService.createInstance(n.ctor),this.mapProviderToDescriptor.set(n,t)),[t,n]}};e.QuickAccessController=C,e.QuickAccessController=C=ke([fe(0,_.IQuickInputService),fe(1,S.IInstantiationService)],C)}),define(ne[789],se([1,0,25,26,101,474]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SeverityIcon=void 0;var D;(function(S){function f(_){switch(_){case y.default.Ignore:return"severity-ignore "+k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Info:return k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Warning:return k.ThemeIcon.asClassName(L.Codicon.warning);case y.default.Error:return k.ThemeIcon.asClassName(L.Codicon.error);default:return""}}S.className=f})(D||(e.SeverityIcon=D={}))}),define(ne[87],se([1,0,6,2,20,588,8]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InMemoryStorageService=e.AbstractStorageService=e.loadKeyTargets=e.WillSaveStateReason=e.IStorageService=e.TARGET_KEY=void 0,e.TARGET_KEY="__$__targetStorageMarker",e.IStorageService=(0,S.createDecorator)("storageService");var f;(function(s){s[s.NONE=0]="NONE",s[s.SHUTDOWN=1]="SHUTDOWN"})(f||(e.WillSaveStateReason=f={}));function _(s){const i=s.get(e.TARGET_KEY);if(i)try{return JSON.parse(i)}catch{}return Object.create(null)}e.loadKeyTargets=_;class g extends k.Disposable{constructor(i={flushInterval:g.DEFAULT_FLUSH_INTERVAL}){super(),this.options=i,this._onDidChangeValue=this._register(new L.PauseableEmitter),this._onDidChangeTarget=this._register(new L.PauseableEmitter),this._onWillSaveState=this._register(new L.Emitter),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(i,n,t){return L.Event.filter(this._onDidChangeValue.event,a=>a.scope===i&&(n===void 0||a.key===n),t)}emitDidChangeValue(i,n){const{key:t,external:a}=n;if(t===e.TARGET_KEY){switch(i){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:i})}else this._onDidChangeValue.fire({scope:i,key:t,target:this.getKeyTargets(i)[t],external:a})}get(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.get(i,t)}getBoolean(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.getBoolean(i,t)}getNumber(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.getNumber(i,t)}store(i,n,t,a,u=!1){if((0,y.isUndefinedOrNull)(n)){this.remove(i,t,u);return}this.withPausedEmitters(()=>{var h;this.updateKeyTarget(i,t,a),(h=this.getStorage(t))===null||h===void 0||h.set(i,n,u)})}remove(i,n,t=!1){this.withPausedEmitters(()=>{var a;this.updateKeyTarget(i,n,void 0),(a=this.getStorage(n))===null||a===void 0||a.delete(i,t)})}withPausedEmitters(i){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{i()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(i,n,t,a=!1){var u,h;const r=this.getKeyTargets(n);typeof t=="number"?r[i]!==t&&(r[i]=t,(u=this.getStorage(n))===null||u===void 0||u.set(e.TARGET_KEY,JSON.stringify(r),a)):typeof r[i]=="number"&&(delete r[i],(h=this.getStorage(n))===null||h===void 0||h.set(e.TARGET_KEY,JSON.stringify(r),a))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(i){switch(i){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(i){const n=this.getStorage(i);return n?_(n):Object.create(null)}}e.AbstractStorageService=g,g.DEFAULT_FLUSH_INTERVAL=60*1e3;class C extends g{constructor(){super(),this.applicationStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(i=>this.emitDidChangeValue(1,i))),this._register(this.profileStorage.onDidChangeStorage(i=>this.emitDidChangeValue(0,i))),this._register(this.applicationStorage.onDidChangeStorage(i=>this.emitDidChangeValue(-1,i)))}getStorage(i){switch(i){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}e.InMemoryStorageService=C}),define(ne[790],se([1,0,13,99,65,5,332,50,8,87]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeLensCache=e.ICodeLensCache=void 0,e.ICodeLensCache=(0,_.createDecorator)("ICodeLensCache");class C{constructor(n,t){this.lineCount=n,this.data=t}}let s=class{constructor(n){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new y.LRUCache(20,.75);const t="codelens/cache";(0,L.runWhenIdle)(()=>n.remove(t,1));const a="codelens/cache2",u=n.get(a,1,"{}");this._deserialize(u),(0,k.once)(n.onWillSaveState)(h=>{h.reason===g.WillSaveStateReason.SHUTDOWN&&n.store(a,this._serialize(),1,1)})}put(n,t){const a=t.lenses.map(r=>{var c;return{range:r.symbol.range,command:r.symbol.command&&{id:"",title:(c=r.symbol.command)===null||c===void 0?void 0:c.title}}}),u=new S.CodeLensModel;u.add({lenses:a,dispose:()=>{}},this._fakeProvider);const h=new C(n.getLineCount(),u);this._cache.set(n.uri.toString(),h)}get(n){const t=this._cache.get(n.uri.toString());return t&&t.lineCount===n.getLineCount()?t.data:void 0}delete(n){this._cache.delete(n.uri.toString())}_serialize(){const n=Object.create(null);for(const[t,a]of this._cache){const u=new Set;for(const h of a.data.lenses)u.add(h.symbol.range.startLineNumber);n[t]={lineCount:a.lineCount,lines:[...u.values()]}}return JSON.stringify(n)}_deserialize(n){try{const t=JSON.parse(n);for(const a in t){const u=t[a],h=[];for(const c of u.lines)h.push({range:new D.Range(c,1,c,11)});const r=new S.CodeLensModel;r.add({lenses:h,dispose(){}},this._fakeProvider),this._cache.set(a,new C(u.lineCount,r))}}catch{}}};e.CodeLensCache=s,e.CodeLensCache=s=ke([fe(0,g.IStorageService)],s),(0,f.registerSingleton)(e.ICodeLensCache,s,1)}),define(ne[347],se([1,0,13,2,65,198,29,28,50,8,87]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";var s;Object.defineProperty(e,"__esModule",{value:!0}),e.ISuggestMemoryService=e.SuggestMemoryService=e.PrefixMemory=e.LRUMemory=e.NoMemory=e.Memory=void 0;class i{constructor(r){this.name=r}select(r,c,o){if(o.length===0)return 0;const d=o[0].score[0];for(let l=0;lv&&E.type===o[b].completion.kind&&E.insertText===o[b].completion.insertText&&(v=E.touch,m=b),o[b].completion.preselect&&p===-1)return p=b}return m!==-1?m:p!==-1?p:0}toJSON(){return this._cache.toJSON()}fromJSON(r){this._cache.clear();const c=0;for(const[o,d]of r)d.touch=c,d.type=typeof d.type=="number"?d.type:S.CompletionItemKinds.fromString(d.type),this._cache.set(o,d);this._seq=this._cache.size}}e.LRUMemory=t;class a extends i{constructor(){super("recentlyUsedByPrefix"),this._trie=D.TernarySearchTree.forStrings(),this._seq=0}memorize(r,c,o){const{word:d}=r.getWordUntilPosition(c),l=`${r.getLanguageId()}/${d}`;this._trie.set(l,{type:o.completion.kind,insertText:o.completion.insertText,touch:this._seq++})}select(r,c,o){const{word:d}=r.getWordUntilPosition(c);if(!d)return super.select(r,c,o);const l=`${r.getLanguageId()}/${d}`;let p=this._trie.get(l);if(p||(p=this._trie.findSubstr(l)),p)for(let m=0;mr.push([o,c])),r.sort((c,o)=>-(c[1].touch-o[1].touch)).forEach((c,o)=>c[1].touch=o),r.slice(0,200)}fromJSON(r){if(this._trie.clear(),r.length>0){this._seq=r[0][1].touch+1;for(const[c,o]of r)o.type=typeof o.type=="number"?o.type:S.CompletionItemKinds.fromString(o.type),this._trie.set(c,o)}}}e.PrefixMemory=a;let u=s=class{constructor(r,c){this._storageService=r,this._configService=c,this._disposables=new k.DisposableStore,this._persistSoon=new L.RunOnceScheduler(()=>this._saveState(),500),this._disposables.add(r.onWillSaveState(o=>{o.reason===C.WillSaveStateReason.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(r,c,o){this._withStrategy(r,c).memorize(r,c,o),this._persistSoon.schedule()}select(r,c,o){return this._withStrategy(r,c).select(r,c,o)}_withStrategy(r,c){var o;const d=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:r.getLanguageIdAtPosition(c.lineNumber,c.column),resource:r.uri});if(((o=this._strategy)===null||o===void 0?void 0:o.name)!==d){this._saveState();const l=s._strategyCtors.get(d)||n;this._strategy=new l;try{const m=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,v=this._storageService.get(`${s._storagePrefix}/${d}`,m);v&&this._strategy.fromJSON(JSON.parse(v))}catch{}}return this._strategy}_saveState(){if(this._strategy){const c=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,o=JSON.stringify(this._strategy);this._storageService.store(`${s._storagePrefix}/${this._strategy.name}`,o,c,1)}}};e.SuggestMemoryService=u,u._strategyCtors=new Map([["recentlyUsedByPrefix",a],["recentlyUsed",t],["first",n]]),u._storagePrefix="suggest/memories",e.SuggestMemoryService=u=s=ke([fe(0,C.IStorageService),fe(1,f.IConfigurationService)],u),e.ISuggestMemoryService=(0,g.createDecorator)("ISuggestMemories"),(0,_.registerSingleton)(e.ISuggestMemoryService,u,1)}),define(ne[791],se([1,0,13,6,2,30,27,15,39,87,14,719]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";var i,n;Object.defineProperty(e,"__esModule",{value:!0}),e.MenuService=void 0;let t=class{constructor(o,d){this._commandService=o,this._hiddenStates=new a(d)}createMenu(o,d,l){return new h(o,this._hiddenStates,Object.assign({emitEventsForSubmenuChanges:!1,eventDebounceDelay:50},l),this._commandService,d)}resetHiddenStates(o){this._hiddenStates.reset(o)}};e.MenuService=t,e.MenuService=t=ke([fe(0,S.ICommandService),fe(1,g.IStorageService)],t);let a=i=class{constructor(o){this._storageService=o,this._disposables=new y.DisposableStore,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const d=o.get(i._key,0,"{}");this._data=JSON.parse(d)}catch{this._data=Object.create(null)}this._disposables.add(o.onDidChangeValue(0,i._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const d=o.get(i._key,0,"{}");this._data=JSON.parse(d)}catch(d){console.log("FAILED to read storage after UPDATE",d)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(o,d){var l;return(l=this._hiddenByDefaultCache.get(`${o.id}/${d}`))!==null&&l!==void 0?l:!1}setDefaultState(o,d,l){this._hiddenByDefaultCache.set(`${o.id}/${d}`,l)}isHidden(o,d){var l,p;const m=this._isHiddenByDefault(o,d),v=(p=(l=this._data[o.id])===null||l===void 0?void 0:l.includes(d))!==null&&p!==void 0?p:!1;return m?!v:v}updateHidden(o,d,l){this._isHiddenByDefault(o,d)&&(l=!l);const m=this._data[o.id];if(l)m?m.indexOf(d)<0&&m.push(d):this._data[o.id]=[d];else if(m){const v=m.indexOf(d);v>=0&&(0,C.removeFastWithoutKeepingOrder)(m,v),m.length===0&&delete this._data[o.id]}this._persist()}reset(o){if(o===void 0)this._data=Object.create(null),this._persist();else{for(const{id:d}of o)this._data[d]&&delete this._data[d];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const o=JSON.stringify(this._data);this._storageService.store(i._key,o,0,0)}finally{this._ignoreChangeEvent=!1}}};a._key="menu.hiddenCommands",a=i=ke([fe(0,g.IStorageService)],a);let u=n=class{constructor(o,d,l,p,m){this._id=o,this._hiddenStates=d,this._collectContextKeysForSubmenus=l,this._commandService=p,this._contextKeyService=m,this._menuGroups=[],this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const o=D.MenuRegistry.getMenuItems(this._id);let d;o.sort(n._compareMenuItems);for(const l of o){const p=l.group||"";(!d||d[0]!==p)&&(d=[p,[]],this._menuGroups.push(d)),d[1].push(l),this._collectContextKeys(l)}}_collectContextKeys(o){if(n._fillInKbExprKeys(o.when,this._structureContextKeys),(0,D.isIMenuItem)(o)){if(o.command.precondition&&n._fillInKbExprKeys(o.command.precondition,this._preconditionContextKeys),o.command.toggled){const d=o.command.toggled.condition||o.command.toggled;n._fillInKbExprKeys(d,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&D.MenuRegistry.getMenuItems(o.submenu).forEach(this._collectContextKeys,this)}createActionGroups(o){const d=[];for(const l of this._menuGroups){const[p,m]=l,v=[];for(const b of m)if(this._contextKeyService.contextMatchesRules(b.when)){const w=(0,D.isIMenuItem)(b);w&&this._hiddenStates.setDefaultState(this._id,b.command.id,!!b.isHiddenByDefault);const E=r(this._id,w?b.command:b,this._hiddenStates);if(w)v.push(new D.MenuItemAction(b.command,b.alt,o,E,this._contextKeyService,this._commandService));else{const I=new n(b.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(o),M=_.Separator.join(...I.map(P=>P[1]));M.length>0&&v.push(new D.SubmenuItemAction(b,E,M))}}v.length>0&&d.push([p,v])}return d}static _fillInKbExprKeys(o,d){if(o)for(const l of o.keys())d.add(l)}static _compareMenuItems(o,d){const l=o.group,p=d.group;if(l!==p){if(l){if(!p)return-1}else return 1;if(l==="navigation")return-1;if(p==="navigation")return 1;const b=l.localeCompare(p);if(b!==0)return b}const m=o.order||0,v=d.order||0;return mv?1:n._compareTitles((0,D.isIMenuItem)(o)?o.command.title:o.title,(0,D.isIMenuItem)(d)?d.command.title:d.title)}static _compareTitles(o,d){const l=typeof o=="string"?o:o.original,p=typeof d=="string"?d:d.original;return l.localeCompare(p)}};u=n=ke([fe(3,S.ICommandService),fe(4,f.IContextKeyService)],u);let h=class{constructor(o,d,l,p,m){this._disposables=new y.DisposableStore,this._menuInfo=new u(o,d,l.emitEventsForSubmenuChanges,p,m);const v=new L.RunOnceScheduler(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},l.eventDebounceDelay);this._disposables.add(v),this._disposables.add(D.MenuRegistry.onDidChangeMenu(I=>{I.has(o)&&v.schedule()}));const b=this._disposables.add(new y.DisposableStore),w=I=>{let M=!1,P=!1,x=!1;for(const T of I)if(M=M||T.isStructuralChange,P=P||T.isEnablementChange,x=x||T.isToggleChange,M&&P&&x)break;return{menu:this,isStructuralChange:M,isEnablementChange:P,isToggleChange:x}},E=()=>{b.add(m.onDidChangeContext(I=>{const M=I.affectsSome(this._menuInfo.structureContextKeys),P=I.affectsSome(this._menuInfo.preconditionContextKeys),x=I.affectsSome(this._menuInfo.toggledContextKeys);(M||P||x)&&this._onDidChange.fire({menu:this,isStructuralChange:M,isEnablementChange:P,isToggleChange:x})})),b.add(d.onDidChange(I=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new k.DebounceEmitter({onWillAddFirstListener:E,onDidRemoveLastListener:b.clear.bind(b),delay:l.eventDebounceDelay,merge:w}),this.onDidChange=this._onDidChange.event}getActions(o){return this._menuInfo.createActionGroups(o)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};h=ke([fe(3,S.ICommandService),fe(4,f.IContextKeyService)],h);function r(c,o,d){const l=(0,D.isISubmenuItem)(o)?o.submenu.id:o.id,p=typeof o.title=="string"?o.title:o.title.value,m=(0,_.toAction)({id:`hide/${c.id}/${l}`,label:(0,s.localize)(0,null,p),run(){d.updateHidden(c,l,!0)}}),v=(0,_.toAction)({id:`toggle/${c.id}/${l}`,label:p,get checked(){return!d.isHidden(c,l)},run(){d.updateHidden(c,l,!!this.checked)}});return{hide:m,toggle:v,get isHidden(){return!v.checked}}}}),define(ne[79],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITelemetryService=void 0,e.ITelemetryService=(0,L.createDecorator)("telemetryService")}),define(ne[16],se([1,0,603,22,33,12,51,69,30,27,15,8,118,37,79,20,70]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectAllCommand=e.RedoCommand=e.UndoCommand=e.EditorExtensionsRegistry=e.registerEditorContribution=e.registerInstantiatedEditorAction=e.registerMultiEditorAction=e.registerEditorAction=e.registerEditorCommand=e.registerModelAndPositionCommand=e.EditorAction2=e.MultiEditorAction=e.EditorAction=e.EditorCommand=e.ProxyCommand=e.MultiCommand=e.Command=void 0;class h{constructor(N){this.id=N.id,this.precondition=N.precondition,this._kbOpts=N.kbOpts,this._menuOpts=N.menuOpts,this._description=N.description}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const N=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const F of N){let O=F.kbExpr;this.precondition&&(O?O=C.ContextKeyExpr.and(O,this.precondition):O=this.precondition);const W={id:this.id,weight:F.weight,args:F.args,when:O,primary:F.primary,secondary:F.secondary,win:F.win,linux:F.linux,mac:F.mac};i.KeybindingsRegistry.registerKeybindingRule(W)}}g.CommandsRegistry.registerCommand({id:this.id,handler:(N,F)=>this.runCommand(N,F),description:this._description})}_registerMenuItem(N){_.MenuRegistry.appendMenuItem(N.menuId,{group:N.group,command:{id:this.id,title:N.title,icon:N.icon,precondition:this.precondition},when:N.when,order:N.order})}}e.Command=h;class r extends h{constructor(){super(...arguments),this._implementations=[]}addImplementation(N,F,O,W){return this._implementations.push({priority:N,name:F,implementation:O,when:W}),this._implementations.sort((U,j)=>j.priority-U.priority),{dispose:()=>{for(let U=0;U{if(R.get(C.IContextKeyService).contextMatchesRules(O??void 0))return W(R,j,F)})}runCommand(N,F){return o.runEditorCommand(N,F,this.precondition,(O,W,U)=>this.runEditorCommand(O,W,U))}}e.EditorCommand=o;class d extends o{static convertOptions(N){let F;Array.isArray(N.menuOpts)?F=N.menuOpts:N.menuOpts?F=[N.menuOpts]:F=[];function O(W){return W.menuId||(W.menuId=_.MenuId.EditorContext),W.title||(W.title=N.label),W.when=C.ContextKeyExpr.and(N.precondition,W.when),W}return Array.isArray(N.contextMenuOpts)?F.push(...N.contextMenuOpts.map(O)):N.contextMenuOpts&&F.push(O(N.contextMenuOpts)),N.menuOpts=F,N}constructor(N){super(d.convertOptions(N)),this.label=N.label,this.alias=N.alias}runEditorCommand(N,F,O){return this.reportTelemetry(N,F),this.run(N,F,O||{})}reportTelemetry(N,F){N.get(t.ITelemetryService).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}e.EditorAction=d;class l extends d{constructor(){super(...arguments),this._implementations=[]}addImplementation(N,F){return this._implementations.push([N,F]),this._implementations.sort((O,W)=>W[0]-O[0]),{dispose:()=>{for(let O=0;O{var j,R;const K=U.get(C.IContextKeyService),G=U.get(u.ILogService);if(!K.contextMatchesRules((j=this.desc.precondition)!==null&&j!==void 0?j:void 0)){G.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(R=this.desc.precondition)===null||R===void 0?void 0:R.serialize());return}return this.runEditorCommand(U,W,...F)})}}e.EditorAction2=p;function m(A,N){g.CommandsRegistry.registerCommand(A,function(F,...O){const W=F.get(s.IInstantiationService),[U,j]=O;(0,a.assertType)(k.URI.isUri(U)),(0,a.assertType)(D.Position.isIPosition(j));const R=F.get(S.IModelService).getModel(U);if(R){const K=D.Position.lift(j);return W.invokeFunction(N,R,K,...O.slice(2))}return F.get(f.ITextModelService).createModelReference(U).then(K=>new Promise((G,Z)=>{try{const J=W.invokeFunction(N,K.object.textEditorModel,D.Position.lift(j),O.slice(2));G(J)}catch(J){Z(J)}}).finally(()=>{K.dispose()}))})}e.registerModelAndPositionCommand=m;function v(A){return x.INSTANCE.registerEditorCommand(A),A}e.registerEditorCommand=v;function b(A){const N=new A;return x.INSTANCE.registerEditorAction(N),N}e.registerEditorAction=b;function w(A){return x.INSTANCE.registerEditorAction(A),A}e.registerMultiEditorAction=w;function E(A){x.INSTANCE.registerEditorAction(A)}e.registerInstantiatedEditorAction=E;function I(A,N,F){x.INSTANCE.registerEditorContribution(A,N,F)}e.registerEditorContribution=I;var M;(function(A){function N(j){return x.INSTANCE.getEditorCommand(j)}A.getEditorCommand=N;function F(){return x.INSTANCE.getEditorActions()}A.getEditorActions=F;function O(){return x.INSTANCE.getEditorContributions()}A.getEditorContributions=O;function W(j){return x.INSTANCE.getEditorContributions().filter(R=>j.indexOf(R.id)>=0)}A.getSomeEditorContributions=W;function U(){return x.INSTANCE.getDiffEditorContributions()}A.getDiffEditorContributions=U})(M||(e.EditorExtensionsRegistry=M={}));const P={EditorCommonContributions:"editor.contributions"};class x{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(N,F,O){this.editorContributions.push({id:N,ctor:F,instantiation:O})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(N){N.register(),this.editorActions.push(N)}getEditorActions(){return this.editorActions}registerEditorCommand(N){N.register(),this.editorCommands[N.id]=N}getEditorCommand(N){return this.editorCommands[N]||null}}x.INSTANCE=new x,n.Registry.add(P.EditorCommonContributions,x.INSTANCE);function T(A){return A.register(),A}e.UndoCommand=T(new r({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:_.MenuId.MenubarEditMenu,group:"1_do",title:L.localize(0,null),order:1},{menuId:_.MenuId.CommandPalette,group:"",title:L.localize(1,null),order:1}]})),T(new c(e.UndoCommand,{id:"default:undo",precondition:void 0})),e.RedoCommand=T(new r({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:_.MenuId.MenubarEditMenu,group:"1_do",title:L.localize(2,null),order:2},{menuId:_.MenuId.CommandPalette,group:"",title:L.localize(3,null),order:1}]})),T(new c(e.RedoCommand,{id:"default:redo",precondition:void 0})),e.SelectAllCommand=T(new r({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:_.MenuId.MenubarSelectionMenu,group:"1_basic",title:L.localize(4,null),order:1},{menuId:_.MenuId.CommandPalette,group:"",title:L.localize(5,null),order:1}]}))}),define(ne[189],se([1,0,602,52,20,49,16,33,496,74,204,205,246,12,5,21,15,118]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CoreEditingCommands=e.CoreNavigationCommands=e.RevealLine_=e.EditorScroll_=e.CoreEditorCommand=void 0;const r=0;class c extends S.EditorCommand{runEditorCommand(P,x,T){const A=x._getViewModel();A&&this.runCoreEditorCommand(A,T||{})}}e.CoreEditorCommand=c;var o;(function(M){const P=function(T){if(!y.isObject(T))return!1;const A=T;return!(!y.isString(A.to)||!y.isUndefined(A.by)&&!y.isString(A.by)||!y.isUndefined(A.value)&&!y.isNumber(A.value)||!y.isUndefined(A.revealCursor)&&!y.isBoolean(A.revealCursor))};M.description={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n * 'to': A mandatory direction value.\n ```\n 'up', 'down'\n ```\n * 'by': Unit to move. Default is computed based on 'to' value.\n ```\n 'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n ```\n * 'value': Number of units to move. Default is '1'.\n * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n ",constraint:P,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage","editor"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},M.RawDirection={Up:"up",Right:"right",Down:"down",Left:"left"},M.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage",Editor:"editor",Column:"column"};function x(T){let A;switch(T.to){case M.RawDirection.Up:A=1;break;case M.RawDirection.Right:A=2;break;case M.RawDirection.Down:A=3;break;case M.RawDirection.Left:A=4;break;default:return null}let N;switch(T.by){case M.RawUnit.Line:N=1;break;case M.RawUnit.WrappedLine:N=2;break;case M.RawUnit.Page:N=3;break;case M.RawUnit.HalfPage:N=4;break;case M.RawUnit.Editor:N=5;break;case M.RawUnit.Column:N=6;break;default:N=2}const F=Math.floor(T.value||1),O=!!T.revealCursor;return{direction:A,unit:N,value:F,revealCursor:O,select:!!T.select}}M.parse=x})(o||(e.EditorScroll_=o={}));var d;(function(M){const P=function(x){if(!y.isObject(x))return!1;const T=x;return!(!y.isNumber(T.lineNumber)&&!y.isString(T.lineNumber)||!y.isUndefined(T.at)&&!y.isString(T.at))};M.description={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n * 'lineNumber': A mandatory line number value.\n * 'at': Logical position at which line has to be revealed.\n ```\n 'top', 'center', 'bottom'\n ```\n ",constraint:P,schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},M.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}})(d||(e.RevealLine_=d={}));class l{constructor(P){P.addImplementation(1e4,"code-editor",(x,T)=>{const A=x.get(f.ICodeEditorService).getFocusedCodeEditor();return A&&A.hasTextFocus()?this._runEditorCommand(x,A,T):!1}),P.addImplementation(1e3,"generic-dom-input-textarea",(x,T)=>{const A=document.activeElement;return A&&["input","textarea"].indexOf(A.tagName.toLowerCase())>=0?(this.runDOMCommand(),!0):!1}),P.addImplementation(0,"generic-dom",(x,T)=>{const A=x.get(f.ICodeEditorService).getActiveCodeEditor();return A?(A.focus(),this._runEditorCommand(x,A,T)):!1})}_runEditorCommand(P,x,T){const A=this.runEditorCommand(P,x,T);return A||!0}}var p;(function(M){class P extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){if(!V.position)return;B.model.pushStackElement(),B.setCursorStates(V.source,3,[s.CursorMoveCommands.moveTo(B,B.getPrimaryCursorState(),this._inSelectionMode,V.position,V.viewPosition)])&&V.revealType!==2&&B.revealPrimaryCursor(V.source,!0,!0)}}M.MoveTo=(0,S.registerEditorCommand)(new P({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),M.MoveToSelect=(0,S.registerEditorCommand)(new P({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class x extends c{runCoreEditorCommand(B,V){B.model.pushStackElement();const Y=this._getColumnSelectResult(B,B.getPrimaryCursorState(),B.getCursorColumnSelectData(),V);Y!==null&&(B.setCursorStates(V.source,3,Y.viewStates.map(ie=>g.CursorState.fromViewState(ie))),B.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:Y.fromLineNumber,fromViewVisualColumn:Y.fromVisualColumn,toViewLineNumber:Y.toLineNumber,toViewVisualColumn:Y.toVisualColumn}),Y.reversed?B.revealTopMostCursor(V.source):B.revealBottomMostCursor(V.source))}}M.ColumnSelect=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(H,B,V,Y){if(typeof Y.position>"u"||typeof Y.viewPosition>"u"||typeof Y.mouseColumn>"u")return null;const ie=H.model.validatePosition(Y.position),ae=H.coordinatesConverter.validateViewPosition(new n.Position(Y.viewPosition.lineNumber,Y.viewPosition.column),ie),ce=Y.doColumnSelect?V.fromViewLineNumber:ae.lineNumber,de=Y.doColumnSelect?V.fromViewVisualColumn:Y.mouseColumn-1;return _.ColumnSelection.columnSelect(H.cursorConfig,H,ce,de,ae.lineNumber,Y.mouseColumn-1)}}),M.CursorColumnSelectLeft=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(H,B,V,Y){return _.ColumnSelection.columnSelectLeft(H.cursorConfig,H,V)}}),M.CursorColumnSelectRight=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(H,B,V,Y){return _.ColumnSelection.columnSelectRight(H.cursorConfig,H,V)}});class T extends x{constructor(B){super(B),this._isPaged=B.isPaged}_getColumnSelectResult(B,V,Y,ie){return _.ColumnSelection.columnSelectUp(B.cursorConfig,B,Y,this._isPaged)}}M.CursorColumnSelectUp=(0,S.registerEditorCommand)(new T({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3600,linux:{primary:0}}})),M.CursorColumnSelectPageUp=(0,S.registerEditorCommand)(new T({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3595,linux:{primary:0}}}));class A extends x{constructor(B){super(B),this._isPaged=B.isPaged}_getColumnSelectResult(B,V,Y,ie){return _.ColumnSelection.columnSelectDown(B.cursorConfig,B,Y,this._isPaged)}}M.CursorColumnSelectDown=(0,S.registerEditorCommand)(new A({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3602,linux:{primary:0}}})),M.CursorColumnSelectPageDown=(0,S.registerEditorCommand)(new A({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3596,linux:{primary:0}}}));class N extends c{constructor(){super({id:"cursorMove",precondition:void 0,description:s.CursorMove.description})}runCoreEditorCommand(B,V){const Y=s.CursorMove.parse(V);Y&&this._runCursorMove(B,V.source,Y)}_runCursorMove(B,V,Y){B.model.pushStackElement(),B.setCursorStates(V,3,N._move(B,B.getCursorStates(),Y)),B.revealPrimaryCursor(V,!0)}static _move(B,V,Y){const ie=Y.select,ae=Y.value;switch(Y.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return s.CursorMoveCommands.simpleMove(B,V,Y.direction,ie,ae,Y.unit);case 11:case 13:case 12:case 14:return s.CursorMoveCommands.viewportMove(B,V,Y.direction,ie,ae);default:return null}}}M.CursorMoveImpl=N,M.CursorMove=(0,S.registerEditorCommand)(new N);class F extends c{constructor(B){super(B),this._staticArgs=B.args}runCoreEditorCommand(B,V){let Y=this._staticArgs;this._staticArgs.value===-1&&(Y={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:V.pageSize||B.cursorConfig.pageSize}),B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.simpleMove(B,B.getCursorStates(),Y.direction,Y.select,Y.value,Y.unit)),B.revealPrimaryCursor(V.source,!0)}}M.CursorLeft=(0,S.registerEditorCommand)(new F({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),M.CursorLeftSelect=(0,S.registerEditorCommand)(new F({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1039}})),M.CursorRight=(0,S.registerEditorCommand)(new F({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),M.CursorRightSelect=(0,S.registerEditorCommand)(new F({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1041}})),M.CursorUp=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),M.CursorUpSelect=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),M.CursorPageUp=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:11}})),M.CursorPageUpSelect=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1035}})),M.CursorDown=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),M.CursorDownSelect=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),M.CursorPageDown=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:12}})),M.CursorPageDownSelect=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1036}})),M.CreateCursor=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(H,B){if(!B.position)return;let V;B.wholeLine?V=s.CursorMoveCommands.line(H,H.getPrimaryCursorState(),!1,B.position,B.viewPosition):V=s.CursorMoveCommands.moveTo(H,H.getPrimaryCursorState(),!1,B.position,B.viewPosition);const Y=H.getCursorStates();if(Y.length>1){const ie=V.modelState?V.modelState.position:null,ae=V.viewState?V.viewState.position:null;for(let ce=0,de=Y.length;ceae&&(ie=ae);const ce=new t.Range(ie,1,ie,H.model.getLineMaxColumn(ie));let de=0;if(V.at)switch(V.at){case d.RawAtArgument.Top:de=3;break;case d.RawAtArgument.Center:de=1;break;case d.RawAtArgument.Bottom:de=4;break;default:break}const he=H.coordinatesConverter.convertModelRangeToViewRange(ce);H.revealRange(B.source,!1,he,de,0)}}),M.SelectAll=new class extends l{constructor(){super(S.SelectAllCommand)}runDOMCommand(){k.isFirefox&&(document.activeElement.focus(),document.activeElement.select()),document.execCommand("selectAll")}runEditorCommand(H,B,V){const Y=B._getViewModel();Y&&this.runCoreEditorCommand(Y,V)}runCoreEditorCommand(H,B){H.model.pushStackElement(),H.setCursorStates("keyboard",3,[s.CursorMoveCommands.selectAll(H,H.getPrimaryCursorState())])}},M.SetSelection=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(H,B){B.selection&&(H.model.pushStackElement(),H.setCursorStates(B.source,3,[g.CursorState.fromModelSelection(B.selection)]))}})})(p||(e.CoreNavigationCommands=p={}));const m=u.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,a.EditorContextKeys.columnSelection);function v(M,P){h.KeybindingsRegistry.registerKeybindingRule({id:M,primary:P,when:m,weight:r+1})}v(p.CursorColumnSelectLeft.id,1039),v(p.CursorColumnSelectRight.id,1041),v(p.CursorColumnSelectUp.id,1040),v(p.CursorColumnSelectPageUp.id,1035),v(p.CursorColumnSelectDown.id,1042),v(p.CursorColumnSelectPageDown.id,1036);function b(M){return M.register(),M}var w;(function(M){class P extends S.EditorCommand{runEditorCommand(T,A,N){const F=A._getViewModel();F&&this.runCoreEditingCommand(A,F,N||{})}}M.CoreEditingCommand=P,M.LineBreakInsert=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:"lineBreakInsert",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.lineBreakInsert(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection)))}}),M.Outdent=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:"outdent",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:u.ContextKeyExpr.and(a.EditorContextKeys.editorTextFocus,a.EditorContextKeys.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.outdent(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection))),x.pushUndoStop()}}),M.Tab=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:"tab",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:u.ContextKeyExpr.and(a.EditorContextKeys.editorTextFocus,a.EditorContextKeys.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.tab(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection))),x.pushUndoStop()}}),M.DeleteLeft=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(x,T,A){const[N,F]=C.DeleteOperations.deleteLeft(T.getPrevEditOperationType(),T.cursorConfig,T.model,T.getCursorStates().map(O=>O.modelState.selection),T.getCursorAutoClosedCharacters());N&&x.pushUndoStop(),x.executeCommands(this.id,F),T.setPrevEditOperationType(2)}}),M.DeleteRight=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(x,T,A){const[N,F]=C.DeleteOperations.deleteRight(T.getPrevEditOperationType(),T.cursorConfig,T.model,T.getCursorStates().map(O=>O.modelState.selection));N&&x.pushUndoStop(),x.executeCommands(this.id,F),T.setPrevEditOperationType(3)}}),M.Undo=new class extends l{constructor(){super(S.UndoCommand)}runDOMCommand(){document.execCommand("undo")}runEditorCommand(x,T,A){if(!(!T.hasModel()||T.getOption(89)===!0))return T.getModel().undo()}},M.Redo=new class extends l{constructor(){super(S.RedoCommand)}runDOMCommand(){document.execCommand("redo")}runEditorCommand(x,T,A){if(!(!T.hasModel()||T.getOption(89)===!0))return T.getModel().redo()}}})(w||(e.CoreEditingCommands=w={}));class E extends S.Command{constructor(P,x,T){super({id:P,precondition:void 0,description:T}),this._handlerId=x}runCommand(P,x){const T=P.get(f.ICodeEditorService).getFocusedCodeEditor();T&&T.trigger("keyboard",this._handlerId,x)}}function I(M,P){b(new E("default:"+M,M)),b(new E(M,M,P))}I("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]}),I("replacePreviousChar"),I("compositionType"),I("compositionStart"),I("compositionEnd"),I("paste"),I("cut")}),define(ne[792],se([1,0,233,16]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerDecorationsContribution=void 0;let y=class{constructor(S,f){}dispose(){}};e.MarkerDecorationsContribution=y,y.ID="editor.contrib.markerDecorations",e.MarkerDecorationsContribution=y=ke([fe(1,L.IMarkerDecorationsService)],y),(0,k.registerEditorContribution)(y.ID,y,0)}),define(ne[793],se([1,0,189,12,17]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewController=void 0;class D{constructor(f,_,g,C){this.configuration=f,this.viewModel=_,this.userInputEvents=g,this.commandDelegate=C}paste(f,_,g,C){this.commandDelegate.paste(f,_,g,C)}type(f){this.commandDelegate.type(f)}compositionType(f,_,g,C){this.commandDelegate.compositionType(f,_,g,C)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(f){L.CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:f})}_validateViewColumn(f){const _=this.viewModel.getLineMinColumn(f.lineNumber);return f.column<_?new k.Position(f.lineNumber,_):f}_hasMulticursorModifier(f){switch(this.configuration.options.get(76)){case"altKey":return f.altKey;case"ctrlKey":return f.ctrlKey;case"metaKey":return f.metaKey;default:return!1}}_hasNonMulticursorModifier(f){switch(this.configuration.options.get(76)){case"altKey":return f.ctrlKey||f.metaKey;case"ctrlKey":return f.altKey||f.metaKey;case"metaKey":return f.ctrlKey||f.altKey;default:return!1}}dispatchMouse(f){const _=this.configuration.options,g=y.isLinux&&_.get(105),C=_.get(21);f.middleButton&&!g?this._columnSelect(f.position,f.mouseColumn,f.inSelectionMode):f.startedOnLineNumbers?this._hasMulticursorModifier(f)?f.inSelectionMode?this._lastCursorLineSelect(f.position,f.revealType):this._createCursor(f.position,!0):f.inSelectionMode?this._lineSelectDrag(f.position,f.revealType):this._lineSelect(f.position,f.revealType):f.mouseDownCount>=4?this._selectAll():f.mouseDownCount===3?this._hasMulticursorModifier(f)?f.inSelectionMode?this._lastCursorLineSelectDrag(f.position,f.revealType):this._lastCursorLineSelect(f.position,f.revealType):f.inSelectionMode?this._lineSelectDrag(f.position,f.revealType):this._lineSelect(f.position,f.revealType):f.mouseDownCount===2?f.onInjectedText||(this._hasMulticursorModifier(f)?this._lastCursorWordSelect(f.position,f.revealType):f.inSelectionMode?this._wordSelectDrag(f.position,f.revealType):this._wordSelect(f.position,f.revealType)):this._hasMulticursorModifier(f)?this._hasNonMulticursorModifier(f)||(f.shiftKey?this._columnSelect(f.position,f.mouseColumn,!0):f.inSelectionMode?this._lastCursorMoveToSelect(f.position,f.revealType):this._createCursor(f.position,!1)):f.inSelectionMode?f.altKey?this._columnSelect(f.position,f.mouseColumn,!0):C?this._columnSelect(f.position,f.mouseColumn,!0):this._moveToSelect(f.position,f.revealType):this.moveTo(f.position,f.revealType)}_usualArgs(f,_){return f=this._validateViewColumn(f),{source:"mouse",position:this._convertViewToModelPosition(f),viewPosition:f,revealType:_}}moveTo(f,_){L.CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_moveToSelect(f,_){L.CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_columnSelect(f,_,g){f=this._validateViewColumn(f),L.CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(f),viewPosition:f,mouseColumn:_,doColumnSelect:g})}_createCursor(f,_){f=this._validateViewColumn(f),L.CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(f),viewPosition:f,wholeLine:_})}_lastCursorMoveToSelect(f,_){L.CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_wordSelect(f,_){L.CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_wordSelectDrag(f,_){L.CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorWordSelect(f,_){L.CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lineSelect(f,_){L.CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lineSelectDrag(f,_){L.CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorLineSelect(f,_){L.CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorLineSelectDrag(f,_){L.CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_selectAll(){L.CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(f){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(f)}emitKeyDown(f){this.userInputEvents.emitKeyDown(f)}emitKeyUp(f){this.userInputEvents.emitKeyUp(f)}emitContextMenu(f){this.userInputEvents.emitContextMenu(f)}emitMouseMove(f){this.userInputEvents.emitMouseMove(f)}emitMouseLeave(f){this.userInputEvents.emitMouseLeave(f)}emitMouseUp(f){this.userInputEvents.emitMouseUp(f)}emitMouseDown(f){this.userInputEvents.emitMouseDown(f)}emitMouseDrag(f){this.userInputEvents.emitMouseDrag(f)}emitMouseDrop(f){this.userInputEvents.emitMouseDrop(f)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(f){this.userInputEvents.emitMouseWheel(f)}}e.ViewController=D}),define(ne[348],se([1,0,6,58,66,109,115,79]),function(Q,e,L,k,y,D,S,f){"use strict";var _;Object.defineProperty(e,"__esModule",{value:!0}),e.WorkerBasedDocumentDiffProvider=void 0;let g=_=class{constructor(s,i,n){this.editorWorkerService=i,this.telemetryService=n,this.onDidChangeEventEmitter=new L.Emitter,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(s)}dispose(){var s;(s=this.diffAlgorithmOnDidChangeSubscription)===null||s===void 0||s.dispose()}computeDiff(s,i,n,t){var a,u;return we(this,void 0,void 0,function*(){if(typeof this.diffAlgorithm!="string")return this.diffAlgorithm.computeDiff(s,i,n,t);if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return i.getLineCount()===1&&i.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new D.LineRangeMapping(new y.LineRange(1,2),new y.LineRange(1,i.getLineCount()+1),[new D.RangeMapping(s.getFullModelRange(),i.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const h=JSON.stringify([s.uri.toString(),i.uri.toString()]),r=JSON.stringify([s.id,i.id,s.getAlternativeVersionId(),i.getAlternativeVersionId(),JSON.stringify(n)]),c=_.diffCache.get(h);if(c&&c.context===r)return c.result;const o=k.StopWatch.create(),d=yield this.editorWorkerService.computeDiff(s.uri,i.uri,n,this.diffAlgorithm),l=o.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:l,timedOut:(a=d?.quitEarly)!==null&&a!==void 0?a:!0,detectedMoves:n.computeMoves?(u=d?.moves.length)!==null&&u!==void 0?u:0:-1}),t.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!d)throw new Error("no diff result available");return _.diffCache.size>10&&_.diffCache.delete(_.diffCache.keys().next().value),_.diffCache.set(h,{result:d,context:r}),d})}setOptions(s){var i;let n=!1;s.diffAlgorithm&&this.diffAlgorithm!==s.diffAlgorithm&&((i=this.diffAlgorithmOnDidChangeSubscription)===null||i===void 0||i.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=s.diffAlgorithm,typeof s.diffAlgorithm!="string"&&(this.diffAlgorithmOnDidChangeSubscription=s.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),n=!0),n&&this.onDidChangeEventEmitter.fire()}};e.WorkerBasedDocumentDiffProvider=g,g.diffCache=new Map,e.WorkerBasedDocumentDiffProvider=g=_=ke([fe(1,S.IEditorWorkerService),fe(2,f.ITelemetryService)],g)}),define(ne[794],se([1,0,49,55,63,16,24,21,632,15,436]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";var C;Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionAnchorSet=void 0,e.SelectionAnchorSet=new g.RawContextKey("selectionAnchorSet",!1);let s=C=class{static get(h){return h.getContribution(C.ID)}constructor(h,r){this.editor=h,this.selectionAnchorSetContextKey=e.SelectionAnchorSet.bindTo(r),this.modelChangeListener=h.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const h=this.editor.getPosition();this.editor.changeDecorations(r=>{this.decorationId&&r.removeDecoration(this.decorationId),this.decorationId=r.addDecoration(S.Selection.fromPositions(h,h),{description:"selection-anchor",stickiness:1,hoverMessage:new k.MarkdownString().appendText((0,_.localize)(0,null)),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,L.alert)((0,_.localize)(1,null,h.lineNumber,h.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const h=this.editor.getModel().getDecorationRange(this.decorationId);h&&this.editor.setPosition(h.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const h=this.editor.getModel().getDecorationRange(this.decorationId);if(h){const r=this.editor.getPosition();this.editor.setSelection(S.Selection.fromPositions(h.getStartPosition(),r)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const h=this.decorationId;this.editor.changeDecorations(r=>{r.removeDecoration(h),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};s.ID="editor.contrib.selectionAnchorController",s=C=ke([fe(1,g.IContextKeyService)],s);class i extends D.EditorAction{constructor(){super({id:"editor.action.setSelectionAnchor",label:(0,_.localize)(2,null),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2080),weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.setSelectionAnchor()})}}class n extends D.EditorAction{constructor(){super({id:"editor.action.goToSelectionAnchor",label:(0,_.localize)(3,null),alias:"Go to Selection Anchor",precondition:e.SelectionAnchorSet})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.goToSelectionAnchor()})}}class t extends D.EditorAction{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:(0,_.localize)(4,null),alias:"Select from Anchor to Cursor",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2089),weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.selectFromAnchorToCursor()})}}class a extends D.EditorAction{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:(0,_.localize)(5,null),alias:"Cancel Selection Anchor",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:9,weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.cancelSelectionAnchor()})}}(0,D.registerEditorContribution)(s.ID,s,4),(0,D.registerEditorAction)(i),(0,D.registerEditorAction)(n),(0,D.registerEditorAction)(t),(0,D.registerEditorAction)(a)}),define(ne[795],se([1,0,16,21,537,634]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class S extends L.EditorAction{constructor(C,s){super(s),this.left=C}run(C,s){if(!s.hasModel())return;const i=[],n=s.getSelections();for(const t of n)i.push(new y.MoveCaretCommand(t,this.left));s.pushUndoStop(),s.executeCommands(this.id,i),s.pushUndoStop()}}class f extends S{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:D.localize(0,null),alias:"Move Selected Text Left",precondition:k.EditorContextKeys.writable})}}class _ extends S{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:D.localize(1,null),alias:"Move Selected Text Right",precondition:k.EditorContextKeys.writable})}}(0,L.registerEditorAction)(f),(0,L.registerEditorAction)(_)}),define(ne[796],se([1,0,16,123,203,5,21,635]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class _ extends L.EditorAction{constructor(){super({id:"editor.action.transposeLetters",label:f.localize(0,null),alias:"Transpose Letters",precondition:S.EditorContextKeys.writable,kbOpts:{kbExpr:S.EditorContextKeys.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(C,s){if(!s.hasModel())return;const i=s.getModel(),n=[],t=s.getSelections();for(const a of t){if(!a.isEmpty())continue;const u=a.startLineNumber,h=a.startColumn,r=i.getLineMaxColumn(u);if(u===1&&(h===1||h===2&&r===2))continue;const c=h===r?a.getPosition():y.MoveOperations.rightPosition(i,a.getPosition().lineNumber,a.getPosition().column),o=y.MoveOperations.leftPosition(i,c),d=y.MoveOperations.leftPosition(i,o),l=i.getValueInRange(D.Range.fromPositions(d,o)),p=i.getValueInRange(D.Range.fromPositions(o,c)),m=D.Range.fromPositions(d,c);n.push(new k.ReplaceCommand(m,p+l))}n.length>0&&(s.pushUndoStop(),s.executeCommands(this.id,n),s.pushUndoStop())}}(0,L.registerEditorAction)(_)}),define(ne[797],se([1,0,52,17,185,16,33,21,636,30,96,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PasteAction=e.CopyAction=e.CutAction=void 0;const i="9_cutcopypaste",n=k.isNative||document.queryCommandSupported("cut"),t=k.isNative||document.queryCommandSupported("copy"),a=typeof navigator.clipboard>"u"||L.isFirefox?document.queryCommandSupported("paste"):!0;function u(c){return c.register(),c}e.CutAction=n?u(new D.MultiCommand({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:k.isNative?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:"2_ccp",title:_.localize(0,null),order:1},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(1,null),when:f.EditorContextKeys.writable,order:1},{menuId:g.MenuId.CommandPalette,group:"",title:_.localize(2,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(3,null),when:f.EditorContextKeys.writable,order:1}]})):void 0,e.CopyAction=t?u(new D.MultiCommand({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:k.isNative?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:"2_ccp",title:_.localize(4,null),order:2},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(5,null),order:2},{menuId:g.MenuId.CommandPalette,group:"",title:_.localize(6,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(7,null),order:2}]})):void 0,g.MenuRegistry.appendMenuItem(g.MenuId.MenubarEditMenu,{submenu:g.MenuId.MenubarCopy,title:{value:_.localize(8,null),original:"Copy As"},group:"2_ccp",order:3}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorContext,{submenu:g.MenuId.EditorContextCopy,title:{value:_.localize(9,null),original:"Copy As"},group:i,order:3}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorContext,{submenu:g.MenuId.EditorContextShare,title:{value:_.localize(10,null),original:"Share"},group:"11_share",order:-1,when:s.ContextKeyExpr.and(s.ContextKeyExpr.notEquals("resourceScheme","output"),f.EditorContextKeys.editorTextFocus)}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorTitleContext,{submenu:g.MenuId.EditorTitleContextShare,title:{value:_.localize(11,null),original:"Share"},group:"11_share",order:-1}),g.MenuRegistry.appendMenuItem(g.MenuId.ExplorerContext,{submenu:g.MenuId.ExplorerContextShare,title:{value:_.localize(12,null),original:"Share"},group:"11_share",order:-1}),e.PasteAction=a?u(new D.MultiCommand({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:k.isNative?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:"2_ccp",title:_.localize(13,null),order:4},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(14,null),when:f.EditorContextKeys.writable,order:4},{menuId:g.MenuId.CommandPalette,group:"",title:_.localize(15,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(16,null),when:f.EditorContextKeys.writable,order:4}]})):void 0;class h extends D.EditorAction{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:_.localize(17,null),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.textInputFocus,primary:0,weight:100}})}run(o,d){!d.hasModel()||!d.getOption(36)&&d.getSelection().isEmpty()||(y.CopyOptions.forceCopyWithSyntaxHighlighting=!0,d.focus(),document.execCommand("copy"),y.CopyOptions.forceCopyWithSyntaxHighlighting=!1)}}function r(c,o){c&&(c.addImplementation(1e4,"code-editor",(d,l)=>{const p=d.get(S.ICodeEditorService).getFocusedCodeEditor();if(p&&p.hasTextFocus()){const m=p.getOption(36),v=p.getSelection();return v&&v.isEmpty()&&!m||document.execCommand(o),!0}return!1}),c.addImplementation(0,"generic-dom",(d,l)=>(document.execCommand(o),!0)))}r(e.CutAction,"cut"),r(e.CopyAction,"copy"),e.PasteAction&&(e.PasteAction.addImplementation(1e4,"code-editor",(c,o)=>{const d=c.get(S.ICodeEditorService),l=c.get(C.IClipboardService),p=d.getFocusedCodeEditor();return p&&p.hasTextFocus()?!document.execCommand("paste")&&k.isWeb?(()=>we(void 0,void 0,void 0,function*(){const v=yield l.readText();if(v!==""){const b=y.InMemoryClipboardMetadataManager.INSTANCE.get(v);let w=!1,E=null,I=null;b&&(w=p.getOption(36)&&!!b.isFromEmptySelection,E=typeof b.multicursorText<"u"?b.multicursorText:null,I=b.mode),p.trigger("keyboard","paste",{text:v,pasteOnNewLine:w,multicursorText:E,mode:I})}}))():!0:!1}),e.PasteAction.addImplementation(0,"generic-dom",(c,o)=>(document.execCommand("paste"),!0))),t&&(0,D.registerEditorAction)(h)}),define(ne[798],se([1,0,63,16,5,21,32,290,539,646,30]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class s extends k.EditorAction{constructor(h,r){super(r),this._type=h}run(h,r){const c=h.get(S.ILanguageConfigurationService);if(!r.hasModel())return;const o=r.getModel(),d=[],l=o.getOptions(),p=r.getOption(22),m=r.getSelections().map((b,w)=>({selection:b,index:w,ignoreFirstLine:!1}));m.sort((b,w)=>y.Range.compareRangesUsingStarts(b.selection,w.selection));let v=m[0];for(let b=1;b{this._undoStack=[],this._redoStack=[]})),this._register(i.onDidChangeModelContent(n=>{this._undoStack=[],this._redoStack=[]})),this._register(i.onDidChangeCursorSelection(n=>{if(this._isCursorUndoRedo||!n.oldSelections||n.oldModelVersionId!==n.modelVersionId)return;const t=new S(n.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(t)||(this._undoStack.push(new f(t,i.getScrollTop(),i.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new f(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new f(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(i){this._isCursorUndoRedo=!0,this._editor.setSelections(i.cursorState.selections),this._editor.setScrollPosition({scrollTop:i.scrollTop,scrollLeft:i.scrollLeft}),this._isCursorUndoRedo=!1}}e.CursorUndoRedoController=_,_.ID="editor.contrib.cursorUndoRedoController";class g extends k.EditorAction{constructor(){super({id:"cursorUndo",label:D.localize(0,null),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2099,weight:100}})}run(i,n,t){var a;(a=_.get(n))===null||a===void 0||a.cursorUndo()}}e.CursorUndo=g;class C extends k.EditorAction{constructor(){super({id:"cursorRedo",label:D.localize(1,null),alias:"Cursor Redo",precondition:void 0})}run(i,n,t){var a;(a=_.get(n))===null||a===void 0||a.cursorRedo()}}e.CursorRedo=C,(0,k.registerEditorContribution)(_.ID,_,0),(0,k.registerEditorAction)(g),(0,k.registerEditorAction)(C)}),define(ne[800],se([1,0,16,15,19,64,8,50,654]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorKeybindingCancellationTokenSource=void 0;const g=(0,S.createDecorator)("IEditorCancelService"),C=new k.RawContextKey("cancellableOperation",!1,(0,_.localize)(0,null));(0,f.registerSingleton)(g,class{constructor(){this._tokens=new WeakMap}add(i,n){let t=this._tokens.get(i);t||(t=i.invokeWithinContext(u=>{const h=C.bindTo(u.get(k.IContextKeyService)),r=new D.LinkedList;return{key:h,tokens:r}}),this._tokens.set(i,t));let a;return t.key.set(!0),a=t.tokens.push(n),()=>{a&&(a(),t.key.set(!t.tokens.isEmpty()),a=void 0)}}cancel(i){const n=this._tokens.get(i);if(!n)return;const t=n.tokens.pop();t&&(t.cancel(),n.key.set(!n.tokens.isEmpty()))}},1);class s extends y.CancellationTokenSource{constructor(n,t){super(t),this.editor=n,this._unregister=n.invokeWithinContext(a=>a.get(g).add(n,this))}dispose(){this._unregister(),super.dispose()}}e.EditorKeybindingCancellationTokenSource=s,(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:C})}runEditorCommand(i,n){i.get(g).cancel(n)}})}),define(ne[104],se([1,0,11,5,19,2,800]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextModelCancellationTokenSource=e.EditorStateCancellationTokenSource=e.EditorState=void 0;class f{constructor(s,i){if(this.flags=i,this.flags&1){const n=s.getModel();this.modelVersionId=n?L.format("{0}#{1}",n.uri.toString(),n.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=s.getPosition():this.position=null,this.flags&2?this.selection=s.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=s.getScrollLeft(),this.scrollTop=s.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(s){if(!(s instanceof f))return!1;const i=s;return!(this.modelVersionId!==i.modelVersionId||this.scrollLeft!==i.scrollLeft||this.scrollTop!==i.scrollTop||!this.position&&i.position||this.position&&!i.position||this.position&&i.position&&!this.position.equals(i.position)||!this.selection&&i.selection||this.selection&&!i.selection||this.selection&&i.selection&&!this.selection.equalsRange(i.selection))}validate(s){return this._equals(new f(s,this.flags))}}e.EditorState=f;class _ extends S.EditorKeybindingCancellationTokenSource{constructor(s,i,n,t){super(s,t),this._listener=new D.DisposableStore,i&4&&this._listener.add(s.onDidChangeCursorPosition(a=>{(!n||!k.Range.containsPosition(n,a.position))&&this.cancel()})),i&2&&this._listener.add(s.onDidChangeCursorSelection(a=>{(!n||!k.Range.containsRange(n,a.selection))&&this.cancel()})),i&8&&this._listener.add(s.onDidScrollChange(a=>this.cancel())),i&1&&(this._listener.add(s.onDidChangeModel(a=>this.cancel())),this._listener.add(s.onDidChangeModelContent(a=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}e.EditorStateCancellationTokenSource=_;class g extends y.CancellationTokenSource{constructor(s,i){super(i),this._listener=s.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}e.TextModelCancellationTokenSource=g}),define(ne[137],se([1,0,14,19,9,2,22,132,5,24,18,51,104,637,27,43,77,79,113]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.applyCodeAction=e.ApplyCodeActionReason=e.getCodeActions=e.fixAllCommandId=e.organizeImportsCommandId=e.sourceActionCommandId=e.refactorCommandId=e.autoFixCommandId=e.quickFixCommandId=e.codeActionCommandId=void 0,e.codeActionCommandId="editor.action.codeAction",e.quickFixCommandId="editor.action.quickFix",e.autoFixCommandId="editor.action.autoFix",e.refactorCommandId="editor.action.refactor",e.sourceActionCommandId="editor.action.sourceAction",e.organizeImportsCommandId="editor.action.organizeImports",e.fixAllCommandId="editor.action.fixAll";class c extends D.Disposable{static codeActionsPreferredComparator(I,M){return I.isPreferred&&!M.isPreferred?-1:!I.isPreferred&&M.isPreferred?1:0}static codeActionsComparator({action:I},{action:M}){return(0,L.isNonEmptyArray)(I.diagnostics)?(0,L.isNonEmptyArray)(M.diagnostics)?c.codeActionsPreferredComparator(I,M):-1:(0,L.isNonEmptyArray)(M.diagnostics)?1:c.codeActionsPreferredComparator(I,M)}constructor(I,M,P){super(),this.documentation=M,this._register(P),this.allActions=[...I].sort(c.codeActionsComparator),this.validActions=this.allActions.filter(({action:x})=>!x.disabled)}get hasAutoFix(){return this.validActions.some(({action:I})=>!!I.kind&&r.CodeActionKind.QuickFix.contains(new r.CodeActionKind(I.kind))&&!!I.isPreferred)}}const o={actions:[],documentation:void 0};function d(E,I,M,P,x,T){var A;return we(this,void 0,void 0,function*(){const N=P.filter||{},F={only:(A=N.include)===null||A===void 0?void 0:A.value,trigger:P.type},O=new i.TextModelCancellationTokenSource(I,T),W=l(E,I,N),U=new D.DisposableStore,j=W.map(K=>we(this,void 0,void 0,function*(){try{x.report(K);const G=yield K.provideCodeActions(I,M,F,O.token);if(G&&U.add(G),O.token.isCancellationRequested)return o;const Z=(G?.actions||[]).filter(X=>X&&(0,r.filtersAction)(N,X)),J=m(K,Z,N.include);return{actions:Z.map(X=>new r.CodeActionItem(X,K)),documentation:J}}catch(G){if((0,y.isCancellationError)(G))throw G;return(0,y.onUnexpectedExternalError)(G),o}})),R=E.onDidChange(()=>{const K=E.all(I);(0,L.equals)(K,W)||O.cancel()});try{const K=yield Promise.all(j),G=K.map(J=>J.actions).flat(),Z=[...(0,L.coalesce)(K.map(J=>J.documentation)),...p(E,I,P,G)];return new c(G,Z,U)}finally{R.dispose(),O.dispose()}})}e.getCodeActions=d;function l(E,I,M){return E.all(I).filter(P=>P.providedCodeActionKinds?P.providedCodeActionKinds.some(x=>(0,r.mayIncludeActionsOfKind)(M,new r.CodeActionKind(x))):!0)}function*p(E,I,M,P){var x,T,A;if(I&&P.length)for(const N of E.all(I))N._getAdditionalMenuItems&&(yield*(x=N._getAdditionalMenuItems)===null||x===void 0?void 0:x.call(N,{trigger:M.type,only:(A=(T=M.filter)===null||T===void 0?void 0:T.include)===null||A===void 0?void 0:A.value},P.map(F=>F.action)))}function m(E,I,M){if(!E.documentation)return;const P=E.documentation.map(x=>({kind:new r.CodeActionKind(x.kind),command:x.command}));if(M){let x;for(const T of P)T.kind.contains(M)&&(x?x.kind.contains(T.kind)&&(x=T):x=T);if(x)return x?.command}for(const x of I)if(x.kind){for(const T of P)if(T.kind.contains(new r.CodeActionKind(x.kind)))return T.command}}var v;(function(E){E.OnSave="onSave",E.FromProblemsView="fromProblemsView",E.FromCodeActions="fromCodeActions"})(v||(e.ApplyCodeActionReason=v={}));function b(E,I,M,P,x=k.CancellationToken.None){var T;return we(this,void 0,void 0,function*(){const A=E.get(f.IBulkEditService),N=E.get(t.ICommandService),F=E.get(h.ITelemetryService),O=E.get(a.INotificationService);if(F.publicLog2("codeAction.applyCodeAction",{codeActionTitle:I.action.title,codeActionKind:I.action.kind,codeActionIsPreferred:!!I.action.isPreferred,reason:M}),yield I.resolve(x),!x.isCancellationRequested&&!(!((T=I.action.edit)===null||T===void 0)&&T.edits.length&&!(yield A.apply(I.action.edit,{editor:P?.editor,label:I.action.title,quotableLabel:I.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:M!==v.OnSave,showPreview:P?.preview})).isApplied)&&I.action.command)try{yield N.executeCommand(I.action.command.id,...I.action.command.arguments||[])}catch(W){const U=w(W);O.error(typeof U=="string"?U:n.localize(0,null))}})}e.applyCodeAction=b;function w(E){return typeof E=="string"?E:E instanceof Error&&typeof E.message=="string"?E.message:void 0}t.CommandsRegistry.registerCommand("_executeCodeActionProvider",function(E,I,M,P,x){return we(this,void 0,void 0,function*(){if(!(I instanceof S.URI))throw(0,y.illegalArgument)();const{codeActionProvider:T}=E.get(C.ILanguageFeaturesService),A=E.get(s.IModelService).getModel(I);if(!A)throw(0,y.illegalArgument)();const N=g.Selection.isISelection(M)?g.Selection.liftSelection(M):_.Range.isIRange(M)?A.validateRange(M):void 0;if(!N)throw(0,y.illegalArgument)();const F=typeof P=="string"?new r.CodeActionKind(P):void 0,O=yield d(T,A,N,{type:1,triggerAction:r.CodeActionTriggerSource.Default,filter:{includeSourceActions:!0,include:F}},u.Progress.None,k.CancellationToken.None),W=[],U=Math.min(O.validActions.length,typeof x=="number"?x:0);for(let j=0;jj.action)}finally{setTimeout(()=>O.dispose(),100)}})})}),define(ne[801],se([1,0,100,137,113,34]),function(Q,e,L,k,y,D){"use strict";var S;Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionKeybindingResolver=void 0;let f=S=class{constructor(g){this.keybindingService=g}getResolver(){const g=new L.Lazy(()=>this.keybindingService.getKeybindings().filter(C=>S.codeActionCommands.indexOf(C.command)>=0).filter(C=>C.resolvedKeybinding).map(C=>{let s=C.commandArgs;return C.command===k.organizeImportsCommandId?s={kind:y.CodeActionKind.SourceOrganizeImports.value}:C.command===k.fixAllCommandId&&(s={kind:y.CodeActionKind.SourceFixAll.value}),Object.assign({resolvedKeybinding:C.resolvedKeybinding},y.CodeActionCommandArgs.fromUser(s,{kind:y.CodeActionKind.None,apply:"never"}))}));return C=>{if(C.kind){const s=this.bestKeybindingForCodeAction(C,g.value);return s?.resolvedKeybinding}}}bestKeybindingForCodeAction(g,C){if(!g.kind)return;const s=new y.CodeActionKind(g.kind);return C.filter(i=>i.kind.contains(s)).filter(i=>i.preferred?g.isPreferred:!0).reduceRight((i,n)=>i?i.kind.contains(n.kind)?n:i:n,void 0)}};e.CodeActionKeybindingResolver=f,f.codeActionCommands=[k.refactorCommandId,k.codeActionCommandId,k.sourceActionCommandId,k.organizeImportsCommandId,k.fixAllCommandId],e.CodeActionKeybindingResolver=f=S=ke([fe(0,D.IKeybindingService)],f)}),define(ne[349],se([1,0,13,9,6,2,45,15,77,113,137]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionModel=e.CodeActionsState=e.SUPPORTED_CODE_ACTIONS=void 0,e.SUPPORTED_CODE_ACTIONS=new f.RawContextKey("supportedCodeAction","");class s extends D.Disposable{constructor(u,h,r,c=250){super(),this._editor=u,this._markerService=h,this._signalChange=r,this._delay=c,this._autoTriggerTimer=this._register(new L.TimeoutTimer),this._register(this._markerService.onMarkerChanged(o=>this._onMarkerChanges(o))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(u){const h=this._getRangeOfSelectionUnlessWhitespaceEnclosed(u);this._signalChange(h?{trigger:u,selection:h}:void 0)}_onMarkerChanges(u){const h=this._editor.getModel();h&&u.some(r=>(0,S.isEqual)(r,h.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:g.CodeActionTriggerSource.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(u){if(!this._editor.hasModel())return;const h=this._editor.getModel(),r=this._editor.getSelection();if(r.isEmpty()&&u.type===2){const{lineNumber:c,column:o}=r.getPosition(),d=h.getLineContent(c);if(d.length===0)return;if(o===1){if(/\s/.test(d[0]))return}else if(o===h.getLineMaxColumn(c)){if(/\s/.test(d[d.length-1]))return}else if(/\s/.test(d[o-2])&&/\s/.test(d[o-1]))return}return r}}var i;(function(a){a.Empty={type:0};class u{constructor(r,c,o){this.trigger=r,this.position=c,this._cancellablePromise=o,this.type=1,this.actions=o.catch(d=>{if((0,k.isCancellationError)(d))return n;throw d})}cancel(){this._cancellablePromise.cancel()}}a.Triggered=u})(i||(e.CodeActionsState=i={}));const n=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1});class t extends D.Disposable{constructor(u,h,r,c,o){super(),this._editor=u,this._registry=h,this._markerService=r,this._progressService=o,this._codeActionOracle=this._register(new D.MutableDisposable),this._state=i.Empty,this._onDidChangeState=this._register(new y.Emitter),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=e.SUPPORTED_CODE_ACTIONS.bindTo(c),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(i.Empty,!0))}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(i.Empty);const u=this._editor.getModel();if(u&&this._registry.has(u)&&!this._editor.getOption(89)){const h=this._registry.all(u).flatMap(r=>{var c;return(c=r.providedCodeActionKinds)!==null&&c!==void 0?c:[]});this._supportedCodeActions.set(h.join(" ")),this._codeActionOracle.value=new s(this._editor,this._markerService,r=>{var c;if(!r){this.setState(i.Empty);return}const o=(0,L.createCancelablePromise)(d=>(0,C.getCodeActions)(this._registry,u,r.selection,r.trigger,_.Progress.None,d));r.trigger.type===1&&((c=this._progressService)===null||c===void 0||c.showWhile(o,250)),this.setState(new i.Triggered(r.trigger,r.selection.getStartPosition(),o))},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:g.CodeActionTriggerSource.Default})}else this._supportedCodeActions.reset()}trigger(u){var h;(h=this._codeActionOracle.value)===null||h===void 0||h.trigger(u)}setState(u,h){u!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=u,!h&&!this._disposed&&this._onDidChangeState.fire(u))}}e.CodeActionModel=t}),define(ne[350],se([1,0,7,61,25,6,2,26,207,137,642,34,438]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.LightBulbWidget=void 0;var n;(function(a){a.Hidden={type:0};class u{constructor(r,c,o,d){this.actions=r,this.trigger=c,this.editorPosition=o,this.widgetPosition=d,this.type=1}}a.Showing=u})(n||(n={}));let t=i=class extends S.Disposable{constructor(u,h){super(),this._editor=u,this._onClick=this._register(new D.Emitter),this.onClick=this._onClick.event,this._state=n.Hidden,this._domNode=L.$("div.lightBulbWidget"),this._register(k.Gesture.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(r=>{const c=this._editor.getModel();(this.state.type!==1||!c||this.state.editorPosition.lineNumber>=c.getLineCount())&&this.hide()})),this._register(L.addStandardDisposableGenericMouseDownListener(this._domNode,r=>{if(this.state.type!==1)return;this._editor.focus(),r.preventDefault();const{top:c,height:o}=L.getDomNodePagePosition(this._domNode),d=this._editor.getOption(65);let l=Math.floor(d/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber{(r.buttons&1)===1&&this.hide()})),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(63)&&!this._editor.getOption(63).enabled&&this.hide()})),this._register(D.Event.runAndSubscribe(h.onDidUpdateKeybindings,()=>{var r,c,o,d;this._preferredKbLabel=(c=(r=h.lookupKeybinding(g.autoFixCommandId))===null||r===void 0?void 0:r.getLabel())!==null&&c!==void 0?c:void 0,this._quickFixKbLabel=(d=(o=h.lookupKeybinding(g.quickFixCommandId))===null||o===void 0?void 0:o.getLabel())!==null&&d!==void 0?d:void 0,this._updateLightBulbTitleAndIcon()}))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(u,h,r){if(u.validActions.length<=0)return this.hide();const c=this._editor.getOptions();if(!c.get(63).enabled)return this.hide();const o=this._editor.getModel();if(!o)return this.hide();const{lineNumber:d,column:l}=o.validatePosition(r),p=o.getOptions().tabSize,m=c.get(49),v=o.getLineContent(d),b=(0,_.computeIndentLevel)(v,p),w=m.spaceWidth*b>22,E=M=>M>2&&this._editor.getTopForLineNumber(M)===this._editor.getTopForLineNumber(M-1);let I=d;if(!w){if(d>1&&!E(d-1))I-=1;else if(!E(d+1))I+=1;else if(l*m.spaceWidth<22)return this.hide()}this.state=new n.Showing(u,h,r,{position:{lineNumber:I,column:1},preference:i._posPref}),this._editor.layoutContentWidget(this)}hide(){this.state!==n.Hidden&&(this.state=n.Hidden,this._editor.layoutContentWidget(this))}get state(){return this._state}set state(u){this._state=u,this._updateLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(this.state.type===1&&this.state.actions.hasAutoFix&&(this._domNode.classList.remove(...f.ThemeIcon.asClassNameArray(y.Codicon.lightBulb)),this._domNode.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.lightbulbAutofix)),this._preferredKbLabel)){this.title=C.localize(0,null,this._preferredKbLabel);return}this._domNode.classList.remove(...f.ThemeIcon.asClassNameArray(y.Codicon.lightbulbAutofix)),this._domNode.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.lightBulb)),this._quickFixKbLabel?this.title=C.localize(1,null,this._quickFixKbLabel):this.title=C.localize(2,null)}set title(u){this._domNode.title=u}};e.LightBulbWidget=t,t.ID="editor.contrib.lightbulbWidget",t._posPref=[0],e.LightBulbWidget=t=i=ke([fe(1,s.IKeybindingService)],t)}),define(ne[802],se([1,0,16,145,659]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class D extends L.EditorAction{constructor(){super({id:"editor.action.fontZoomIn",label:y.localize(0,null),alias:"Editor Font Zoom In",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(k.EditorZoom.getZoomLevel()+1)}}class S extends L.EditorAction{constructor(){super({id:"editor.action.fontZoomOut",label:y.localize(1,null),alias:"Editor Font Zoom Out",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(k.EditorZoom.getZoomLevel()-1)}}class f extends L.EditorAction{constructor(){super({id:"editor.action.fontZoomReset",label:y.localize(2,null),alias:"Editor Font Zoom Reset",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(0)}}(0,L.registerEditorAction)(D),(0,L.registerEditorAction)(S),(0,L.registerEditorAction)(f)}),define(ne[351],se([1,0,49,14,19,9,46,64,20,22,104,177,12,5,24,115,69,294,660,27,744,8,18,70]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getOnTypeFormattingEdits=e.getDocumentFormattingEditsUntilResult=e.getDocumentRangeFormattingEditsUntilResult=e.formatDocumentWithProvider=e.formatDocumentWithSelectedProvider=e.formatDocumentRangesWithProvider=e.formatDocumentRangesWithSelectedProvider=e.FormattingConflicts=e.getRealAndSyntheticDocumentFormattersOrdered=e.alertFormattingEdits=void 0;function m(A){if(A=A.filter(W=>W.range),!A.length)return;let{range:N}=A[0];for(let W=1;W0&&n.Range.areIntersectingOrTouching(J[X-1],ie)?J[X-1]=n.Range.fromPositions(J[X-1].getStartPosition(),ie.getEndPosition()):X=J.push(ie);const H=ie=>we(this,void 0,void 0,function*(){var ae,ce;K.trace("[format][provideDocumentRangeFormattingEdits] (request)",(ae=N.extensionId)===null||ae===void 0?void 0:ae.value,ie);const de=(yield N.provideDocumentRangeFormattingEdits(G,ie,G.getFormattingOptions(),Z.token))||[];return K.trace("[format][provideDocumentRangeFormattingEdits] (response)",(ce=N.extensionId)===null||ce===void 0?void 0:ce.value,de),de}),B=(ie,ae)=>{if(!ie.length||!ae.length)return!1;const ce=ie.reduce((de,he)=>n.Range.plusRange(de,he.range),ie[0].range);if(!ae.some(de=>n.Range.intersectRanges(ce,de.range)))return!1;for(const de of ie)for(const he of ae)if(n.Range.intersectRanges(de.range,he.range))return!0;return!1},V=[],Y=[];try{if(typeof N.provideDocumentRangesFormattingEdits=="function"){K.trace("[format][provideDocumentRangeFormattingEdits] (request)",(U=N.extensionId)===null||U===void 0?void 0:U.value,J);const ie=(yield N.provideDocumentRangesFormattingEdits(G,J,G.getFormattingOptions(),Z.token))||[];K.trace("[format][provideDocumentRangeFormattingEdits] (response)",(j=N.extensionId)===null||j===void 0?void 0:j.value,ie),Y.push(ie)}else{for(const ie of J){if(Z.token.isCancellationRequested)return!0;Y.push(yield H(ie))}for(let ie=0;ie({text:ce.text,range:n.Range.lift(ce.range),forceMoveMarkers:!0})),ce=>{for(const{range:de}of ce)if(n.Range.areIntersectingOrTouching(de,ae))return[new t.Selection(de.startLineNumber,de.startColumn,de.endLineNumber,de.endColumn)];return null})}return!0})}e.formatDocumentRangesWithProvider=E;function I(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=A.get(d.IInstantiationService),j=A.get(l.ILanguageFeaturesService),R=(0,s.isCodeEditor)(N)?N.getModel():N,K=v(j.documentFormattingEditProvider,j.documentRangeFormattingEditProvider,R),G=yield b.select(K,R,F);G&&(O.report(G),yield U.invokeFunction(M,G,N,F,W))})}e.formatDocumentWithSelectedProvider=I;function M(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=A.get(a.IEditorWorkerService);let j,R;(0,s.isCodeEditor)(F)?(j=F.getModel(),R=new C.EditorStateCancellationTokenSource(F,5,void 0,W)):(j=F,R=new C.TextModelCancellationTokenSource(F,W));let K;try{const G=yield N.provideDocumentFormattingEdits(j,j.getFormattingOptions(),R.token);if(K=yield U.computeMoreMinimalEdits(j.uri,G),R.token.isCancellationRequested)return!0}finally{R.dispose()}if(!K||K.length===0)return!1;if((0,s.isCodeEditor)(F))h.FormattingEdit.execute(F,K,O!==2),O!==2&&(m(K),F.revealPositionInCenterIfOutsideViewport(F.getPosition(),1));else{const[{range:G}]=K,Z=new t.Selection(G.startLineNumber,G.startColumn,G.endLineNumber,G.endColumn);j.pushEditOperations([Z],K.map(J=>({text:J.text,range:n.Range.lift(J.range),forceMoveMarkers:!0})),J=>{for(const{range:X}of J)if(n.Range.areIntersectingOrTouching(X,Z))return[new t.Selection(X.startLineNumber,X.startColumn,X.endLineNumber,X.endColumn)];return null})}return!0})}e.formatDocumentWithProvider=M;function P(A,N,F,O,W,U){return we(this,void 0,void 0,function*(){const j=N.documentRangeFormattingEditProvider.ordered(F);for(const R of j){const K=yield Promise.resolve(R.provideDocumentRangeFormattingEdits(F,O,W,U)).catch(D.onUnexpectedExternalError);if((0,k.isNonEmptyArray)(K))return yield A.computeMoreMinimalEdits(F.uri,K)}})}e.getDocumentRangeFormattingEditsUntilResult=P;function x(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=v(N.documentFormattingEditProvider,N.documentRangeFormattingEditProvider,F);for(const j of U){const R=yield Promise.resolve(j.provideDocumentFormattingEdits(F,O,W)).catch(D.onUnexpectedExternalError);if((0,k.isNonEmptyArray)(R))return yield A.computeMoreMinimalEdits(F.uri,R)}})}e.getDocumentFormattingEditsUntilResult=x;function T(A,N,F,O,W,U,j){const R=N.onTypeFormattingEditProvider.ordered(F);return R.length===0||R[0].autoFormatTriggerCharacters.indexOf(W)<0?Promise.resolve(void 0):Promise.resolve(R[0].provideOnTypeFormattingEdits(F,O,W,U,j)).catch(D.onUnexpectedExternalError).then(K=>A.computeMoreMinimalEdits(F.uri,K))}e.getOnTypeFormattingEdits=T,c.CommandsRegistry.registerCommand("_executeFormatRangeProvider",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O,W]=N;(0,_.assertType)(g.URI.isUri(F)),(0,_.assertType)(n.Range.isIRange(O));const U=A.get(u.ITextModelService),j=A.get(a.IEditorWorkerService),R=A.get(l.ILanguageFeaturesService),K=yield U.createModelReference(F);try{return P(j,R,K.object.textEditorModel,n.Range.lift(O),W,y.CancellationToken.None)}finally{K.dispose()}})}),c.CommandsRegistry.registerCommand("_executeFormatDocumentProvider",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O]=N;(0,_.assertType)(g.URI.isUri(F));const W=A.get(u.ITextModelService),U=A.get(a.IEditorWorkerService),j=A.get(l.ILanguageFeaturesService),R=yield W.createModelReference(F);try{return x(U,j,R.object.textEditorModel,O,y.CancellationToken.None)}finally{R.dispose()}})}),c.CommandsRegistry.registerCommand("_executeFormatOnTypeProvider",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O,W,U]=N;(0,_.assertType)(g.URI.isUri(F)),(0,_.assertType)(i.Position.isIPosition(O)),(0,_.assertType)(typeof W=="string");const j=A.get(u.ITextModelService),R=A.get(a.IEditorWorkerService),K=A.get(l.ILanguageFeaturesService),G=yield j.createModelReference(F);try{return T(R,K,G.object.textEditorModel,i.Position.lift(O),W,U,y.CancellationToken.None)}finally{G.dispose()}})})}),define(ne[803],se([1,0,14,19,9,63,2,16,33,121,5,21,115,18,351,294,661,27,15,8,77]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});let d=class{constructor(b,w,E){this._editor=b,this._languageFeaturesService=w,this._workerService=E,this._disposables=new S.DisposableStore,this._sessionDisposables=new S.DisposableStore,this._disposables.add(w.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(b.onDidChangeModel(()=>this._update())),this._disposables.add(b.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(b.onDidChangeConfiguration(I=>{I.hasChanged(55)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(55)||!this._editor.hasModel())return;const b=this._editor.getModel(),[w]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(b);if(!w||!w.autoFormatTriggerCharacters)return;const E=new g.CharacterSet;for(const I of w.autoFormatTriggerCharacters)E.add(I.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(I=>{const M=I.charCodeAt(I.length-1);E.has(M)&&this._trigger(String.fromCharCode(M))}))}_trigger(b){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const w=this._editor.getModel(),E=this._editor.getPosition(),I=new k.CancellationTokenSource,M=this._editor.onDidChangeModelContent(P=>{if(P.isFlush){I.cancel(),M.dispose();return}for(let x=0,T=P.changes.length;x{I.token.isCancellationRequested||(0,L.isNonEmptyArray)(P)&&(a.FormattingEdit.execute(this._editor,P,!0),(0,t.alertFormattingEdits)(P))}).finally(()=>{M.dispose()})}};d.ID="editor.contrib.autoFormat",d=ke([fe(1,n.ILanguageFeaturesService),fe(2,i.IEditorWorkerService)],d);let l=class{constructor(b,w,E){this.editor=b,this._languageFeaturesService=w,this._instantiationService=E,this._callOnDispose=new S.DisposableStore,this._callOnModel=new S.DisposableStore,this._callOnDispose.add(b.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(b.onDidChangeModel(()=>this._update())),this._callOnDispose.add(b.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(w.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(54)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:b})=>this._trigger(b)))}_trigger(b){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(t.formatDocumentRangesWithSelectedProvider,this.editor,b,2,o.Progress.None,k.CancellationToken.None).catch(y.onUnexpectedError))}};l.ID="editor.contrib.formatOnPaste",l=ke([fe(1,n.ILanguageFeaturesService),fe(2,c.IInstantiationService)],l);class p extends f.EditorAction{constructor(){super({id:"editor.action.formatDocument",label:u.localize(0,null),alias:"Format Document",precondition:r.ContextKeyExpr.and(s.EditorContextKeys.notInCompositeEditor,s.EditorContextKeys.writable,s.EditorContextKeys.hasDocumentFormattingProvider),kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}run(b,w){return we(this,void 0,void 0,function*(){if(w.hasModel()){const E=b.get(c.IInstantiationService);yield b.get(o.IEditorProgressService).showWhile(E.invokeFunction(t.formatDocumentWithSelectedProvider,w,1,o.Progress.None,k.CancellationToken.None),250)}})}}class m extends f.EditorAction{constructor(){super({id:"editor.action.formatSelection",label:u.localize(1,null),alias:"Format Selection",precondition:r.ContextKeyExpr.and(s.EditorContextKeys.writable,s.EditorContextKeys.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2084),weight:100},contextMenuOpts:{when:s.EditorContextKeys.hasNonEmptySelection,group:"1_modification",order:1.31}})}run(b,w){return we(this,void 0,void 0,function*(){if(!w.hasModel())return;const E=b.get(c.IInstantiationService),I=w.getModel(),M=w.getSelections().map(x=>x.isEmpty()?new C.Range(x.startLineNumber,1,x.startLineNumber,I.getLineMaxColumn(x.startLineNumber)):x);yield b.get(o.IEditorProgressService).showWhile(E.invokeFunction(t.formatDocumentRangesWithSelectedProvider,w,M,1,o.Progress.None,k.CancellationToken.None),250)})}}(0,f.registerEditorContribution)(d.ID,d,2),(0,f.registerEditorContribution)(l.ID,l,2),(0,f.registerEditorAction)(p),(0,f.registerEditorAction)(m),h.CommandsRegistry.registerCommand("editor.action.format",v=>we(void 0,void 0,void 0,function*(){const b=v.get(_.ICodeEditorService).getFocusedCodeEditor();if(!b||!b.hasModel())return;const w=v.get(h.ICommandService);b.getSelection().isEmpty()?yield w.executeCommand("editor.action.formatDocument"):yield w.executeCommand("editor.action.formatSelection")}))}),define(ne[247],se([1,0,14,19,9,16,18,155]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferencesAtPosition=e.getTypeDefinitionsAtPosition=e.getImplementationsAtPosition=e.getDeclarationsAtPosition=e.getDefinitionsAtPosition=void 0;function _(a,u,h,r){return we(this,void 0,void 0,function*(){const o=h.ordered(a).map(l=>Promise.resolve(r(l,a,u)).then(void 0,p=>{(0,y.onUnexpectedExternalError)(p)})),d=yield Promise.all(o);return(0,L.coalesce)(d.flat())})}function g(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideDefinition(o,d,r))}e.getDefinitionsAtPosition=g;function C(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideDeclaration(o,d,r))}e.getDeclarationsAtPosition=C;function s(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideImplementation(o,d,r))}e.getImplementationsAtPosition=s;function i(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideTypeDefinition(o,d,r))}e.getTypeDefinitionsAtPosition=i;function n(a,u,h,r,c){return _(u,h,a,(o,d,l)=>we(this,void 0,void 0,function*(){const p=yield o.provideReferences(d,l,{includeDeclaration:!0},c);if(!r||!p||p.length!==2)return p;const m=yield o.provideReferences(d,l,{includeDeclaration:!1},c);return m&&m.length===1?m:p}))}e.getReferencesAtPosition=n;function t(a){return we(this,void 0,void 0,function*(){const u=yield a(),h=new f.ReferencesModel(u,""),r=h.references.map(c=>c.link);return h.dispose(),r})}(0,D.registerModelAndPositionCommand)("_executeDefinitionProvider",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=g(r.definitionProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)("_executeTypeDefinitionProvider",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=i(r.typeDefinitionProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)("_executeDeclarationProvider",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=C(r.declarationProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)("_executeReferenceProvider",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=n(r.referenceProvider,u,h,!1,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)("_executeImplementationProvider",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=s(r.implementationProvider,u,h,k.CancellationToken.None);return t(()=>c)})}),define(ne[804],se([1,0,6,2,45,16,33,5,670,15,50,8,34,118,43]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ISymbolNavigationService=e.ctxHasSymbols=void 0,e.ctxHasSymbols=new g.RawContextKey("hasSymbols",!1,(0,_.localize)(0,null)),e.ISymbolNavigationService=(0,s.createDecorator)("ISymbolNavigationService");let a=class{constructor(r,c,o,d){this._editorService=c,this._notificationService=o,this._keybindingService=d,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=e.ctxHasSymbols.bindTo(r)}reset(){var r,c;this._ctxHasSymbols.reset(),(r=this._currentState)===null||r===void 0||r.dispose(),(c=this._currentMessage)===null||c===void 0||c.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(r){const c=r.parent.parent;if(c.references.length<=1){this.reset();return}this._currentModel=c,this._currentIdx=c.references.indexOf(r),this._ctxHasSymbols.set(!0),this._showMessage();const o=new u(this._editorService),d=o.onDidChange(l=>{if(this._ignoreEditorChange)return;const p=this._editorService.getActiveCodeEditor();if(!p)return;const m=p.getModel(),v=p.getPosition();if(!m||!v)return;let b=!1,w=!1;for(const E of c.references)if((0,y.isEqual)(E.uri,m.uri))b=!0,w=w||f.Range.containsPosition(E.range,v);else if(b)break;(!b||!w)&&this.reset()});this._currentState=(0,k.combinedDisposable)(o,d)}revealNext(r){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const c=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:c.uri,options:{selection:f.Range.collapseToStart(c.range),selectionRevealType:3}},r).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var r;(r=this._currentMessage)===null||r===void 0||r.dispose();const c=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),o=c?(0,_.localize)(1,null,this._currentIdx+1,this._currentModel.references.length,c.getLabel()):(0,_.localize)(2,null,this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(o)}};a=ke([fe(0,g.IContextKeyService),fe(1,S.ICodeEditorService),fe(2,t.INotificationService),fe(3,i.IKeybindingService)],a),(0,C.registerSingleton)(e.ISymbolNavigationService,a,1),(0,D.registerEditorCommand)(new class extends D.EditorCommand{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:e.ctxHasSymbols,kbOpts:{weight:100,primary:70}})}runEditorCommand(h,r){return h.get(e.ISymbolNavigationService).revealNext(r)}}),n.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:e.ctxHasSymbols,primary:9,handler(h){h.get(e.ISymbolNavigationService).reset()}});let u=class{constructor(r){this._listener=new Map,this._disposables=new k.DisposableStore,this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._disposables.add(r.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(r.onCodeEditorAdd(this._onDidAddEditor,this)),r.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),(0,k.dispose)(this._listener.values())}_onDidAddEditor(r){this._listener.set(r,(0,k.combinedDisposable)(r.onDidChangeCursorPosition(c=>this._onDidChange.fire({editor:r})),r.onDidChangeModelContent(c=>this._onDidChange.fire({editor:r}))))}_onDidRemoveEditor(r){var c;(c=this._listener.get(r))===null||c===void 0||c.dispose(),this._listener.delete(r)}};u=ke([fe(0,S.ICodeEditorService)],u)}),define(ne[352],se([1,0,13,19,9,16,18]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getHoverPromise=e.getHover=e.HoverProviderResult=void 0;class f{constructor(n,t,a){this.provider=n,this.hover=t,this.ordinal=a}}e.HoverProviderResult=f;function _(i,n,t,a,u){return we(this,void 0,void 0,function*(){try{const h=yield Promise.resolve(i.provideHover(t,a,u));if(h&&s(h))return new f(i,h,n)}catch(h){(0,y.onUnexpectedExternalError)(h)}})}function g(i,n,t,a){const h=i.ordered(n).map((r,c)=>_(r,c,n,t,a));return L.AsyncIterableObject.fromPromises(h).coalesce()}e.getHover=g;function C(i,n,t,a){return g(i,n,t,a).map(u=>u.hover).toPromise()}e.getHoverPromise=C,(0,D.registerModelAndPositionCommand)("_executeHoverProvider",(i,n,t)=>{const a=i.get(S.ILanguageFeaturesService);return C(a.hoverProvider,n,t,k.CancellationToken.None)});function s(i){const n=typeof i.range<"u",t=typeof i.contents<"u"&&i.contents&&i.contents.length>0;return n&&t}}),define(ne[248],se([1,0,7,14,13,55,2,117,12,5,41,352,672,28,56,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderMarkdownHovers=e.MarkdownHoverParticipant=e.MarkdownHover=void 0;const u=L.$;class h{constructor(d,l,p,m,v){this.owner=d,this.range=l,this.contents=p,this.isBeforeContent=m,this.ordinal=v}isValidForHoverAnchor(d){return d.type===1&&this.range.startColumn<=d.range.startColumn&&this.range.endColumn>=d.range.endColumn}}e.MarkdownHover=h;let r=class{constructor(d,l,p,m,v){this._editor=d,this._languageService=l,this._openerService=p,this._configurationService=m,this._languageFeaturesService=v,this.hoverOrdinal=3}createLoadingMessage(d){return new h(this,d.range,[new D.MarkdownString().appendText(i.localize(0,null))],!1,2e3)}computeSync(d,l){if(!this._editor.hasModel()||d.type!==1)return[];const p=this._editor.getModel(),m=d.range.startLineNumber,v=p.getLineMaxColumn(m),b=[];let w=1e3;const E=p.getLineLength(m),I=p.getLanguageIdAtPosition(d.range.startLineNumber,d.range.startColumn),M=this._editor.getOption(115),P=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:I});let x=!1;M>=0&&E>M&&d.range.startColumn>=M&&(x=!0,b.push(new h(this,d.range,[{value:i.localize(1,null)}],!1,w++))),!x&&typeof P=="number"&&E>=P&&b.push(new h(this,d.range,[{value:i.localize(2,null)}],!1,w++));let T=!1;for(const A of l){const N=A.range.startLineNumber===m?A.range.startColumn:1,F=A.range.endLineNumber===m?A.range.endColumn:v,O=A.options.hoverMessage;if(!O||(0,D.isEmptyMarkdownString)(O))continue;A.options.beforeContentClassName&&(T=!0);const W=new g.Range(d.range.startLineNumber,N,d.range.startLineNumber,F);b.push(new h(this,W,(0,k.asArray)(O),T,w++))}return b}computeAsync(d,l,p){if(!this._editor.hasModel()||d.type!==1)return y.AsyncIterableObject.EMPTY;const m=this._editor.getModel();if(!this._languageFeaturesService.hoverProvider.has(m))return y.AsyncIterableObject.EMPTY;const v=new _.Position(d.range.startLineNumber,d.range.startColumn);return(0,s.getHover)(this._languageFeaturesService.hoverProvider,m,v,p).filter(b=>!(0,D.isEmptyMarkdownString)(b.hover.contents)).map(b=>{const w=b.hover.range?g.Range.lift(b.hover.range):d.range;return new h(this,w,b.hover.contents,!1,b.ordinal)})}renderHoverParts(d,l){return c(d,l,this._editor,this._languageService,this._openerService)}};e.MarkdownHoverParticipant=r,e.MarkdownHoverParticipant=r=ke([fe(1,C.ILanguageService),fe(2,t.IOpenerService),fe(3,n.IConfigurationService),fe(4,a.ILanguageFeaturesService)],r);function c(o,d,l,p,m){d.sort((b,w)=>b.ordinal-w.ordinal);const v=new S.DisposableStore;for(const b of d)for(const w of b.contents){if((0,D.isEmptyMarkdownString)(w))continue;const E=u("div.hover-row.markdown-hover"),I=L.append(E,u("div.hover-contents")),M=v.add(new f.MarkdownRenderer({editor:l},p,m));v.add(M.onDidRenderAsync(()=>{I.className="hover-contents code-hover-contents",o.onContentsChanged()}));const P=v.add(M.render(w));I.appendChild(P.element),o.fragment.appendChild(E)}return v}e.renderMarkdownHovers=c}),define(ne[805],se([1,0,2,11,16,245,73,5,24,21,32,51,295,675,71,202,243]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentationToTabsCommand=e.IndentationToSpacesCommand=e.AutoIndentOnPaste=e.AutoIndentOnPasteCommand=e.ReindentSelectedLinesAction=e.ReindentLinesAction=e.DetectIndentation=e.ChangeTabDisplaySize=e.IndentUsingSpaces=e.IndentUsingTabs=e.ChangeIndentationSizeAction=e.IndentationToTabsAction=e.IndentationToSpacesAction=e.getReindentEditOperations=void 0;function h(x,T,A,N,F){if(x.getLineCount()===1&&x.getLineMaxColumn(1)===1)return[];const O=T.getLanguageConfiguration(x.getLanguageId()).indentationRules;if(!O)return[];for(N=Math.min(N,x.getLineCount());A<=N&&O.unIndentedLinePattern;){const B=x.getLineContent(A);if(!O.unIndentedLinePattern.test(B))break;A++}if(A>N-1)return[];const{tabSize:W,indentSize:U,insertSpaces:j}=x.getOptions(),R=(B,V)=>(V=V||1,D.ShiftCommand.shiftIndent(B,B.length+V,W,U,j)),K=(B,V)=>(V=V||1,D.ShiftCommand.unshiftIndent(B,B.length+V,W,U,j)),G=[];let Z;const J=x.getLineContent(A);let X=J;if(F!=null){Z=F;const B=k.getLeadingWhitespace(J);X=Z+J.substring(B.length),O.decreaseIndentPattern&&O.decreaseIndentPattern.test(X)&&(Z=K(Z),X=Z+J.substring(B.length)),J!==X&&G.push(S.EditOperation.replaceMove(new _.Selection(A,1,A,B.length+1),(0,a.normalizeIndentation)(Z,U,j)))}else Z=k.getLeadingWhitespace(J);let H=Z;O.increaseIndentPattern&&O.increaseIndentPattern.test(X)?(H=R(H),Z=R(Z)):O.indentNextLinePattern&&O.indentNextLinePattern.test(X)&&(H=R(H)),A++;for(let B=A;B<=N;B++){const V=x.getLineContent(B),Y=k.getLeadingWhitespace(V),ie=H+V.substring(Y.length);O.decreaseIndentPattern&&O.decreaseIndentPattern.test(ie)&&(H=K(H),Z=K(Z)),Y!==H&&G.push(S.EditOperation.replaceMove(new _.Selection(B,1,B,Y.length+1),(0,a.normalizeIndentation)(H,U,j))),!(O.unIndentedLinePattern&&O.unIndentedLinePattern.test(V))&&(O.increaseIndentPattern&&O.increaseIndentPattern.test(ie)?(Z=R(Z),H=Z):O.indentNextLinePattern&&O.indentNextLinePattern.test(ie)?H=R(H):H=Z)}return G}e.getReindentEditOperations=h;class r extends y.EditorAction{constructor(){super({id:r.ID,label:n.localize(0,null),alias:"Convert Indentation to Spaces",precondition:g.EditorContextKeys.writable})}run(T,A){const N=A.getModel();if(!N)return;const F=N.getOptions(),O=A.getSelection();if(!O)return;const W=new M(O,F.tabSize);A.pushUndoStop(),A.executeCommands(this.id,[W]),A.pushUndoStop(),N.updateOptions({insertSpaces:!0})}}e.IndentationToSpacesAction=r,r.ID="editor.action.indentationToSpaces";class c extends y.EditorAction{constructor(){super({id:c.ID,label:n.localize(1,null),alias:"Convert Indentation to Tabs",precondition:g.EditorContextKeys.writable})}run(T,A){const N=A.getModel();if(!N)return;const F=N.getOptions(),O=A.getSelection();if(!O)return;const W=new P(O,F.tabSize);A.pushUndoStop(),A.executeCommands(this.id,[W]),A.pushUndoStop(),N.updateOptions({insertSpaces:!1})}}e.IndentationToTabsAction=c,c.ID="editor.action.indentationToTabs";class o extends y.EditorAction{constructor(T,A,N){super(N),this.insertSpaces=T,this.displaySizeOnly=A}run(T,A){const N=T.get(t.IQuickInputService),F=T.get(s.IModelService),O=A.getModel();if(!O)return;const W=F.getCreationOptions(O.getLanguageId(),O.uri,O.isForSimpleWidget),U=O.getOptions(),j=[1,2,3,4,5,6,7,8].map(K=>({id:K.toString(),label:K.toString(),description:K===W.tabSize&&K===U.tabSize?n.localize(2,null):K===W.tabSize?n.localize(3,null):K===U.tabSize?n.localize(4,null):void 0})),R=Math.min(O.getOptions().tabSize-1,7);setTimeout(()=>{N.pick(j,{placeHolder:n.localize(5,null),activeItem:j[R]}).then(K=>{if(K&&O&&!O.isDisposed()){const G=parseInt(K.label,10);this.displaySizeOnly?O.updateOptions({tabSize:G}):O.updateOptions({tabSize:G,indentSize:G,insertSpaces:this.insertSpaces})}})},50)}}e.ChangeIndentationSizeAction=o;class d extends o{constructor(){super(!1,!1,{id:d.ID,label:n.localize(6,null),alias:"Indent Using Tabs",precondition:void 0})}}e.IndentUsingTabs=d,d.ID="editor.action.indentUsingTabs";class l extends o{constructor(){super(!0,!1,{id:l.ID,label:n.localize(7,null),alias:"Indent Using Spaces",precondition:void 0})}}e.IndentUsingSpaces=l,l.ID="editor.action.indentUsingSpaces";class p extends o{constructor(){super(!0,!0,{id:p.ID,label:n.localize(8,null),alias:"Change Tab Display Size",precondition:void 0})}}e.ChangeTabDisplaySize=p,p.ID="editor.action.changeTabDisplaySize";class m extends y.EditorAction{constructor(){super({id:m.ID,label:n.localize(9,null),alias:"Detect Indentation from Content",precondition:void 0})}run(T,A){const N=T.get(s.IModelService),F=A.getModel();if(!F)return;const O=N.getCreationOptions(F.getLanguageId(),F.uri,F.isForSimpleWidget);F.detectIndentation(O.insertSpaces,O.tabSize)}}e.DetectIndentation=m,m.ID="editor.action.detectIndentation";class v extends y.EditorAction{constructor(){super({id:"editor.action.reindentlines",label:n.localize(10,null),alias:"Reindent Lines",precondition:g.EditorContextKeys.writable})}run(T,A){const N=T.get(C.ILanguageConfigurationService),F=A.getModel();if(!F)return;const O=h(F,N,1,F.getLineCount());O.length>0&&(A.pushUndoStop(),A.executeEdits(this.id,O),A.pushUndoStop())}}e.ReindentLinesAction=v;class b extends y.EditorAction{constructor(){super({id:"editor.action.reindentselectedlines",label:n.localize(11,null),alias:"Reindent Selected Lines",precondition:g.EditorContextKeys.writable})}run(T,A){const N=T.get(C.ILanguageConfigurationService),F=A.getModel();if(!F)return;const O=A.getSelections();if(O===null)return;const W=[];for(const U of O){let j=U.startLineNumber,R=U.endLineNumber;if(j!==R&&U.endColumn===1&&R--,j===1){if(j===R)continue}else j--;const K=h(F,N,j,R);W.push(...K)}W.length>0&&(A.pushUndoStop(),A.executeEdits(this.id,W),A.pushUndoStop())}}e.ReindentSelectedLinesAction=b;class w{constructor(T,A){this._initialSelection=A,this._edits=[],this._selectionId=null;for(const N of T)N.range&&typeof N.text=="string"&&this._edits.push(N)}getEditOperations(T,A){for(const F of this._edits)A.addEditOperation(f.Range.lift(F.range),F.text);let N=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(N=!0,this._selectionId=A.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(N=!0,this._selectionId=A.trackSelection(this._initialSelection,!1))),N||(this._selectionId=A.trackSelection(this._initialSelection))}computeCursorState(T,A){return A.getTrackedSelection(this._selectionId)}}e.AutoIndentOnPasteCommand=w;let E=class{constructor(T,A){this.editor=T,this._languageConfigurationService=A,this.callOnDispose=new L.DisposableStore,this.callOnModel=new L.DisposableStore,this.callOnDispose.add(T.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(T.onDidChangeModel(()=>this.update())),this.callOnDispose.add(T.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(this.editor.getOption(11)<4||this.editor.getOption(54))&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:T})=>{this.trigger(T)}))}trigger(T){const A=this.editor.getSelections();if(A===null||A.length>1)return;const N=this.editor.getModel();if(!N||!N.tokenization.isCheapToTokenize(T.getStartPosition().lineNumber))return;const F=this.editor.getOption(11),{tabSize:O,indentSize:W,insertSpaces:U}=N.getOptions(),j=[],R={shiftIndent:J=>D.ShiftCommand.shiftIndent(J,J.length+1,O,W,U),unshiftIndent:J=>D.ShiftCommand.unshiftIndent(J,J.length+1,O,W,U)};let K=T.startLineNumber;for(;K<=T.endLineNumber;){if(this.shouldIgnoreLine(N,K)){K++;continue}break}if(K>T.endLineNumber)return;let G=N.getLineContent(K);if(!/\S/.test(G.substring(0,T.startColumn-1))){const J=(0,u.getGoodIndentForLine)(F,N,N.getLanguageId(),K,R,this._languageConfigurationService);if(J!==null){const X=k.getLeadingWhitespace(G),H=i.getSpaceCnt(J,O),B=i.getSpaceCnt(X,O);if(H!==B){const V=i.generateIndent(H,O,U);j.push({range:new f.Range(K,1,K,X.length+1),text:V}),G=V+G.substr(X.length)}else{const V=(0,u.getIndentMetadata)(N,K,this._languageConfigurationService);if(V===0||V===8)return}}}const Z=K;for(;KN.tokenization.getLineTokens(H),getLanguageId:()=>N.getLanguageId(),getLanguageIdAtPosition:(H,B)=>N.getLanguageIdAtPosition(H,B)},getLineContent:H=>H===Z?G:N.getLineContent(H)},X=(0,u.getGoodIndentForLine)(F,J,N.getLanguageId(),K+1,R,this._languageConfigurationService);if(X!==null){const H=i.getSpaceCnt(X,O),B=i.getSpaceCnt(k.getLeadingWhitespace(N.getLineContent(K+1)),O);if(H!==B){const V=H-B;for(let Y=K+1;Y<=T.endLineNumber;Y++){const ie=N.getLineContent(Y),ae=k.getLeadingWhitespace(ie),de=i.getSpaceCnt(ae,O)+V,he=i.generateIndent(de,O,U);he!==ae&&j.push({range:new f.Range(Y,1,Y,ae.length+1),text:he})}}}}if(j.length>0){this.editor.pushUndoStop();const J=new w(j,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",J),this.editor.pushUndoStop()}}shouldIgnoreLine(T,A){T.tokenization.forceTokenization(A);const N=T.getLineFirstNonWhitespaceColumn(A);if(N===0)return!0;const F=T.tokenization.getLineTokens(A);if(F.getCount()>0){const O=F.findTokenIndexAtOffset(N);if(O>=0&&F.getStandardTokenType(O)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}};e.AutoIndentOnPaste=E,E.ID="editor.contrib.autoIndentOnPaste",e.AutoIndentOnPaste=E=ke([fe(1,C.ILanguageConfigurationService)],E);function I(x,T,A,N){if(x.getLineCount()===1&&x.getLineMaxColumn(1)===1)return;let F="";for(let W=0;W({selection:he,index:ue,ignore:!1}));ae.sort((he,ue)=>C.Range.compareRangesUsingStarts(he.selection,ue.selection));let ce=ae[0];for(let he=1;henew g.Position(ue.positionLineNumber,ue.positionColumn)));const de=ie.getSelection();if(de===null)return;const he=new S.TrimTrailingWhitespaceCommand(de,ce);ie.pushUndoStop(),ie.executeCommands(this.id,[he]),ie.pushUndoStop()}}e.TrimTrailingWhitespaceAction=M,M.ID="editor.action.trimTrailingWhitespace";class P extends y.EditorAction{constructor(){super({id:"editor.action.deleteLines",label:u.localize(14,null),alias:"Delete Line",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:3113,weight:100}})}run(Y,ie){if(!ie.hasModel())return;const ae=this._getLinesToRemove(ie),ce=ie.getModel();if(ce.getLineCount()===1&&ce.getLineMaxColumn(1)===1)return;let de=0;const he=[],ue=[];for(let te=0,q=ae.length;te1&&(ee-=1,re=ce.getLineMaxColumn(ee)),he.push(_.EditOperation.replace(new s.Selection(ee,re,$,oe),"")),ue.push(new s.Selection(ee-de,z.positionColumn,ee-de,z.positionColumn)),de+=z.endLineNumber-z.startLineNumber+1}ie.pushUndoStop(),ie.executeEdits(this.id,he,ue),ie.pushUndoStop()}_getLinesToRemove(Y){const ie=Y.getSelections().map(de=>{let he=de.endLineNumber;return de.startLineNumberde.startLineNumber===he.startLineNumber?de.endLineNumber-he.endLineNumber:de.startLineNumber-he.startLineNumber);const ae=[];let ce=ie[0];for(let de=1;de=ie[de].startLineNumber?ce.endLineNumber=ie[de].endLineNumber:(ae.push(ce),ce=ie[de]);return ae.push(ce),ae}}e.DeleteLinesAction=P;class x extends y.EditorAction{constructor(){super({id:"editor.action.indentLines",label:u.localize(15,null),alias:"Indent Line",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2142,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.indent(ae.cursorConfig,ie.getModel(),ie.getSelections())),ie.pushUndoStop())}}e.IndentLinesAction=x;class T extends y.EditorAction{constructor(){super({id:"editor.action.outdentLines",label:u.localize(16,null),alias:"Outdent Line",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2140,weight:100}})}run(Y,ie){k.CoreEditingCommands.Outdent.runEditorCommand(Y,ie,null)}}class A extends y.EditorAction{constructor(){super({id:"editor.action.insertLineBefore",label:u.localize(17,null),alias:"Insert Line Above",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:3075,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.lineInsertBefore(ae.cursorConfig,ie.getModel(),ie.getSelections())))}}e.InsertLineBeforeAction=A;class N extends y.EditorAction{constructor(){super({id:"editor.action.insertLineAfter",label:u.localize(18,null),alias:"Insert Line Below",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2051,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.lineInsertAfter(ae.cursorConfig,ie.getModel(),ie.getSelections())))}}e.InsertLineAfterAction=N;class F extends y.EditorAction{run(Y,ie){if(!ie.hasModel())return;const ae=ie.getSelection(),ce=this._getRangesToDelete(ie),de=[];for(let te=0,q=ce.length-1;te_.EditOperation.replace(te,""));ie.pushUndoStop(),ie.executeEdits(this.id,ue,he),ie.pushUndoStop()}}e.AbstractDeleteAllToBoundaryAction=F;class O extends F{constructor(){super({id:"deleteAllLeft",label:u.localize(19,null),alias:"Delete All Left",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(Y,ie){let ae=null;const ce=[];let de=0;return ie.forEach(he=>{let ue;if(he.endColumn===1&&de>0){const te=he.startLineNumber-de;ue=new s.Selection(te,he.startColumn,te,he.startColumn)}else ue=new s.Selection(he.startLineNumber,he.startColumn,he.startLineNumber,he.startColumn);de+=he.endLineNumber-he.startLineNumber,he.intersectRanges(Y)?ae=ue:ce.push(ue)}),ae&&ce.unshift(ae),ce}_getRangesToDelete(Y){const ie=Y.getSelections();if(ie===null)return[];let ae=ie;const ce=Y.getModel();return ce===null?[]:(ae.sort(C.Range.compareRangesUsingStarts),ae=ae.map(de=>{if(de.isEmpty())if(de.startColumn===1){const he=Math.max(1,de.startLineNumber-1),ue=de.startLineNumber===1?1:ce.getLineContent(he).length+1;return new C.Range(he,ue,de.startLineNumber,1)}else return new C.Range(de.startLineNumber,1,de.startLineNumber,de.startColumn);else return new C.Range(de.startLineNumber,1,de.endLineNumber,de.endColumn)}),ae)}}e.DeleteAllLeftAction=O;class W extends F{constructor(){super({id:"deleteAllRight",label:u.localize(20,null),alias:"Delete All Right",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(Y,ie){let ae=null;const ce=[];for(let de=0,he=ie.length,ue=0;de{if(de.isEmpty()){const he=ie.getLineMaxColumn(de.startLineNumber);return de.startColumn===he?new C.Range(de.startLineNumber,de.startColumn,de.startLineNumber+1,1):new C.Range(de.startLineNumber,de.startColumn,de.startLineNumber,he)}return de});return ce.sort(C.Range.compareRangesUsingStarts),ce}}e.DeleteAllRightAction=W;class U extends y.EditorAction{constructor(){super({id:"editor.action.joinLines",label:u.localize(21,null),alias:"Join Lines",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(Y,ie){const ae=ie.getSelections();if(ae===null)return;let ce=ie.getSelection();if(ce===null)return;ae.sort(C.Range.compareRangesUsingStarts);const de=[],he=ae.reduce(($,re)=>$.isEmpty()?$.endLineNumber===re.startLineNumber?(ce.equalsSelection($)&&(ce=re),re):re.startLineNumber>$.endLineNumber+1?(de.push($),re):new s.Selection($.startLineNumber,$.startColumn,re.endLineNumber,re.endColumn):re.startLineNumber>$.endLineNumber?(de.push($),re):new s.Selection($.startLineNumber,$.startColumn,re.endLineNumber,re.endColumn));de.push(he);const ue=ie.getModel();if(ue===null)return;const te=[],q=[];let z=ce,ee=0;for(let $=0,re=de.length;$=1){let me=!0;Ee===""&&(me=!1),me&&(Ee.charAt(Ee.length-1)===" "||Ee.charAt(Ee.length-1)===" ")&&(me=!1,Ee=Ee.replace(/[\s\uFEFF\xA0]+$/g," "));const le=Fe.substr(_e-1);Ee+=(me?" ":"")+le,me?Se=le.length+1:Se=le.length}else Se=0}const Me=new C.Range(ge,ve,Le,De);if(!Me.isEmpty()){let Pe;oe.isEmpty()?(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(Me.startLineNumber-ee,Ee.length-Se+1,ge-ee,Ee.length-Se+1)):oe.startLineNumber===oe.endLineNumber?(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(oe.startLineNumber-ee,oe.startColumn,oe.endLineNumber-ee,oe.endColumn)):(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(oe.startLineNumber-ee,oe.startColumn,oe.startLineNumber-ee,Ee.length-ye)),C.Range.intersectRanges(Me,ce)!==null?z=Pe:q.push(Pe)}ee+=Me.endLineNumber-Me.startLineNumber}q.unshift(z),ie.pushUndoStop(),ie.executeEdits(this.id,te,q),ie.pushUndoStop()}}e.JoinLinesAction=U;class j extends y.EditorAction{constructor(){super({id:"editor.action.transpose",label:u.localize(22,null),alias:"Transpose Characters around the Cursor",precondition:i.EditorContextKeys.writable})}run(Y,ie){const ae=ie.getSelections();if(ae===null)return;const ce=ie.getModel();if(ce===null)return;const de=[];for(let he=0,ue=ae.length;he=z){if(q.lineNumber===ce.getLineCount())continue;const ee=new C.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$=ce.getValueInRange(ee).split("").reverse().join("");de.push(new D.ReplaceCommand(new s.Selection(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$))}else{const ee=new C.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber,q.column+1),$=ce.getValueInRange(ee).split("").reverse().join("");de.push(new D.ReplaceCommandThatPreservesSelection(ee,$,new s.Selection(q.lineNumber,q.column+1,q.lineNumber,q.column+1)))}}ie.pushUndoStop(),ie.executeCommands(this.id,de),ie.pushUndoStop()}}e.TransposeAction=j;class R extends y.EditorAction{run(Y,ie){const ae=ie.getSelections();if(ae===null)return;const ce=ie.getModel();if(ce===null)return;const de=ie.getOption(128),he=[];for(const ue of ae)if(ue.isEmpty()){const te=ue.getStartPosition(),q=ie.getConfiguredWordAtPosition(te);if(!q)continue;const z=new C.Range(te.lineNumber,q.startColumn,te.lineNumber,q.endColumn),ee=ce.getValueInRange(z);he.push(_.EditOperation.replace(z,this._modifyText(ee,de)))}else{const te=ce.getValueInRange(ue);he.push(_.EditOperation.replace(ue,this._modifyText(te,de)))}ie.pushUndoStop(),ie.executeEdits(this.id,he),ie.pushUndoStop()}}e.AbstractCaseAction=R;class K extends R{constructor(){super({id:"editor.action.transformToUppercase",label:u.localize(23,null),alias:"Transform to Uppercase",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){return Y.toLocaleUpperCase()}}e.UpperCaseAction=K;class G extends R{constructor(){super({id:"editor.action.transformToLowercase",label:u.localize(24,null),alias:"Transform to Lowercase",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){return Y.toLocaleLowerCase()}}e.LowerCaseAction=G;class Z{constructor(Y,ie){this._pattern=Y,this._flags=ie,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}class J extends R{constructor(){super({id:"editor.action.transformToTitlecase",label:u.localize(25,null),alias:"Transform to Title Case",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=J.titleBoundary.get();return ae?Y.toLocaleLowerCase().replace(ae,ce=>ce.toLocaleUpperCase()):Y}}e.TitleCaseAction=J,J.titleBoundary=new Z("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");class X extends R{constructor(){super({id:"editor.action.transformToSnakecase",label:u.localize(26,null),alias:"Transform to Snake Case",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=X.caseBoundary.get(),ce=X.singleLetters.get();return!ae||!ce?Y:Y.replace(ae,"$1_$2").replace(ce,"$1_$2$3").toLocaleLowerCase()}}e.SnakeCaseAction=X,X.caseBoundary=new Z("(\\p{Ll})(\\p{Lu})","gmu"),X.singleLetters=new Z("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");class H extends R{constructor(){super({id:"editor.action.transformToCamelcase",label:u.localize(27,null),alias:"Transform to Camel Case",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=H.wordBoundary.get();if(!ae)return Y;const ce=Y.split(ae);return ce.shift()+ce.map(he=>he.substring(0,1).toLocaleUpperCase()+he.substring(1)).join("")}}e.CamelCaseAction=H,H.wordBoundary=new Z("[_\\s-]","gm");class B extends R{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(ie=>ie.isSupported())}constructor(){super({id:"editor.action.transformToKebabcase",label:u.localize(28,null),alias:"Transform to Kebab Case",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=B.caseBoundary.get(),ce=B.singleLetters.get(),de=B.underscoreBoundary.get();return!ae||!ce||!de?Y:Y.replace(de,"$1-$3").replace(ae,"$1-$2").replace(ce,"$1-$2").toLocaleLowerCase()}}e.KebabCaseAction=B,B.caseBoundary=new Z("(\\p{Ll})(\\p{Lu})","gmu"),B.singleLetters=new Z("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu"),B.underscoreBoundary=new Z("(\\S)(_)(\\S)","gm"),(0,y.registerEditorAction)(o),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(l),(0,y.registerEditorAction)(m),(0,y.registerEditorAction)(v),(0,y.registerEditorAction)(w),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(P),(0,y.registerEditorAction)(x),(0,y.registerEditorAction)(T),(0,y.registerEditorAction)(A),(0,y.registerEditorAction)(N),(0,y.registerEditorAction)(O),(0,y.registerEditorAction)(W),(0,y.registerEditorAction)(U),(0,y.registerEditorAction)(j),(0,y.registerEditorAction)(K),(0,y.registerEditorAction)(G),X.caseBoundary.isSupported()&&X.singleLetters.isSupported()&&(0,y.registerEditorAction)(X),H.wordBoundary.isSupported()&&(0,y.registerEditorAction)(H),J.titleBoundary.isSupported()&&(0,y.registerEditorAction)(J),B.isSupported()&&(0,y.registerEditorAction)(B)}),define(ne[808],se([1,0,2,16]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class y extends L.Disposable{constructor(S){super(),this._editor=S,this._register(this._editor.onMouseDown(f=>{const _=this._editor.getOption(115);_>=0&&f.target.type===6&&f.target.position.column>=_&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}}y.ID="editor.contrib.longLinesHelper",(0,k.registerEditorContribution)(y.ID,y,2)}),define(ne[190],se([1,0,183,49,6,55,2,16,5,117,686,15,56,7,456]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.MessageController=void 0;let a=t=class{static get(c){return c.getContribution(t.ID)}constructor(c,o,d){this._openerService=d,this._messageWidget=new S.MutableDisposable,this._messageListeners=new S.DisposableStore,this._mouseOverMessage=!1,this._editor=c,this._visible=t.MESSAGE_VISIBLE.bindTo(o)}dispose(){var c;(c=this._message)===null||c===void 0||c.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(c,o){(0,k.alert)((0,D.isMarkdownString)(c)?c.value:c),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=(0,D.isMarkdownString)(c)?(0,L.renderMarkdown)(c,{actionHandler:{callback:l=>(0,g.openLinkFromMarkdown)(this._openerService,l,(0,D.isMarkdownString)(c)?c.isTrusted:void 0),disposables:this._messageListeners}}):void 0,this._messageWidget.value=new h(this._editor,o,typeof c=="string"?c:this._message.element),this._messageListeners.add(y.Event.debounce(this._editor.onDidBlurEditorText,(l,p)=>p,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&n.isAncestor(document.activeElement,this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(n.addDisposableListener(this._messageWidget.value.getDomNode(),n.EventType.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(n.addDisposableListener(this._messageWidget.value.getDomNode(),n.EventType.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let d;this._messageListeners.add(this._editor.onMouseMove(l=>{l.target.position&&(d?d.containsPosition(l.target.position)||this.closeMessage():d=new _.Range(o.lineNumber-3,1,l.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(h.fadeOut(this._messageWidget.value))}};e.MessageController=a,a.ID="editor.contrib.messageController",a.MESSAGE_VISIBLE=new s.RawContextKey("messageVisible",!1,C.localize(0,null)),e.MessageController=a=t=ke([fe(1,s.IContextKeyService),fe(2,i.IOpenerService)],a);const u=f.EditorCommand.bindToContribution(a.get);(0,f.registerEditorCommand)(new u({id:"leaveEditorMessage",precondition:a.MESSAGE_VISIBLE,handler:r=>r.closeMessage(),kbOpts:{weight:100+30,primary:9}}));class h{static fadeOut(c){const o=()=>{c.dispose(),clearTimeout(d),c.getDomNode().removeEventListener("animationend",o)},d=setTimeout(o,110);return c.getDomNode().addEventListener("animationend",o),c.getDomNode().classList.add("fadeOut"),{dispose:o}}constructor(c,{lineNumber:o,column:d},l){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=c,this._editor.revealLinesInCenterIfOutsideViewport(o,o,0),this._position={lineNumber:o,column:d},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const p=document.createElement("div");p.classList.add("anchor","top"),this._domNode.appendChild(p);const m=document.createElement("div");typeof l=="string"?(m.classList.add("message"),m.textContent=l):(l.classList.add("message"),m.appendChild(l)),this._domNode.appendChild(m);const v=document.createElement("div");v.classList.add("anchor","below"),this._domNode.appendChild(v),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(c){this._domNode.classList.toggle("below",c===2)}}(0,f.registerEditorContribution)(a.ID,a,4)}),define(ne[809],se([1,0,55,2,16,190,693]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadOnlyMessageController=void 0;class f extends k.Disposable{constructor(g){super(),this.editor=g,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const g=D.MessageController.get(this.editor);if(g&&this.editor.hasModel()){let C=this.editor.getOptions().get(90);C||(this.editor.isSimpleWidget?C=new L.MarkdownString(S.localize(0,null)):C=new L.MarkdownString(S.localize(1,null))),g.showMessage(C,this.editor.getPosition())}}}e.ReadOnlyMessageController=f,f.ID="editor.contrib.readOnlyMessageController",(0,y.registerEditorContribution)(f.ID,f,2)}),define(ne[810],se([1,0,14,19,9,16,12,5,24,21,298,547,696,30,27,18,69,20,22]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.provideSelectionRanges=e.SmartSelectController=void 0;class o{constructor(w,E){this.index=w,this.ranges=E}mov(w){const E=this.index+(w?1:-1);if(E<0||E>=this.ranges.length)return this;const I=new o(E,this.ranges);return I.ranges[E].equalsRange(this.ranges[this.index])?I.mov(w):I}}let d=c=class{static get(w){return w.getContribution(c.ID)}constructor(w,E){this._editor=w,this._languageFeaturesService=E,this._ignoreSelection=!1}dispose(){var w;(w=this._selectionListener)===null||w===void 0||w.dispose()}run(w){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return;const E=this._editor.getSelections(),I=this._editor.getModel();if(this._state||(yield v(this._languageFeaturesService.selectionRangeProvider,I,E.map(P=>P.getPosition()),this._editor.getOption(111),k.CancellationToken.None).then(P=>{var x;if(!(!L.isNonEmptyArray(P)||P.length!==E.length)&&!(!this._editor.hasModel()||!L.equals(this._editor.getSelections(),E,(T,A)=>T.equalsSelection(A)))){for(let T=0;TA.containsPosition(E[T].getStartPosition())&&A.containsPosition(E[T].getEndPosition())),P[T].unshift(E[T]);this._state=P.map(T=>new o(0,T)),(x=this._selectionListener)===null||x===void 0||x.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var T;this._ignoreSelection||((T=this._selectionListener)===null||T===void 0||T.dispose(),this._state=void 0)})}})),!this._state)return;this._state=this._state.map(P=>P.mov(w));const M=this._state.map(P=>_.Selection.fromPositions(P.ranges[P.index].getStartPosition(),P.ranges[P.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(M)}finally{this._ignoreSelection=!1}})}};e.SmartSelectController=d,d.ID="editor.contrib.smartSelectController",e.SmartSelectController=d=c=ke([fe(1,a.ILanguageFeaturesService)],d);class l extends D.EditorAction{constructor(w,E){super(E),this._forward=w}run(w,E){return we(this,void 0,void 0,function*(){const I=d.get(E);I&&(yield I.run(this._forward))})}}class p extends l{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:i.localize(0,null),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"1_basic",title:i.localize(1,null),order:2}})}}t.CommandsRegistry.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class m extends l{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:i.localize(2,null),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"1_basic",title:i.localize(3,null),order:3}})}}(0,D.registerEditorContribution)(d.ID,d,4),(0,D.registerEditorAction)(p),(0,D.registerEditorAction)(m);function v(b,w,E,I,M){return we(this,void 0,void 0,function*(){const P=b.all(w).concat(new s.WordSelectionRangeProvider(I.selectSubwords));P.length===1&&P.unshift(new C.BracketSelectionRangeProvider);const x=[],T=[];for(const A of P)x.push(Promise.resolve(A.provideSelectionRanges(w,E,M)).then(N=>{if(L.isNonEmptyArray(N)&&N.length===E.length)for(let F=0;F{if(A.length===0)return[];A.sort((W,U)=>S.Position.isBefore(W.getStartPosition(),U.getStartPosition())?1:S.Position.isBefore(U.getStartPosition(),W.getStartPosition())||S.Position.isBefore(W.getEndPosition(),U.getEndPosition())?-1:S.Position.isBefore(U.getEndPosition(),W.getEndPosition())?1:0);const N=[];let F;for(const W of A)(!F||f.Range.containsRange(W,F)&&!f.Range.equalsRange(W,F))&&(N.push(W),F=W);if(!I.selectLeadingAndTrailingWhitespace)return N;const O=[N[0]];for(let W=1;W0&&this.word.startColumn===m.startColumn&&this.word.endColumn=0&&I.resolve(L.CancellationToken.None)}return p}};r=ke([fe(5,i.ISuggestMemoryService)],r);let c=class{constructor(l,p,m,v){this._getEditorOption=l,this._languageFeatureService=p,this._clipboardService=m,this._suggestMemoryService=v}provideInlineCompletions(l,p,m,v){var b;return we(this,void 0,void 0,function*(){if(m.selectedSuggestionInfo)return;const w=this._getEditorOption(87,l);if(s.QuickSuggestionsOptions.isAllOff(w))return;l.tokenization.tokenizeIfCheap(p.lineNumber);const E=l.tokenization.getLineTokens(p.lineNumber),I=E.getStandardTokenType(E.findTokenIndexAtOffset(Math.max(p.column-1-1,0)));if(s.QuickSuggestionsOptions.valueFor(w,I)!=="inline")return;let M=l.getWordAtPosition(p),P;if(M?.word||(P=this._getTriggerCharacterInfo(l,p)),!M?.word&&!P||(M||(M=l.getWordUntilPosition(p)),M.endColumn!==p.column))return;let x;const T=l.getValueInRange(new _.Range(p.lineNumber,1,p.lineNumber,p.column));if(!P&&(!((b=this._lastResult)===null||b===void 0)&&b.canBeReused(l,p.lineNumber,M))){const A=new C.LineContext(T,p.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=A,this._lastResult.acquire(),x=this._lastResult}else{const A=yield(0,s.provideSuggestionItems)(this._languageFeatureService.completionProvider,l,p,new s.CompletionOptions(void 0,void 0,P?.providers),P&&{triggerKind:1,triggerCharacter:P.ch},v);let N;A.needsClipboard&&(N=yield this._clipboardService.readText());const F=new C.CompletionModel(A.items,p.column,new C.LineContext(T,0),n.WordDistance.None,this._getEditorOption(116,l),this._getEditorOption(110,l),{boostFullMatch:!1,firstMatchCanBeWeak:!1},N);x=new r(l,p.lineNumber,M,F,A,this._suggestMemoryService)}return this._lastResult=x,x})}handleItemDidShow(l,p){p.completion.resolve(L.CancellationToken.None)}freeInlineCompletions(l){l.release()}_getTriggerCharacterInfo(l,p){var m;const v=l.getValueInRange(_.Range.fromPositions({lineNumber:p.lineNumber,column:p.column-1},p)),b=new Set;for(const w of this._languageFeatureService.completionProvider.all(l))!((m=w.triggerCharacters)===null||m===void 0)&&m.includes(v)&&b.add(w);if(b.size!==0)return{providers:b,ch:v}}};e.SuggestInlineCompletions=c,e.SuggestInlineCompletions=c=ke([fe(1,g.ILanguageFeaturesService),fe(2,t.IClipboardService),fe(3,i.ISuggestMemoryService)],c);let o=u=class{constructor(l,p,m,v){if(++u._counter===1){const b=v.createInstance(c,(w,E)=>{var I;return((I=m.listCodeEditors().find(P=>P.getModel()===E))!==null&&I!==void 0?I:l).getOption(w)});u._disposable=p.inlineCompletionsProvider.register("*",b)}}dispose(){var l;--u._counter===0&&((l=u._disposable)===null||l===void 0||l.dispose(),u._disposable=void 0)}};o._counter=0,o=u=ke([fe(1,g.ILanguageFeaturesService),fe(2,f.ICodeEditorService),fe(3,a.IInstantiationService)],o),(0,S.registerEditorContribution)("suggest.inlineCompletionsProvider",o,0)}),define(ne[812],se([1,0,58,16,708]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class D extends k.EditorAction{constructor(){super({id:"editor.action.forceRetokenize",label:y.localize(0,null),alias:"Developer: Force Retokenize",precondition:void 0})}run(f,_){if(!_.hasModel())return;const g=_.getModel();g.tokenization.resetTokenization();const C=new L.StopWatch;g.tokenization.forceTokenization(g.getLineCount()),C.stop(),console.log(`tokenization took ${C.elapsed()}`)}}(0,k.registerEditorAction)(D)}),define(ne[813],se([1,0,2,45,16,33,710,156]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnusualLineTerminatorsDetector=void 0;const _="ignoreUnusualLineTerminators";function g(i,n,t){i.setModelProperty(n.uri,_,t)}function C(i,n){return i.getModelProperty(n.uri,_)}let s=class extends L.Disposable{constructor(n,t,a){super(),this._editor=n,this._dialogService=t,this._codeEditorService=a,this._isPresentingDialog=!1,this._config=this._editor.getOption(124),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(124)&&(this._config=this._editor.getOption(124),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(u=>{u.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}_checkForUnusualLineTerminators(){return we(this,void 0,void 0,function*(){if(this._config==="off"||!this._editor.hasModel())return;const n=this._editor.getModel();if(!n.mightContainUnusualLineTerminators()||C(this._codeEditorService,n)===!0||this._editor.getOption(89))return;if(this._config==="auto"){n.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let a;try{this._isPresentingDialog=!0,a=yield this._dialogService.confirm({title:S.localize(0,null),message:S.localize(1,null),detail:S.localize(2,null,(0,k.basename)(n.uri)),primaryButton:S.localize(3,null),cancelButton:S.localize(4,null)})}finally{this._isPresentingDialog=!1}if(!a.confirmed){g(this._codeEditorService,n,!0);return}n.removeUnusualLineTerminators(this._editor.getSelections())})}};e.UnusualLineTerminatorsDetector=s,s.ID="editor.contrib.unusualLineTerminatorsDetector",e.UnusualLineTerminatorsDetector=s=ke([fe(1,f.IDialogService),fe(2,D.ICodeEditorService)],s),(0,y.registerEditorContribution)(s.ID,s,1)}),define(ne[353],se([1,0,16,123,36,74,178,146,12,5,24,21,32,713,84,15,238]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeleteInsideWord=e.DeleteWordRight=e.DeleteWordEndRight=e.DeleteWordStartRight=e.DeleteWordLeft=e.DeleteWordEndLeft=e.DeleteWordStartLeft=e.DeleteWordRightCommand=e.DeleteWordLeftCommand=e.DeleteWordCommand=e.CursorWordAccessibilityRightSelect=e.CursorWordAccessibilityRight=e.CursorWordRightSelect=e.CursorWordEndRightSelect=e.CursorWordStartRightSelect=e.CursorWordRight=e.CursorWordEndRight=e.CursorWordStartRight=e.CursorWordAccessibilityLeftSelect=e.CursorWordAccessibilityLeft=e.CursorWordLeftSelect=e.CursorWordEndLeftSelect=e.CursorWordStartLeftSelect=e.CursorWordLeft=e.CursorWordEndLeft=e.CursorWordStartLeft=e.WordRightCommand=e.WordLeftCommand=e.MoveWordCommand=void 0;class h extends L.EditorCommand{constructor(H){super(H),this._inSelectionMode=H.inSelectionMode,this._wordNavigationType=H.wordNavigationType}runEditorCommand(H,B,V){if(!B.hasModel())return;const Y=(0,f.getMapForWordSeparators)(B.getOption(128)),ie=B.getModel(),ce=B.getSelections().map(de=>{const he=new _.Position(de.positionLineNumber,de.positionColumn),ue=this._move(Y,ie,he,this._wordNavigationType);return this._moveTo(de,ue,this._inSelectionMode)});if(ie.pushStackElement(),B._getViewModel().setCursorStates("moveWordCommand",3,ce.map(de=>D.CursorState.fromModelSelection(de))),ce.length===1){const de=new _.Position(ce[0].positionLineNumber,ce[0].positionColumn);B.revealPosition(de,0)}}_moveTo(H,B,V){return V?new C.Selection(H.selectionStartLineNumber,H.selectionStartColumn,B.lineNumber,B.column):new C.Selection(B.lineNumber,B.column,B.lineNumber,B.column)}}e.MoveWordCommand=h;class r extends h{_move(H,B,V,Y){return S.WordOperations.moveWordLeft(H,B,V,Y)}}e.WordLeftCommand=r;class c extends h{_move(H,B,V,Y){return S.WordOperations.moveWordRight(H,B,V,Y)}}e.WordRightCommand=c;class o extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}e.CursorWordStartLeft=o;class d extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}e.CursorWordEndLeft=d;class l extends r{constructor(){var H;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:2063,mac:{primary:527},weight:100}})}}e.CursorWordLeft=l;class p extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}e.CursorWordStartLeftSelect=p;class m extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}e.CursorWordEndLeftSelect=m;class v extends r{constructor(){var H;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:3087,mac:{primary:1551},weight:100}})}}e.CursorWordLeftSelect=v;class b extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityLeft=b;class w extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityLeftSelect=w;class E extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}e.CursorWordStartRight=E;class I extends c{constructor(){var H;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:2065,mac:{primary:529},weight:100}})}}e.CursorWordEndRight=I;class M extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}e.CursorWordRight=M;class P extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}e.CursorWordStartRightSelect=P;class x extends c{constructor(){var H;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:3089,mac:{primary:1553},weight:100}})}}e.CursorWordEndRightSelect=x;class T extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}e.CursorWordRightSelect=T;class A extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityRight=A;class N extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityRightSelect=N;class F extends L.EditorCommand{constructor(H){super(H),this._whitespaceHeuristics=H.whitespaceHeuristics,this._wordNavigationType=H.wordNavigationType}runEditorCommand(H,B,V){const Y=H.get(i.ILanguageConfigurationService);if(!B.hasModel())return;const ie=(0,f.getMapForWordSeparators)(B.getOption(128)),ae=B.getModel(),ce=B.getSelections(),de=B.getOption(6),he=B.getOption(10),ue=Y.getLanguageConfiguration(ae.getLanguageId()).getAutoClosingPairs(),te=B._getViewModel(),q=ce.map(z=>{const ee=this._delete({wordSeparators:ie,model:ae,selection:z,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:B.getOption(8),autoClosingBrackets:de,autoClosingQuotes:he,autoClosingPairs:ue,autoClosedCharacters:te.getCursorAutoClosedCharacters()},this._wordNavigationType);return new k.ReplaceCommand(ee,"")});B.pushUndoStop(),B.executeCommands(this.id,q),B.pushUndoStop()}}e.DeleteWordCommand=F;class O extends F{_delete(H,B){const V=S.WordOperations.deleteWordLeft(H,B);return V||new g.Range(1,1,1,1)}}e.DeleteWordLeftCommand=O;class W extends F{_delete(H,B){const V=S.WordOperations.deleteWordRight(H,B);if(V)return V;const Y=H.model.getLineCount(),ie=H.model.getLineMaxColumn(Y);return new g.Range(Y,ie,Y,ie)}}e.DeleteWordRightCommand=W;class U extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:s.EditorContextKeys.writable})}}e.DeleteWordStartLeft=U;class j extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:s.EditorContextKeys.writable})}}e.DeleteWordEndLeft=j;class R extends O{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:s.EditorContextKeys.writable,kbOpts:{kbExpr:s.EditorContextKeys.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}e.DeleteWordLeft=R;class K extends W{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:s.EditorContextKeys.writable})}}e.DeleteWordStartRight=K;class G extends W{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:s.EditorContextKeys.writable})}}e.DeleteWordEndRight=G;class Z extends W{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:s.EditorContextKeys.writable,kbOpts:{kbExpr:s.EditorContextKeys.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}e.DeleteWordRight=Z;class J extends L.EditorAction{constructor(){super({id:"deleteInsideWord",precondition:s.EditorContextKeys.writable,label:n.localize(0,null),alias:"Delete Word"})}run(H,B,V){if(!B.hasModel())return;const Y=(0,f.getMapForWordSeparators)(B.getOption(128)),ie=B.getModel(),ce=B.getSelections().map(de=>{const he=S.WordOperations.deleteInsideWord(Y,ie,de);return new k.ReplaceCommand(he,"")});B.pushUndoStop(),B.executeCommands(this.id,ce),B.pushUndoStop()}}e.DeleteInsideWord=J,(0,L.registerEditorCommand)(new o),(0,L.registerEditorCommand)(new d),(0,L.registerEditorCommand)(new l),(0,L.registerEditorCommand)(new p),(0,L.registerEditorCommand)(new m),(0,L.registerEditorCommand)(new v),(0,L.registerEditorCommand)(new E),(0,L.registerEditorCommand)(new I),(0,L.registerEditorCommand)(new M),(0,L.registerEditorCommand)(new P),(0,L.registerEditorCommand)(new x),(0,L.registerEditorCommand)(new T),(0,L.registerEditorCommand)(new b),(0,L.registerEditorCommand)(new w),(0,L.registerEditorCommand)(new A),(0,L.registerEditorCommand)(new N),(0,L.registerEditorCommand)(new U),(0,L.registerEditorCommand)(new j),(0,L.registerEditorCommand)(new R),(0,L.registerEditorCommand)(new K),(0,L.registerEditorCommand)(new G),(0,L.registerEditorCommand)(new Z),(0,L.registerEditorAction)(J)}),define(ne[814],se([1,0,16,178,5,21,353,27]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorWordPartRightSelect=e.CursorWordPartRight=e.WordPartRightCommand=e.CursorWordPartLeftSelect=e.CursorWordPartLeft=e.WordPartLeftCommand=e.DeleteWordPartRight=e.DeleteWordPartLeft=void 0;class _ extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(h,r){const c=k.WordPartOperations.deleteWordPartLeft(h);return c||new y.Range(1,1,1,1)}}e.DeleteWordPartLeft=_;class g extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(h,r){const c=k.WordPartOperations.deleteWordPartRight(h);if(c)return c;const o=h.model.getLineCount(),d=h.model.getLineMaxColumn(o);return new y.Range(o,d,o,d)}}e.DeleteWordPartRight=g;class C extends S.MoveWordCommand{_move(h,r,c,o){return k.WordPartOperations.moveWordPartLeft(h,r,c)}}e.WordPartLeftCommand=C;class s extends C{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}e.CursorWordPartLeft=s,f.CommandsRegistry.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class i extends C{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}e.CursorWordPartLeftSelect=i,f.CommandsRegistry.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class n extends S.MoveWordCommand{_move(h,r,c,o){return k.WordPartOperations.moveWordPartRight(h,r,c)}}e.WordPartRightCommand=n;class t extends n{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}e.CursorWordPartRight=t;class a extends n{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}e.CursorWordPartRightSelect=a,(0,L.registerEditorCommand)(new _),(0,L.registerEditorCommand)(new g),(0,L.registerEditorCommand)(new s),(0,L.registerEditorCommand)(new i),(0,L.registerEditorCommand)(new t),(0,L.registerEditorCommand)(new a)}),define(ne[815],se([1,0,7,2,16,17,468]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IPadShowKeyboard=void 0;class S extends k.Disposable{constructor(g){super(),this.editor=g,this.widget=null,D.isIOS&&(this._register(g.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const g=!this.editor.getOption(89);!this.widget&&g?this.widget=new f(this.editor):this.widget&&!g&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}e.IPadShowKeyboard=S,S.ID="editor.contrib.iPadShowKeyboard";class f extends k.Disposable{constructor(g){super(),this.editor=g,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(L.addDisposableListener(this._domNode,"touchstart",C=>{this.editor.focus()})),this._register(L.addDisposableListener(this._domNode,"focus",C=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return f.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}f.ID="editor.contrib.ShowKeyboardWidget",(0,y.registerEditorContribution)(S.ID,S,3)}),define(ne[816],se([1,0,7,38,2,16,29,124,154,41,133,94,469]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0});let n=i=class extends y.Disposable{static get(c){return c.getContribution(i.ID)}constructor(c,o,d){super(),this._editor=c,this._languageService=d,this._widget=null,this._register(this._editor.onDidChangeModel(l=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(l=>this.stop())),this._register(S.TokenizationRegistry.onDidChange(l=>this.stop())),this._register(this._editor.onKeyUp(l=>l.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new h(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};n.ID="editor.contrib.inspectTokens",n=i=ke([fe(1,C.IStandaloneThemeService),fe(2,g.ILanguageService)],n);class t extends D.EditorAction{constructor(){super({id:"editor.action.inspectTokens",label:s.InspectTokensNLS.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(c,o){const d=n.get(o);d?.launch()}}function a(r){let c="";for(let o=0,d=r.length;o_.NullState,tokenize:(l,p,m)=>(0,_.nullTokenize)(c,m),tokenizeEncoded:(l,p,m)=>(0,_.nullTokenizeEncoded)(d,m)}}class h extends y.Disposable{constructor(c,o){super(),this.allowEditorOverflow=!0,this._editor=c,this._languageService=o,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=u(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(d=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return h._ID}_compute(c){const o=this._getTokensAtLine(c.lineNumber);let d=0;for(let b=o.tokens1.length-1;b>=0;b--){const w=o.tokens1[b];if(c.column-1>=w.offset){d=b;break}}let l=0;for(let b=o.tokens2.length>>>1;b>=0;b--)if(c.column-1>=o.tokens2[b<<1]){l=b;break}const p=this._model.getLineContent(c.lineNumber);let m="";if(d{var v;return(v=d.lookupKeybinding(m.id))!==null&&v!==void 0?v:void 0}},h),{allowContextMenu:!0,skipTelemetry:typeof h?.telemetrySource=="string"})),this._options=h,this._menuService=r,this._contextKeyService=c,this._contextMenuService=o,this._sessionDisposables=this._store.add(new f.DisposableStore);const p=h?.telemetrySource;p&&this._store.add(this.actionBar.onDidRun(m=>l.publicLog2("workbenchActionExecuted",{id:m.action.id,from:p})))}setActions(u,h=[],r){var c,o,d;this._sessionDisposables.clear();const l=u.slice(),p=h.slice(),m=[];let v=0;const b=[];let w=!1;if(((c=this._options)===null||c===void 0?void 0:c.hiddenItemStrategy)!==-1)for(let E=0;E=this._options.maxNumberOfItems&&(l[I]=void 0,b[I]=M)}}(0,S.coalesceInPlace)(l),(0,S.coalesceInPlace)(b),super.setActions(l,D.Separator.join(b,p)),m.length>0&&this._sessionDisposables.add((0,L.addDisposableListener)(this.getElement(),"contextmenu",E=>{var I,M,P,x,T;const A=new k.StandardMouseEvent(E),N=this.getItemAction(A.target);if(!N)return;A.preventDefault(),A.stopPropagation();let F=!1;if(v===1&&((I=this._options)===null||I===void 0?void 0:I.hiddenItemStrategy)===0){F=!0;for(let U=0;Uthis._menuService.resetHiddenStates(r)}))),this._contextMenuService.showContextMenu({getAnchor:()=>A,getActions:()=>W,menuId:(P=this._options)===null||P===void 0?void 0:P.contextMenu,menuActionOptions:Object.assign({renderShortTitle:!0},(x=this._options)===null||x===void 0?void 0:x.menuOptions),skipTelemetry:typeof((T=this._options)===null||T===void 0?void 0:T.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};e.WorkbenchToolBar=t,e.WorkbenchToolBar=t=ke([fe(2,g.IMenuService),fe(3,C.IContextKeyService),fe(4,s.IContextMenuService),fe(5,i.IKeybindingService),fe(6,n.ITelemetryService)],t)}),define(ne[818],se([1,0,564,9,72,2,65,730,27,28,156,8,34,771,87,79]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u,h;Object.defineProperty(e,"__esModule",{value:!0}),e.CommandsHistory=e.AbstractCommandsQuickAccessProvider=void 0;let r=u=class extends n.PickerQuickAccessProvider{constructor(d,l,p,m,v,b){super(u.PREFIX,d),this.instantiationService=l,this.keybindingService=p,this.commandService=m,this.telemetryService=v,this.dialogService=b,this.commandsHistory=this._register(this.instantiationService.createInstance(c)),this.options=d}_getPicks(d,l,p,m){var v,b,w,E;return we(this,void 0,void 0,function*(){const I=yield this.getCommandPicks(p);if(p.isCancellationRequested)return[];const M=[];for(const N of I){const F=(v=u.WORD_FILTER(d,N.label))!==null&&v!==void 0?v:void 0,O=N.commandAlias&&(b=u.WORD_FILTER(d,N.commandAlias))!==null&&b!==void 0?b:void 0;F||O?(N.highlights={label:F,detail:this.options.showAlias?O:void 0},M.push(N)):d===N.commandId&&M.push(N)}const P=new Map;for(const N of M){const F=P.get(N.label);F?(N.description=N.commandId,F.description=F.commandId):P.set(N.label,N)}M.sort((N,F)=>{const O=this.commandsHistory.peek(N.commandId),W=this.commandsHistory.peek(F.commandId);if(O&&W)return O>W?-1:1;if(O)return-1;if(W)return 1;if(this.options.suggestedCommandIds){const U=this.options.suggestedCommandIds.has(N.commandId),j=this.options.suggestedCommandIds.has(F.commandId);if(U&&j)return 0;if(U)return-1;if(j)return 1}return N.label.localeCompare(F.label)});const x=[];let T=!1,A=!!this.options.suggestedCommandIds;for(let N=0;Nwe(this,void 0,void 0,function*(){const N=yield this.getAdditionalCommandPicks(I,M,d,p);return p.isCancellationRequested?[]:N.map(F=>this.toCommandPick(F,m))}))()}:x})}toCommandPick(d,l){if(d.type==="separator")return d;const p=this.keybindingService.lookupKeybinding(d.commandId),m=p?(0,f.localize)(3,null,d.label,p.getAriaLabel()):d.label;return Object.assign(Object.assign({},d),{ariaLabel:m,detail:this.options.showAlias&&d.commandAlias!==d.label?d.commandAlias:void 0,keybinding:p,accept:()=>we(this,void 0,void 0,function*(){var v,b;this.commandsHistory.push(d.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:d.commandId,from:(v=l?.from)!==null&&v!==void 0?v:"quick open"});try{!((b=d.args)===null||b===void 0)&&b.length?yield this.commandService.executeCommand(d.commandId,...d.args):yield this.commandService.executeCommand(d.commandId)}catch(w){(0,k.isCancellationError)(w)||this.dialogService.error((0,f.localize)(4,null,d.label),(0,L.toErrorMessage)(w))}})})}};e.AbstractCommandsQuickAccessProvider=r,r.PREFIX=">",r.WORD_FILTER=(0,y.or)(y.matchesPrefix,y.matchesWords,y.matchesContiguousSubString),e.AbstractCommandsQuickAccessProvider=r=u=ke([fe(1,s.IInstantiationService),fe(2,i.IKeybindingService),fe(3,_.ICommandService),fe(4,a.ITelemetryService),fe(5,C.IDialogService)],r);let c=h=class extends D.Disposable{constructor(d,l){super(),this.storageService=d,this.configurationService=l,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(d=>this.updateConfiguration(d)))}updateConfiguration(d){d&&!d.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=h.getConfiguredCommandHistoryLength(this.configurationService),h.cache&&h.cache.limit!==this.configuredCommandsHistoryLength&&(h.cache.limit=this.configuredCommandsHistoryLength,h.saveState(this.storageService)))}load(){const d=this.storageService.get(h.PREF_KEY_CACHE,0);let l;if(d)try{l=JSON.parse(d)}catch{}const p=h.cache=new S.LRUCache(this.configuredCommandsHistoryLength,1);if(l){let m;l.usesLRU?m=l.entries:m=l.entries.sort((v,b)=>v.value-b.value),m.forEach(v=>p.set(v.key,v.value))}h.counter=this.storageService.getNumber(h.PREF_KEY_COUNTER,0,h.counter)}push(d){h.cache&&(h.cache.set(d,h.counter++),h.saveState(this.storageService))}peek(d){var l;return(l=h.cache)===null||l===void 0?void 0:l.peek(d)}static saveState(d){if(!h.cache)return;const l={usesLRU:!0,entries:[]};h.cache.forEach((p,m)=>l.entries.push({key:m,value:p})),d.store(h.PREF_KEY_CACHE,JSON.stringify(l),0,0),d.store(h.PREF_KEY_COUNTER,h.counter,0,0)}static getConfiguredCommandHistoryLength(d){var l,p;const v=(p=(l=d.getValue().workbench)===null||l===void 0?void 0:l.commandPalette)===null||p===void 0?void 0:p.history;return typeof v=="number"?v:h.DEFAULT_COMMANDS_HISTORY_LENGTH}};e.CommandsHistory=c,c.DEFAULT_COMMANDS_HISTORY_LENGTH=50,c.PREF_KEY_CACHE="commandPalette.mru.cache",c.PREF_KEY_COUNTER="commandPalette.mru.counter",c.counter=1,e.CommandsHistory=c=h=ke([fe(0,t.IStorageService),fe(1,g.IConfigurationService)],c)}),define(ne[819],se([1,0,120,818]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractEditorCommandsQuickAccessProvider=void 0;class y extends k.AbstractCommandsQuickAccessProvider{constructor(S,f,_,g,C,s){super(S,f,_,g,C,s)}getCodeEditorCommandPicks(){const S=this.activeTextEditorControl;if(!S)return[];const f=[];for(const _ of S.getSupportedActions())f.push({commandId:_.id,commandAlias:_.alias,label:(0,L.stripIcons)(_.label)||_.id});return f}}e.AbstractEditorCommandsQuickAccessProvider=y}),define(ne[820],se([1,0,37,136,94,33,819,8,34,27,79,156,16,21,71]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoLineAction=e.StandaloneCommandsQuickAccessProvider=void 0;let a=class extends S.AbstractEditorCommandsQuickAccessProvider{get activeTextEditorControl(){var r;return(r=this.codeEditorService.getFocusedCodeEditor())!==null&&r!==void 0?r:void 0}constructor(r,c,o,d,l,p){super({showAlias:!1},r,o,d,l,p),this.codeEditorService=c}getCommandPicks(){return we(this,void 0,void 0,function*(){return this.getCodeEditorCommandPicks()})}hasAdditionalCommandPicks(){return!1}getAdditionalCommandPicks(){return we(this,void 0,void 0,function*(){return[]})}};e.StandaloneCommandsQuickAccessProvider=a,e.StandaloneCommandsQuickAccessProvider=a=ke([fe(0,f.IInstantiationService),fe(1,D.ICodeEditorService),fe(2,_.IKeybindingService),fe(3,g.ICommandService),fe(4,C.ITelemetryService),fe(5,s.IDialogService)],a);class u extends i.EditorAction{constructor(){super({id:u.ID,label:y.QuickCommandNLS.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:n.EditorContextKeys.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(r){r.get(t.IQuickInputService).quickAccess.show(a.PREFIX)}}e.GotoLineAction=u,u.ID="editor.action.quickCommand",(0,i.registerEditorAction)(u),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:a,prefix:a.PREFIX,helpEntries:[{description:y.QuickCommandNLS.quickCommandHelp,commandId:u.ID}]})}),define(ne[31],se([1,0,13,38,6,85,736,240,37]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.workbenchColorsSchemaId=e.resolveColorValue=e.ifDefinedThenElse=e.oneOf=e.transparent=e.lighten=e.darken=e.executeTransform=e.chartsPurple=e.chartsGreen=e.chartsOrange=e.chartsYellow=e.chartsBlue=e.chartsRed=e.chartsLines=e.chartsForeground=e.problemsInfoIconForeground=e.problemsWarningIconForeground=e.problemsErrorIconForeground=e.minimapSliderActiveBackground=e.minimapSliderHoverBackground=e.minimapSliderBackground=e.minimapForegroundOpacity=e.minimapBackground=e.minimapWarning=e.minimapError=e.minimapSelection=e.minimapSelectionOccurrenceHighlight=e.minimapFindMatch=e.overviewRulerSelectionHighlightForeground=e.overviewRulerFindMatchForeground=e.overviewRulerCommonContentForeground=e.overviewRulerIncomingContentForeground=e.overviewRulerCurrentContentForeground=e.mergeBorder=e.mergeCommonContentBackground=e.mergeCommonHeaderBackground=e.mergeIncomingContentBackground=e.mergeIncomingHeaderBackground=e.mergeCurrentContentBackground=e.mergeCurrentHeaderBackground=e.breadcrumbsPickerBackground=e.breadcrumbsActiveSelectionForeground=e.breadcrumbsFocusForeground=e.breadcrumbsBackground=e.breadcrumbsForeground=e.snippetFinalTabstopHighlightBorder=e.snippetFinalTabstopHighlightBackground=e.snippetTabstopHighlightBorder=e.snippetTabstopHighlightBackground=e.toolbarActiveBackground=e.toolbarHoverOutline=e.toolbarHoverBackground=e.menuSeparatorBackground=e.menuSelectionBorder=e.menuSelectionBackground=e.menuSelectionForeground=e.menuBackground=e.menuForeground=e.menuBorder=e.quickInputListFocusBackground=e.quickInputListFocusIconForeground=e.quickInputListFocusForeground=e._deprecatedQuickInputListFocusBackground=e.checkboxSelectBorder=e.checkboxBorder=e.checkboxForeground=e.checkboxSelectBackground=e.checkboxBackground=e.listDeemphasizedForeground=e.tableOddRowsBackgroundColor=e.tableColumnsBorder=e.treeInactiveIndentGuidesStroke=e.treeIndentGuidesStroke=e.listFilterMatchHighlightBorder=e.listFilterMatchHighlight=e.listFilterWidgetShadow=e.listFilterWidgetNoMatchesOutline=e.listFilterWidgetOutline=e.listFilterWidgetBackground=e.listWarningForeground=e.listErrorForeground=e.listInvalidItemForeground=e.listFocusHighlightForeground=e.listHighlightForeground=e.listDropBackground=e.listHoverForeground=e.listHoverBackground=e.listInactiveFocusOutline=e.listInactiveFocusBackground=e.listInactiveSelectionIconForeground=e.listInactiveSelectionForeground=e.listInactiveSelectionBackground=e.listActiveSelectionIconForeground=e.listActiveSelectionForeground=e.listActiveSelectionBackground=e.listFocusAndSelectionOutline=e.listFocusOutline=e.listFocusForeground=e.listFocusBackground=e.diffUnchangedTextBackground=e.diffUnchangedRegionForeground=e.diffUnchangedRegionBackground=e.diffDiagonalFill=e.diffBorder=e.diffRemovedOutline=e.diffInsertedOutline=e.diffOverviewRulerRemoved=e.diffOverviewRulerInserted=e.diffRemovedLineGutter=e.diffInsertedLineGutter=e.diffRemovedLine=e.diffInsertedLine=e.diffRemoved=e.diffInserted=e.defaultRemoveColor=e.defaultInsertColor=e.editorLightBulbAutoFixForeground=e.editorLightBulbForeground=e.editorInlayHintParameterBackground=e.editorInlayHintParameterForeground=e.editorInlayHintTypeBackground=e.editorInlayHintTypeForeground=e.editorInlayHintBackground=e.editorInlayHintForeground=e.editorActiveLinkForeground=e.editorHoverStatusBarBackground=e.editorHoverBorder=e.editorHoverForeground=e.editorHoverBackground=e.editorHoverHighlight=e.searchResultsInfoForeground=e.searchEditorFindMatchBorder=e.searchEditorFindMatch=e.editorFindRangeHighlightBorder=e.editorFindMatchHighlightBorder=e.editorFindMatchBorder=e.editorFindRangeHighlight=e.editorFindMatchHighlight=e.editorFindMatch=e.editorSelectionHighlightBorder=e.editorSelectionHighlight=e.editorInactiveSelection=e.editorSelectionForeground=e.editorSelectionBackground=e.keybindingLabelBottomBorder=e.keybindingLabelBorder=e.keybindingLabelForeground=e.keybindingLabelBackground=e.pickerGroupBorder=e.pickerGroupForeground=e.quickInputTitleBackground=e.quickInputForeground=e.quickInputBackground=e.editorWidgetResizeBorder=e.editorWidgetBorder=e.editorWidgetForeground=e.editorWidgetBackground=e.editorStickyScrollHoverBackground=e.editorStickyScrollBackground=e.editorForeground=e.editorBackground=e.sashHoverBorder=e.editorHintBorder=e.editorHintForeground=e.editorInfoBorder=e.editorInfoForeground=e.editorInfoBackground=e.editorWarningBorder=e.editorWarningForeground=e.editorWarningBackground=e.editorErrorBorder=e.editorErrorForeground=e.editorErrorBackground=e.progressBarBackground=e.scrollbarSliderActiveBackground=e.scrollbarSliderHoverBackground=e.scrollbarSliderBackground=e.scrollbarShadow=e.badgeForeground=e.badgeBackground=e.buttonSecondaryHoverBackground=e.buttonSecondaryBackground=e.buttonSecondaryForeground=e.buttonBorder=e.buttonHoverBackground=e.buttonBackground=e.buttonSeparator=e.buttonForeground=e.selectBorder=e.selectForeground=e.selectListBackground=e.selectBackground=e.inputValidationErrorBorder=e.inputValidationErrorForeground=e.inputValidationErrorBackground=e.inputValidationWarningBorder=e.inputValidationWarningForeground=e.inputValidationWarningBackground=e.inputValidationInfoBorder=e.inputValidationInfoForeground=e.inputValidationInfoBackground=e.inputPlaceholderForeground=e.inputActiveOptionForeground=e.inputActiveOptionBackground=e.inputActiveOptionHoverBackground=e.inputActiveOptionBorder=e.inputBorder=e.inputForeground=e.inputBackground=e.widgetBorder=e.widgetShadow=e.textCodeBlockBackground=e.textBlockQuoteBorder=e.textBlockQuoteBackground=e.textPreformatForeground=e.textLinkActiveForeground=e.textLinkForeground=e.textSeparatorForeground=e.selectionBackground=e.activeContrastBorder=e.contrastBorder=e.focusBorder=e.iconForeground=e.descriptionForeground=e.errorForeground=e.disabledForeground=e.foreground=e.registerColor=e.Extensions=e.asCssVariableWithDefault=e.asCssVariable=e.asCssVariableName=void 0;function g(P){return`--vscode-${P.replace(/\./g,"-")}`}e.asCssVariableName=g;function C(P){return`var(${g(P)})`}e.asCssVariable=C;function s(P,x){return`var(${g(P)}, ${x})`}e.asCssVariableWithDefault=s,e.Extensions={ColorContribution:"base.contributions.colors"};class i{constructor(){this._onDidChangeSchema=new y.Emitter,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(x,T,A,N=!1,F){const O={id:x,description:A,defaults:T,needsTransparency:N,deprecationMessage:F};this.colorsById[x]=O;const W={type:"string",description:A,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return F&&(W.deprecationMessage=F),this.colorSchema.properties[x]=W,this.colorReferenceSchema.enum.push(x),this.colorReferenceSchema.enumDescriptions.push(A),this._onDidChangeSchema.fire(),x}getColors(){return Object.keys(this.colorsById).map(x=>this.colorsById[x])}resolveDefaultColor(x,T){const A=this.colorsById[x];if(A&&A.defaults){const N=A.defaults[T.type];return E(N,T)}}getColorSchema(){return this.colorSchema}toString(){const x=(T,A)=>{const N=T.indexOf(".")===-1?0:1,F=A.indexOf(".")===-1?0:1;return N!==F?N-F:T.localeCompare(A)};return Object.keys(this.colorsById).sort(x).map(T=>`- \`${T}\`: ${this.colorsById[T].description}`).join(` -`)}}const n=new i;_.Registry.add(e.Extensions.ColorContribution,n);function t(P,x,T,A,N){return n.registerColor(P,x,T,A,N)}e.registerColor=t,e.foreground=t("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},S.localize(0,null)),e.disabledForeground=t("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},S.localize(1,null)),e.errorForeground=t("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},S.localize(2,null)),e.descriptionForeground=t("descriptionForeground",{light:"#717171",dark:m(e.foreground,.7),hcDark:m(e.foreground,.7),hcLight:m(e.foreground,.7)},S.localize(3,null)),e.iconForeground=t("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},S.localize(4,null)),e.focusBorder=t("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},S.localize(5,null)),e.contrastBorder=t("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},S.localize(6,null)),e.activeContrastBorder=t("contrastActiveBorder",{light:null,dark:null,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(7,null)),e.selectionBackground=t("selection.background",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(8,null)),e.textSeparatorForeground=t("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:k.Color.black,hcLight:"#292929"},S.localize(9,null)),e.textLinkForeground=t("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#3794FF",hcLight:"#0F4A85"},S.localize(10,null)),e.textLinkActiveForeground=t("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#3794FF",hcLight:"#0F4A85"},S.localize(11,null)),e.textPreformatForeground=t("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#D7BA7D",hcLight:"#292929"},S.localize(12,null)),e.textBlockQuoteBackground=t("textBlockQuote.background",{light:"#7f7f7f1a",dark:"#7f7f7f1a",hcDark:null,hcLight:"#F2F2F2"},S.localize(13,null)),e.textBlockQuoteBorder=t("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:k.Color.white,hcLight:"#292929"},S.localize(14,null)),e.textCodeBlockBackground=t("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:k.Color.black,hcLight:"#F2F2F2"},S.localize(15,null)),e.widgetShadow=t("widget.shadow",{dark:m(k.Color.black,.36),light:m(k.Color.black,.16),hcDark:null,hcLight:null},S.localize(16,null)),e.widgetBorder=t("widget.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(17,null)),e.inputBackground=t("input.background",{dark:"#3C3C3C",light:k.Color.white,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(18,null)),e.inputForeground=t("input.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(19,null)),e.inputBorder=t("input.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(20,null)),e.inputActiveOptionBorder=t("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(21,null)),e.inputActiveOptionHoverBackground=t("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},S.localize(22,null)),e.inputActiveOptionBackground=t("inputOption.activeBackground",{dark:m(e.focusBorder,.4),light:m(e.focusBorder,.2),hcDark:k.Color.transparent,hcLight:k.Color.transparent},S.localize(23,null)),e.inputActiveOptionForeground=t("inputOption.activeForeground",{dark:k.Color.white,light:k.Color.black,hcDark:e.foreground,hcLight:e.foreground},S.localize(24,null)),e.inputPlaceholderForeground=t("input.placeholderForeground",{light:m(e.foreground,.5),dark:m(e.foreground,.5),hcDark:m(e.foreground,.7),hcLight:m(e.foreground,.7)},S.localize(25,null)),e.inputValidationInfoBackground=t("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(26,null)),e.inputValidationInfoForeground=t("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(27,null)),e.inputValidationInfoBorder=t("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(28,null)),e.inputValidationWarningBackground=t("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(29,null)),e.inputValidationWarningForeground=t("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(30,null)),e.inputValidationWarningBorder=t("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(31,null)),e.inputValidationErrorBackground=t("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(32,null)),e.inputValidationErrorForeground=t("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(33,null)),e.inputValidationErrorBorder=t("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(34,null)),e.selectBackground=t("dropdown.background",{dark:"#3C3C3C",light:k.Color.white,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(35,null)),e.selectListBackground=t("dropdown.listBackground",{dark:null,light:null,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(36,null)),e.selectForeground=t("dropdown.foreground",{dark:"#F0F0F0",light:e.foreground,hcDark:k.Color.white,hcLight:e.foreground},S.localize(37,null)),e.selectBorder=t("dropdown.border",{dark:e.selectBackground,light:"#CECECE",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(38,null)),e.buttonForeground=t("button.foreground",{dark:k.Color.white,light:k.Color.white,hcDark:k.Color.white,hcLight:k.Color.white},S.localize(39,null)),e.buttonSeparator=t("button.separator",{dark:m(e.buttonForeground,.4),light:m(e.buttonForeground,.4),hcDark:m(e.buttonForeground,.4),hcLight:m(e.buttonForeground,.4)},S.localize(40,null)),e.buttonBackground=t("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},S.localize(41,null)),e.buttonHoverBackground=t("button.hoverBackground",{dark:p(e.buttonBackground,.2),light:l(e.buttonBackground,.2),hcDark:e.buttonBackground,hcLight:e.buttonBackground},S.localize(42,null)),e.buttonBorder=t("button.border",{dark:e.contrastBorder,light:e.contrastBorder,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(43,null)),e.buttonSecondaryForeground=t("button.secondaryForeground",{dark:k.Color.white,light:k.Color.white,hcDark:k.Color.white,hcLight:e.foreground},S.localize(44,null)),e.buttonSecondaryBackground=t("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:k.Color.white},S.localize(45,null)),e.buttonSecondaryHoverBackground=t("button.secondaryHoverBackground",{dark:p(e.buttonSecondaryBackground,.2),light:l(e.buttonSecondaryBackground,.2),hcDark:null,hcLight:null},S.localize(46,null)),e.badgeBackground=t("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:k.Color.black,hcLight:"#0F4A85"},S.localize(47,null)),e.badgeForeground=t("badge.foreground",{dark:k.Color.white,light:"#333",hcDark:k.Color.white,hcLight:k.Color.white},S.localize(48,null)),e.scrollbarShadow=t("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},S.localize(49,null)),e.scrollbarSliderBackground=t("scrollbarSlider.background",{dark:k.Color.fromHex("#797979").transparent(.4),light:k.Color.fromHex("#646464").transparent(.4),hcDark:m(e.contrastBorder,.6),hcLight:m(e.contrastBorder,.4)},S.localize(50,null)),e.scrollbarSliderHoverBackground=t("scrollbarSlider.hoverBackground",{dark:k.Color.fromHex("#646464").transparent(.7),light:k.Color.fromHex("#646464").transparent(.7),hcDark:m(e.contrastBorder,.8),hcLight:m(e.contrastBorder,.8)},S.localize(51,null)),e.scrollbarSliderActiveBackground=t("scrollbarSlider.activeBackground",{dark:k.Color.fromHex("#BFBFBF").transparent(.4),light:k.Color.fromHex("#000000").transparent(.6),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(52,null)),e.progressBarBackground=t("progressBar.background",{dark:k.Color.fromHex("#0E70C0"),light:k.Color.fromHex("#0E70C0"),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(53,null)),e.editorErrorBackground=t("editorError.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(54,null),!0),e.editorErrorForeground=t("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},S.localize(55,null)),e.editorErrorBorder=t("editorError.border",{dark:null,light:null,hcDark:k.Color.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},S.localize(56,null)),e.editorWarningBackground=t("editorWarning.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(57,null),!0),e.editorWarningForeground=t("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},S.localize(58,null)),e.editorWarningBorder=t("editorWarning.border",{dark:null,light:null,hcDark:k.Color.fromHex("#FFCC00").transparent(.8),hcLight:k.Color.fromHex("#FFCC00").transparent(.8)},S.localize(59,null)),e.editorInfoBackground=t("editorInfo.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(60,null),!0),e.editorInfoForeground=t("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},S.localize(61,null)),e.editorInfoBorder=t("editorInfo.border",{dark:null,light:null,hcDark:k.Color.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},S.localize(62,null)),e.editorHintForeground=t("editorHint.foreground",{dark:k.Color.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},S.localize(63,null)),e.editorHintBorder=t("editorHint.border",{dark:null,light:null,hcDark:k.Color.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},S.localize(64,null)),e.sashHoverBorder=t("sash.hoverBorder",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(65,null)),e.editorBackground=t("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(66,null)),e.editorForeground=t("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:k.Color.white,hcLight:e.foreground},S.localize(67,null)),e.editorStickyScrollBackground=t("editorStickyScroll.background",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(68,null)),e.editorStickyScrollHoverBackground=t("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:k.Color.fromHex("#0F4A85").transparent(.1)},S.localize(69,null)),e.editorWidgetBackground=t("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:k.Color.white},S.localize(70,null)),e.editorWidgetForeground=t("editorWidget.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(71,null)),e.editorWidgetBorder=t("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(72,null)),e.editorWidgetResizeBorder=t("editorWidget.resizeBorder",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(73,null)),e.quickInputBackground=t("quickInput.background",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(74,null)),e.quickInputForeground=t("quickInput.foreground",{dark:e.editorWidgetForeground,light:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(75,null)),e.quickInputTitleBackground=t("quickInputTitle.background",{dark:new k.Color(new k.RGBA(255,255,255,.105)),light:new k.Color(new k.RGBA(0,0,0,.06)),hcDark:"#000000",hcLight:k.Color.white},S.localize(76,null)),e.pickerGroupForeground=t("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:k.Color.white,hcLight:"#0F4A85"},S.localize(77,null)),e.pickerGroupBorder=t("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:k.Color.white,hcLight:"#0F4A85"},S.localize(78,null)),e.keybindingLabelBackground=t("keybindingLabel.background",{dark:new k.Color(new k.RGBA(128,128,128,.17)),light:new k.Color(new k.RGBA(221,221,221,.4)),hcDark:k.Color.transparent,hcLight:k.Color.transparent},S.localize(79,null)),e.keybindingLabelForeground=t("keybindingLabel.foreground",{dark:k.Color.fromHex("#CCCCCC"),light:k.Color.fromHex("#555555"),hcDark:k.Color.white,hcLight:e.foreground},S.localize(80,null)),e.keybindingLabelBorder=t("keybindingLabel.border",{dark:new k.Color(new k.RGBA(51,51,51,.6)),light:new k.Color(new k.RGBA(204,204,204,.4)),hcDark:new k.Color(new k.RGBA(111,195,223)),hcLight:e.contrastBorder},S.localize(81,null)),e.keybindingLabelBottomBorder=t("keybindingLabel.bottomBorder",{dark:new k.Color(new k.RGBA(68,68,68,.6)),light:new k.Color(new k.RGBA(187,187,187,.4)),hcDark:new k.Color(new k.RGBA(111,195,223)),hcLight:e.foreground},S.localize(82,null)),e.editorSelectionBackground=t("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},S.localize(83,null)),e.editorSelectionForeground=t("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:k.Color.white},S.localize(84,null)),e.editorInactiveSelection=t("editor.inactiveSelectionBackground",{light:m(e.editorSelectionBackground,.5),dark:m(e.editorSelectionBackground,.5),hcDark:m(e.editorSelectionBackground,.7),hcLight:m(e.editorSelectionBackground,.5)},S.localize(85,null),!0),e.editorSelectionHighlight=t("editor.selectionHighlightBackground",{light:w(e.editorSelectionBackground,e.editorBackground,.3,.6),dark:w(e.editorSelectionBackground,e.editorBackground,.3,.6),hcDark:null,hcLight:null},S.localize(86,null),!0),e.editorSelectionHighlightBorder=t("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(87,null)),e.editorFindMatch=t("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},S.localize(88,null)),e.editorFindMatchHighlight=t("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},S.localize(89,null),!0),e.editorFindRangeHighlight=t("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},S.localize(90,null),!0),e.editorFindMatchBorder=t("editor.findMatchBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(91,null)),e.editorFindMatchHighlightBorder=t("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(92,null)),e.editorFindRangeHighlightBorder=t("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:m(e.activeContrastBorder,.4),hcLight:m(e.activeContrastBorder,.4)},S.localize(93,null),!0),e.searchEditorFindMatch=t("searchEditor.findMatchBackground",{light:m(e.editorFindMatchHighlight,.66),dark:m(e.editorFindMatchHighlight,.66),hcDark:e.editorFindMatchHighlight,hcLight:e.editorFindMatchHighlight},S.localize(94,null)),e.searchEditorFindMatchBorder=t("searchEditor.findMatchBorder",{light:m(e.editorFindMatchHighlightBorder,.66),dark:m(e.editorFindMatchHighlightBorder,.66),hcDark:e.editorFindMatchHighlightBorder,hcLight:e.editorFindMatchHighlightBorder},S.localize(95,null)),e.searchResultsInfoForeground=t("search.resultsInfoForeground",{light:e.foreground,dark:m(e.foreground,.65),hcDark:e.foreground,hcLight:e.foreground},S.localize(96,null)),e.editorHoverHighlight=t("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},S.localize(97,null),!0),e.editorHoverBackground=t("editorHoverWidget.background",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(98,null)),e.editorHoverForeground=t("editorHoverWidget.foreground",{light:e.editorWidgetForeground,dark:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(99,null)),e.editorHoverBorder=t("editorHoverWidget.border",{light:e.editorWidgetBorder,dark:e.editorWidgetBorder,hcDark:e.editorWidgetBorder,hcLight:e.editorWidgetBorder},S.localize(100,null)),e.editorHoverStatusBarBackground=t("editorHoverWidget.statusBarBackground",{dark:p(e.editorHoverBackground,.2),light:l(e.editorHoverBackground,.05),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(101,null)),e.editorActiveLinkForeground=t("editorLink.activeForeground",{dark:"#4E94CE",light:k.Color.blue,hcDark:k.Color.cyan,hcLight:"#292929"},S.localize(102,null)),e.editorInlayHintForeground=t("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:k.Color.white,hcLight:k.Color.black},S.localize(103,null)),e.editorInlayHintBackground=t("editorInlayHint.background",{dark:m(e.badgeBackground,.1),light:m(e.badgeBackground,.1),hcDark:m(k.Color.white,.1),hcLight:m(e.badgeBackground,.1)},S.localize(104,null)),e.editorInlayHintTypeForeground=t("editorInlayHint.typeForeground",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(105,null)),e.editorInlayHintTypeBackground=t("editorInlayHint.typeBackground",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(106,null)),e.editorInlayHintParameterForeground=t("editorInlayHint.parameterForeground",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(107,null)),e.editorInlayHintParameterBackground=t("editorInlayHint.parameterBackground",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(108,null)),e.editorLightBulbForeground=t("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},S.localize(109,null)),e.editorLightBulbAutoFixForeground=t("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},S.localize(110,null)),e.defaultInsertColor=new k.Color(new k.RGBA(155,185,85,.2)),e.defaultRemoveColor=new k.Color(new k.RGBA(255,0,0,.2)),e.diffInserted=t("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},S.localize(111,null),!0),e.diffRemoved=t("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},S.localize(112,null),!0),e.diffInsertedLine=t("diffEditor.insertedLineBackground",{dark:e.defaultInsertColor,light:e.defaultInsertColor,hcDark:null,hcLight:null},S.localize(113,null),!0),e.diffRemovedLine=t("diffEditor.removedLineBackground",{dark:e.defaultRemoveColor,light:e.defaultRemoveColor,hcDark:null,hcLight:null},S.localize(114,null),!0),e.diffInsertedLineGutter=t("diffEditorGutter.insertedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(115,null)),e.diffRemovedLineGutter=t("diffEditorGutter.removedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(116,null)),e.diffOverviewRulerInserted=t("diffEditorOverview.insertedForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(117,null)),e.diffOverviewRulerRemoved=t("diffEditorOverview.removedForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(118,null)),e.diffInsertedOutline=t("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},S.localize(119,null)),e.diffRemovedOutline=t("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},S.localize(120,null)),e.diffBorder=t("diffEditor.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(121,null)),e.diffDiagonalFill=t("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},S.localize(122,null)),e.diffUnchangedRegionBackground=t("diffEditor.unchangedRegionBackground",{dark:"#3e3e3e",light:"#e4e4e4",hcDark:null,hcLight:null},S.localize(123,null)),e.diffUnchangedRegionForeground=t("diffEditor.unchangedRegionForeground",{dark:"#a3a2a2",light:"#4d4c4c",hcDark:null,hcLight:null},S.localize(124,null)),e.diffUnchangedTextBackground=t("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},S.localize(125,null)),e.listFocusBackground=t("list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(126,null)),e.listFocusForeground=t("list.focusForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(127,null)),e.listFocusOutline=t("list.focusOutline",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(128,null)),e.listFocusAndSelectionOutline=t("list.focusAndSelectionOutline",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(129,null)),e.listActiveSelectionBackground=t("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:k.Color.fromHex("#0F4A85").transparent(.1)},S.localize(130,null)),e.listActiveSelectionForeground=t("list.activeSelectionForeground",{dark:k.Color.white,light:k.Color.white,hcDark:null,hcLight:null},S.localize(131,null)),e.listActiveSelectionIconForeground=t("list.activeSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(132,null)),e.listInactiveSelectionBackground=t("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:k.Color.fromHex("#0F4A85").transparent(.1)},S.localize(133,null)),e.listInactiveSelectionForeground=t("list.inactiveSelectionForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(134,null)),e.listInactiveSelectionIconForeground=t("list.inactiveSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(135,null)),e.listInactiveFocusBackground=t("list.inactiveFocusBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(136,null)),e.listInactiveFocusOutline=t("list.inactiveFocusOutline",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(137,null)),e.listHoverBackground=t("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:k.Color.white.transparent(.1),hcLight:k.Color.fromHex("#0F4A85").transparent(.1)},S.localize(138,null)),e.listHoverForeground=t("list.hoverForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(139,null)),e.listDropBackground=t("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},S.localize(140,null)),e.listHighlightForeground=t("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(141,null)),e.listFocusHighlightForeground=t("list.focusHighlightForeground",{dark:e.listHighlightForeground,light:b(e.listActiveSelectionBackground,e.listHighlightForeground,"#BBE7FF"),hcDark:e.listHighlightForeground,hcLight:e.listHighlightForeground},S.localize(142,null)),e.listInvalidItemForeground=t("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},S.localize(143,null)),e.listErrorForeground=t("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},S.localize(144,null)),e.listWarningForeground=t("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},S.localize(145,null)),e.listFilterWidgetBackground=t("listFilterWidget.background",{light:l(e.editorWidgetBackground,0),dark:p(e.editorWidgetBackground,0),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(146,null)),e.listFilterWidgetOutline=t("listFilterWidget.outline",{dark:k.Color.transparent,light:k.Color.transparent,hcDark:"#f38518",hcLight:"#007ACC"},S.localize(147,null)),e.listFilterWidgetNoMatchesOutline=t("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(148,null)),e.listFilterWidgetShadow=t("listFilterWidget.shadow",{dark:e.widgetShadow,light:e.widgetShadow,hcDark:e.widgetShadow,hcLight:e.widgetShadow},S.localize(149,null)),e.listFilterMatchHighlight=t("list.filterMatchBackground",{dark:e.editorFindMatchHighlight,light:e.editorFindMatchHighlight,hcDark:null,hcLight:null},S.localize(150,null)),e.listFilterMatchHighlightBorder=t("list.filterMatchBorder",{dark:e.editorFindMatchHighlightBorder,light:e.editorFindMatchHighlightBorder,hcDark:e.contrastBorder,hcLight:e.activeContrastBorder},S.localize(151,null)),e.treeIndentGuidesStroke=t("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},S.localize(152,null)),e.treeInactiveIndentGuidesStroke=t("tree.inactiveIndentGuidesStroke",{dark:m(e.treeIndentGuidesStroke,.4),light:m(e.treeIndentGuidesStroke,.4),hcDark:m(e.treeIndentGuidesStroke,.4),hcLight:m(e.treeIndentGuidesStroke,.4)},S.localize(153,null)),e.tableColumnsBorder=t("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},S.localize(154,null)),e.tableOddRowsBackgroundColor=t("tree.tableOddRowsBackground",{dark:m(e.foreground,.04),light:m(e.foreground,.04),hcDark:null,hcLight:null},S.localize(155,null)),e.listDeemphasizedForeground=t("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},S.localize(156,null)),e.checkboxBackground=t("checkbox.background",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(157,null)),e.checkboxSelectBackground=t("checkbox.selectBackground",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(158,null)),e.checkboxForeground=t("checkbox.foreground",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(159,null)),e.checkboxBorder=t("checkbox.border",{dark:e.selectBorder,light:e.selectBorder,hcDark:e.selectBorder,hcLight:e.selectBorder},S.localize(160,null)),e.checkboxSelectBorder=t("checkbox.selectBorder",{dark:e.iconForeground,light:e.iconForeground,hcDark:e.iconForeground,hcLight:e.iconForeground},S.localize(161,null)),e._deprecatedQuickInputListFocusBackground=t("quickInput.list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},"",void 0,S.localize(162,null)),e.quickInputListFocusForeground=t("quickInputList.focusForeground",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(163,null)),e.quickInputListFocusIconForeground=t("quickInputList.focusIconForeground",{dark:e.listActiveSelectionIconForeground,light:e.listActiveSelectionIconForeground,hcDark:e.listActiveSelectionIconForeground,hcLight:e.listActiveSelectionIconForeground},S.localize(164,null)),e.quickInputListFocusBackground=t("quickInputList.focusBackground",{dark:v(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),light:v(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),hcDark:null,hcLight:null},S.localize(165,null)),e.menuBorder=t("menu.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(166,null)),e.menuForeground=t("menu.foreground",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(167,null)),e.menuBackground=t("menu.background",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(168,null)),e.menuSelectionForeground=t("menu.selectionForeground",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(169,null)),e.menuSelectionBackground=t("menu.selectionBackground",{dark:e.listActiveSelectionBackground,light:e.listActiveSelectionBackground,hcDark:e.listActiveSelectionBackground,hcLight:e.listActiveSelectionBackground},S.localize(170,null)),e.menuSelectionBorder=t("menu.selectionBorder",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(171,null)),e.menuSeparatorBackground=t("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(172,null)),e.toolbarHoverBackground=t("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},S.localize(173,null)),e.toolbarHoverOutline=t("toolbar.hoverOutline",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(174,null)),e.toolbarActiveBackground=t("toolbar.activeBackground",{dark:p(e.toolbarHoverBackground,.1),light:l(e.toolbarHoverBackground,.1),hcDark:null,hcLight:null},S.localize(175,null)),e.snippetTabstopHighlightBackground=t("editor.snippetTabstopHighlightBackground",{dark:new k.Color(new k.RGBA(124,124,124,.3)),light:new k.Color(new k.RGBA(10,50,100,.2)),hcDark:new k.Color(new k.RGBA(124,124,124,.3)),hcLight:new k.Color(new k.RGBA(10,50,100,.2))},S.localize(176,null)),e.snippetTabstopHighlightBorder=t("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(177,null)),e.snippetFinalTabstopHighlightBackground=t("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(178,null)),e.snippetFinalTabstopHighlightBorder=t("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new k.Color(new k.RGBA(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},S.localize(179,null)),e.breadcrumbsForeground=t("breadcrumb.foreground",{light:m(e.foreground,.8),dark:m(e.foreground,.8),hcDark:m(e.foreground,.8),hcLight:m(e.foreground,.8)},S.localize(180,null)),e.breadcrumbsBackground=t("breadcrumb.background",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(181,null)),e.breadcrumbsFocusForeground=t("breadcrumb.focusForeground",{light:l(e.foreground,.2),dark:p(e.foreground,.1),hcDark:p(e.foreground,.1),hcLight:p(e.foreground,.1)},S.localize(182,null)),e.breadcrumbsActiveSelectionForeground=t("breadcrumb.activeSelectionForeground",{light:l(e.foreground,.2),dark:p(e.foreground,.1),hcDark:p(e.foreground,.1),hcLight:p(e.foreground,.1)},S.localize(183,null)),e.breadcrumbsPickerBackground=t("breadcrumbPicker.background",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(184,null));const a=.5,u=k.Color.fromHex("#40C8AE").transparent(a),h=k.Color.fromHex("#40A6FF").transparent(a),r=k.Color.fromHex("#606060").transparent(.4),c=.4,o=1;e.mergeCurrentHeaderBackground=t("merge.currentHeaderBackground",{dark:u,light:u,hcDark:null,hcLight:null},S.localize(185,null),!0),e.mergeCurrentContentBackground=t("merge.currentContentBackground",{dark:m(e.mergeCurrentHeaderBackground,c),light:m(e.mergeCurrentHeaderBackground,c),hcDark:m(e.mergeCurrentHeaderBackground,c),hcLight:m(e.mergeCurrentHeaderBackground,c)},S.localize(186,null),!0),e.mergeIncomingHeaderBackground=t("merge.incomingHeaderBackground",{dark:h,light:h,hcDark:null,hcLight:null},S.localize(187,null),!0),e.mergeIncomingContentBackground=t("merge.incomingContentBackground",{dark:m(e.mergeIncomingHeaderBackground,c),light:m(e.mergeIncomingHeaderBackground,c),hcDark:m(e.mergeIncomingHeaderBackground,c),hcLight:m(e.mergeIncomingHeaderBackground,c)},S.localize(188,null),!0),e.mergeCommonHeaderBackground=t("merge.commonHeaderBackground",{dark:r,light:r,hcDark:null,hcLight:null},S.localize(189,null),!0),e.mergeCommonContentBackground=t("merge.commonContentBackground",{dark:m(e.mergeCommonHeaderBackground,c),light:m(e.mergeCommonHeaderBackground,c),hcDark:m(e.mergeCommonHeaderBackground,c),hcLight:m(e.mergeCommonHeaderBackground,c)},S.localize(190,null),!0),e.mergeBorder=t("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},S.localize(191,null)),e.overviewRulerCurrentContentForeground=t("editorOverviewRuler.currentContentForeground",{dark:m(e.mergeCurrentHeaderBackground,o),light:m(e.mergeCurrentHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(192,null)),e.overviewRulerIncomingContentForeground=t("editorOverviewRuler.incomingContentForeground",{dark:m(e.mergeIncomingHeaderBackground,o),light:m(e.mergeIncomingHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(193,null)),e.overviewRulerCommonContentForeground=t("editorOverviewRuler.commonContentForeground",{dark:m(e.mergeCommonHeaderBackground,o),light:m(e.mergeCommonHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(194,null)),e.overviewRulerFindMatchForeground=t("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:""},S.localize(195,null),!0),e.overviewRulerSelectionHighlightForeground=t("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},S.localize(196,null),!0),e.minimapFindMatch=t("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},S.localize(197,null),!0),e.minimapSelectionOccurrenceHighlight=t("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},S.localize(198,null),!0),e.minimapSelection=t("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},S.localize(199,null),!0),e.minimapError=t("minimap.errorHighlight",{dark:new k.Color(new k.RGBA(255,18,18,.7)),light:new k.Color(new k.RGBA(255,18,18,.7)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:"#B5200D"},S.localize(200,null)),e.minimapWarning=t("minimap.warningHighlight",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningBorder,hcLight:e.editorWarningBorder},S.localize(201,null)),e.minimapBackground=t("minimap.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(202,null)),e.minimapForegroundOpacity=t("minimap.foregroundOpacity",{dark:k.Color.fromHex("#000f"),light:k.Color.fromHex("#000f"),hcDark:k.Color.fromHex("#000f"),hcLight:k.Color.fromHex("#000f")},S.localize(203,null)),e.minimapSliderBackground=t("minimapSlider.background",{light:m(e.scrollbarSliderBackground,.5),dark:m(e.scrollbarSliderBackground,.5),hcDark:m(e.scrollbarSliderBackground,.5),hcLight:m(e.scrollbarSliderBackground,.5)},S.localize(204,null)),e.minimapSliderHoverBackground=t("minimapSlider.hoverBackground",{light:m(e.scrollbarSliderHoverBackground,.5),dark:m(e.scrollbarSliderHoverBackground,.5),hcDark:m(e.scrollbarSliderHoverBackground,.5),hcLight:m(e.scrollbarSliderHoverBackground,.5)},S.localize(205,null)),e.minimapSliderActiveBackground=t("minimapSlider.activeBackground",{light:m(e.scrollbarSliderActiveBackground,.5),dark:m(e.scrollbarSliderActiveBackground,.5),hcDark:m(e.scrollbarSliderActiveBackground,.5),hcLight:m(e.scrollbarSliderActiveBackground,.5)},S.localize(206,null)),e.problemsErrorIconForeground=t("problemsErrorIcon.foreground",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(207,null)),e.problemsWarningIconForeground=t("problemsWarningIcon.foreground",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(208,null)),e.problemsInfoIconForeground=t("problemsInfoIcon.foreground",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(209,null)),e.chartsForeground=t("charts.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(210,null)),e.chartsLines=t("charts.lines",{dark:m(e.foreground,.5),light:m(e.foreground,.5),hcDark:m(e.foreground,.5),hcLight:m(e.foreground,.5)},S.localize(211,null)),e.chartsRed=t("charts.red",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(212,null)),e.chartsBlue=t("charts.blue",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(213,null)),e.chartsYellow=t("charts.yellow",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(214,null)),e.chartsOrange=t("charts.orange",{dark:e.minimapFindMatch,light:e.minimapFindMatch,hcDark:e.minimapFindMatch,hcLight:e.minimapFindMatch},S.localize(215,null)),e.chartsGreen=t("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},S.localize(216,null)),e.chartsPurple=t("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},S.localize(217,null));function d(P,x){var T,A,N,F;switch(P.op){case 0:return(T=E(P.value,x))===null||T===void 0?void 0:T.darken(P.factor);case 1:return(A=E(P.value,x))===null||A===void 0?void 0:A.lighten(P.factor);case 2:return(N=E(P.value,x))===null||N===void 0?void 0:N.transparent(P.factor);case 3:{const O=E(P.background,x);return O?(F=E(P.value,x))===null||F===void 0?void 0:F.makeOpaque(O):E(P.value,x)}case 4:for(const O of P.values){const W=E(O,x);if(W)return W}return;case 6:return E(x.defines(P.if)?P.then:P.else,x);case 5:{const O=E(P.value,x);if(!O)return;const W=E(P.background,x);return W?O.isDarkerThan(W)?k.Color.getLighterColor(O,W,P.factor).transparent(P.transparency):k.Color.getDarkerColor(O,W,P.factor).transparent(P.transparency):O.transparent(P.factor*P.transparency)}default:throw(0,D.assertNever)(P)}}e.executeTransform=d;function l(P,x){return{op:0,value:P,factor:x}}e.darken=l;function p(P,x){return{op:1,value:P,factor:x}}e.lighten=p;function m(P,x){return{op:2,value:P,factor:x}}e.transparent=m;function v(...P){return{op:4,values:P}}e.oneOf=v;function b(P,x,T){return{op:6,if:P,then:x,else:T}}e.ifDefinedThenElse=b;function w(P,x,T,A){return{op:5,value:P,background:x,factor:T,transparency:A}}function E(P,x){if(P!==null){if(typeof P=="string")return P[0]==="#"?k.Color.fromHex(P):x.getColor(P);if(P instanceof k.Color)return P;if(typeof P=="object")return d(P,x)}}e.resolveColorValue=E,e.workbenchColorsSchemaId="vscode://schemas/workbench-colors";const I=_.Registry.as(f.Extensions.JSONContribution);I.registerSchema(e.workbenchColorsSchemaId,n.getColorSchema());const M=new L.RunOnceScheduler(()=>I.notifySchemaChanged(e.workbenchColorsSchemaId),200);n.onDidChangeSchema(()=>{M.isScheduled()||M.schedule()})}),define(ne[159],se([1,0,7,152,60,13,2,31]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicCssRules=e.GlobalEditorPointerMoveMonitor=e.EditorPointerEventFactory=e.EditorMouseEventFactory=e.EditorMouseEvent=e.createCoordinatesRelativeToEditor=e.createEditorPagePosition=e.CoordinatesRelativeToEditor=e.EditorPagePosition=e.ClientCoordinates=e.PageCoordinates=void 0;class _{constructor(l,p){this.x=l,this.y=p,this._pageCoordinatesBrand=void 0}toClientCoordinates(){return new g(this.x-window.scrollX,this.y-window.scrollY)}}e.PageCoordinates=_;class g{constructor(l,p){this.clientX=l,this.clientY=p,this._clientCoordinatesBrand=void 0}toPageCoordinates(){return new _(this.clientX+window.scrollX,this.clientY+window.scrollY)}}e.ClientCoordinates=g;class C{constructor(l,p,m,v){this.x=l,this.y=p,this.width=m,this.height=v,this._editorPagePositionBrand=void 0}}e.EditorPagePosition=C;class s{constructor(l,p){this.x=l,this.y=p,this._positionRelativeToEditorBrand=void 0}}e.CoordinatesRelativeToEditor=s;function i(d){const l=L.getDomNodePagePosition(d);return new C(l.left,l.top,l.width,l.height)}e.createEditorPagePosition=i;function n(d,l,p){const m=l.width/d.offsetWidth,v=l.height/d.offsetHeight,b=(p.x-l.x)/m,w=(p.y-l.y)/v;return new s(b,w)}e.createCoordinatesRelativeToEditor=n;class t extends y.StandardMouseEvent{constructor(l,p,m){super(l),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=p,this.pos=new _(this.posx,this.posy),this.editorPos=i(m),this.relativePos=n(m,this.editorPos,this.pos)}}e.EditorMouseEvent=t;class a{constructor(l){this._editorViewDomNode=l}_create(l){return new t(l,!1,this._editorViewDomNode)}onContextMenu(l,p){return L.addDisposableListener(l,"contextmenu",m=>{p(this._create(m))})}onMouseUp(l,p){return L.addDisposableListener(l,"mouseup",m=>{p(this._create(m))})}onMouseDown(l,p){return L.addDisposableListener(l,L.EventType.MOUSE_DOWN,m=>{p(this._create(m))})}onPointerDown(l,p){return L.addDisposableListener(l,L.EventType.POINTER_DOWN,m=>{p(this._create(m),m.pointerId)})}onMouseLeave(l,p){return L.addDisposableListener(l,L.EventType.MOUSE_LEAVE,m=>{p(this._create(m))})}onMouseMove(l,p){return L.addDisposableListener(l,"mousemove",m=>p(this._create(m)))}}e.EditorMouseEventFactory=a;class u{constructor(l){this._editorViewDomNode=l}_create(l){return new t(l,!1,this._editorViewDomNode)}onPointerUp(l,p){return L.addDisposableListener(l,"pointerup",m=>{p(this._create(m))})}onPointerDown(l,p){return L.addDisposableListener(l,L.EventType.POINTER_DOWN,m=>{p(this._create(m),m.pointerId)})}onPointerLeave(l,p){return L.addDisposableListener(l,L.EventType.POINTER_LEAVE,m=>{p(this._create(m))})}onPointerMove(l,p){return L.addDisposableListener(l,"pointermove",m=>p(this._create(m)))}}e.EditorPointerEventFactory=u;class h extends S.Disposable{constructor(l){super(),this._editorViewDomNode=l,this._globalPointerMoveMonitor=this._register(new k.GlobalPointerMoveMonitor),this._keydownListener=null}startMonitoring(l,p,m,v,b){this._keydownListener=L.addStandardDisposableListener(document,"keydown",w=>{w.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,w.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(l,p,m,w=>{v(new t(w,!0,this._editorViewDomNode))},w=>{this._keydownListener.dispose(),b(w)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}e.GlobalEditorPointerMoveMonitor=h;class r{constructor(l){this._editor=l,this._instanceId=++r._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new D.RunOnceScheduler(()=>this.garbageCollect(),1e3)}createClassNameRef(l){const p=this.getOrCreateRule(l);return p.increaseRefCount(),{className:p.className,dispose:()=>{p.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(l){const p=this.computeUniqueKey(l);let m=this._rules.get(p);if(!m){const v=this._counter++;m=new c(p,`dyn-rule-${this._instanceId}-${v}`,L.isInShadowDOM(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,l),this._rules.set(p,m)}return m}computeUniqueKey(l){return JSON.stringify(l)}garbageCollect(){for(const l of this._rules.values())l.hasReferences()||(this._rules.delete(l.key),l.dispose())}}e.DynamicCssRules=r,r._idPool=0;class c{constructor(l,p,m,v){this.key=l,this.className=p,this.properties=v,this._referenceCount=0,this._styleElement=L.createStyleSheet(m),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(l,p){let m=`.${l} {`;for(const v in p){const b=p[v];let w;typeof b=="object"?w=(0,f.asCssVariable)(b.id):w=b;const E=o(v);m+=` - ${E}: ${w};`}return m+=` -}`,m}dispose(){this._styleElement.remove()}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function o(d){return d.replace(/(^[A-Z])/,([l])=>l.toLowerCase()).replace(/([A-Z])/g,([l])=>`-${l.toLowerCase()}`)}}),define(ne[821],se([1,0,7,35,152,2,17,11,229,53,36,5,274,328,67,31,24,61,481,48,99,425]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Minimap=void 0;const d=140,l=2;class p{constructor(T,A,N){const F=T.options,O=F.get(140),W=F.get(142),U=W.minimap,j=F.get(49),R=F.get(71);this.renderMinimap=U.renderMinimap,this.size=R.size,this.minimapHeightIsEditorHeight=U.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=F.get(103),this.paddingTop=F.get(82).top,this.paddingBottom=F.get(82).bottom,this.showSlider=R.showSlider,this.autohide=R.autohide,this.pixelRatio=O,this.typicalHalfwidthCharacterWidth=j.typicalHalfwidthCharacterWidth,this.lineHeight=F.get(65),this.minimapLeft=U.minimapLeft,this.minimapWidth=U.minimapWidth,this.minimapHeight=W.height,this.canvasInnerWidth=U.minimapCanvasInnerWidth,this.canvasInnerHeight=U.minimapCanvasInnerHeight,this.canvasOuterWidth=U.minimapCanvasOuterWidth,this.canvasOuterHeight=U.minimapCanvasOuterHeight,this.isSampling=U.minimapIsSampling,this.editorHeight=W.height,this.fontScale=U.minimapScale,this.minimapLineHeight=U.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=(0,o.once)(()=>r.MinimapCharRendererFactory.create(this.fontScale,j.fontFamily)),this.defaultBackgroundColor=N.getColor(2),this.backgroundColor=p._getMinimapBackground(A,this.defaultBackgroundColor),this.foregroundAlpha=p._getMinimapForegroundOpacity(A)}static _getMinimapBackground(T,A){const N=T.getColor(a.minimapBackground);return N?new i.RGBA8(N.rgba.r,N.rgba.g,N.rgba.b,Math.round(255*N.rgba.a)):A}static _getMinimapForegroundOpacity(T){const A=T.getColor(a.minimapForegroundOpacity);return A?i.RGBA8._clamp(Math.round(255*A.rgba.a)):255}equals(T){return this.renderMinimap===T.renderMinimap&&this.size===T.size&&this.minimapHeightIsEditorHeight===T.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===T.scrollBeyondLastLine&&this.paddingTop===T.paddingTop&&this.paddingBottom===T.paddingBottom&&this.showSlider===T.showSlider&&this.autohide===T.autohide&&this.pixelRatio===T.pixelRatio&&this.typicalHalfwidthCharacterWidth===T.typicalHalfwidthCharacterWidth&&this.lineHeight===T.lineHeight&&this.minimapLeft===T.minimapLeft&&this.minimapWidth===T.minimapWidth&&this.minimapHeight===T.minimapHeight&&this.canvasInnerWidth===T.canvasInnerWidth&&this.canvasInnerHeight===T.canvasInnerHeight&&this.canvasOuterWidth===T.canvasOuterWidth&&this.canvasOuterHeight===T.canvasOuterHeight&&this.isSampling===T.isSampling&&this.editorHeight===T.editorHeight&&this.fontScale===T.fontScale&&this.minimapLineHeight===T.minimapLineHeight&&this.minimapCharWidth===T.minimapCharWidth&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(T.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(T.backgroundColor)&&this.foregroundAlpha===T.foregroundAlpha}}class m{constructor(T,A,N,F,O,W,U,j,R){this.scrollTop=T,this.scrollHeight=A,this.sliderNeeded=N,this._computedSliderRatio=F,this.sliderTop=O,this.sliderHeight=W,this.topPaddingLineCount=U,this.startLineNumber=j,this.endLineNumber=R}getDesiredScrollTopFromDelta(T){return Math.round(this.scrollTop+T/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(T){return Math.round((T-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(T){const A=Math.max(this.startLineNumber,T.startLineNumber),N=Math.min(this.endLineNumber,T.endLineNumber);return A>N?null:[A,N]}getYForLineNumber(T,A){return+(T-this.startLineNumber+this.topPaddingLineCount)*A}static create(T,A,N,F,O,W,U,j,R,K,G){const Z=T.pixelRatio,J=T.minimapLineHeight,X=Math.floor(T.canvasInnerHeight/J),H=T.lineHeight;if(T.minimapHeightIsEditorHeight){let de=j*T.lineHeight+T.paddingTop+T.paddingBottom;T.scrollBeyondLastLine&&(de+=Math.max(0,O-T.lineHeight-T.paddingBottom));const he=Math.max(1,Math.floor(O*O/de)),ue=Math.max(0,T.minimapHeight-he),te=ue/(K-O),q=R*te,z=ue>0,ee=Math.floor(T.canvasInnerHeight/T.minimapLineHeight),$=Math.floor(T.paddingTop/T.lineHeight);return new m(R,K,z,te,q,he,$,1,Math.min(U,ee))}let B;if(W&&N!==U){const de=N-A+1;B=Math.floor(de*J/Z)}else{const de=O/H;B=Math.floor(de*J/Z)}const V=Math.floor(T.paddingTop/H);let Y=Math.floor(T.paddingBottom/H);if(T.scrollBeyondLastLine){const de=O/H;Y=Math.max(Y,de-1)}let ie;if(Y>0){const de=O/H;ie=(V+U+Y-de-1)*J/Z}else ie=Math.max(0,(V+U)*J/Z-B);ie=Math.min(T.minimapHeight-B,ie);const ae=ie/(K-O),ce=R*ae;if(X>=V+U+Y){const de=ie>0;return new m(R,K,de,ae,ce,B,V,1,U)}else{let de;A>1?de=A+V:de=Math.max(1,R/H);let he,ue=Math.max(1,Math.floor(de-ce*Z/J));ueR&&(ue=Math.min(ue,G.startLineNumber),he=Math.max(he,G.topPaddingLineCount)),G.scrollTop=T.paddingTop?z=(A-ue+he+q)*J/Z:z=R/T.paddingTop*(he+q)*J/Z,new m(R,K,!0,ae,z,B,he,ue,te)}}}class v{constructor(T){this.dy=T}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}v.INVALID=new v(-1);class b{constructor(T,A,N){this.renderedLayout=T,this._imageData=A,this._renderedLines=new _.RenderedLinesCollection(()=>v.INVALID),this._renderedLines._set(T.startLineNumber,N)}linesEquals(T){if(!this.scrollEquals(T))return!1;const N=this._renderedLines._get().lines;for(let F=0,O=N.length;F1){for(let V=0,Y=F-1;V0&&this.minimapLines[N-1]>=T;)N--;let F=this.modelLineToMinimapLine(A)-1;for(;F+1A)return null}return[N+1,F+1]}decorationLineRangeToMinimapLineRange(T,A){let N=this.modelLineToMinimapLine(T),F=this.modelLineToMinimapLine(A);return T!==A&&F===N&&(F===this.minimapLines.length?N>1&&N--:F++),[N,F]}onLinesDeleted(T){const A=T.toLineNumber-T.fromLineNumber+1;let N=this.minimapLines.length,F=0;for(let O=this.minimapLines.length-1;O>=0&&!(this.minimapLines[O]=0&&!(this.minimapLines[N]0,scrollWidth:T.scrollWidth,scrollHeight:T.scrollHeight,viewportStartLineNumber:A,viewportEndLineNumber:N,viewportStartLineNumberVerticalOffset:T.getVerticalOffsetForLineNumber(A),scrollTop:T.scrollTop,scrollLeft:T.scrollLeft,viewportWidth:T.viewportWidth,viewportHeight:T.viewportHeight};this._actual.render(F)}_recreateLineSampling(){this._minimapSelections=null;const T=!!this._samplingState,[A,N]=E.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=A,T&&this._samplingState)for(const F of N)switch(F.type){case"deleted":this._actual.onLinesDeleted(F.deleteFromLineNumber,F.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(F.insertFromLineNumber,F.insertToLineNumber);break;case"flush":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(T){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[T-1]):this._context.viewModel.getLineContent(T)}getLineMaxColumn(T){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[T-1]):this._context.viewModel.getLineMaxColumn(T)}getMinimapLinesRenderingData(T,A,N){if(this._samplingState){const F=[];for(let O=0,W=A-T+1;O{if(N.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!=="proportional"){if(N.button===0&&this._lastRenderData){const R=L.getDomNodePagePosition(this._slider.domNode),K=R.top+R.height/2;this._startSliderDragging(N,K,this._lastRenderData.renderedLayout)}return}const O=this._model.options.minimapLineHeight,W=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*N.offsetY;let j=Math.floor(W/O)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;j=Math.min(j,this._model.getLineCount()),this._model.revealLineNumber(j)}),this._sliderPointerMoveMonitor=new y.GlobalPointerMoveMonitor,this._sliderPointerDownListener=L.addStandardDisposableListener(this._slider.domNode,L.EventType.POINTER_DOWN,N=>{N.preventDefault(),N.stopPropagation(),N.button===0&&this._lastRenderData&&this._startSliderDragging(N,N.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=h.Gesture.addTarget(this._domNode.domNode),this._sliderTouchStartListener=L.addDisposableListener(this._domNode.domNode,h.EventType.Start,N=>{N.preventDefault(),N.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(N))},{passive:!1}),this._sliderTouchMoveListener=L.addDisposableListener(this._domNode.domNode,h.EventType.Change,N=>{N.preventDefault(),N.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(N)},{passive:!1}),this._sliderTouchEndListener=L.addStandardDisposableListener(this._domNode.domNode,h.EventType.End,N=>{N.preventDefault(),N.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)})}_startSliderDragging(T,A,N){if(!T.target||!(T.target instanceof Element))return;const F=T.pageX;this._slider.toggleClassName("active",!0);const O=(W,U)=>{const j=L.getDomNodePagePosition(this._domNode.domNode),R=Math.min(Math.abs(U-F),Math.abs(U-j.left),Math.abs(U-j.left-j.width));if(S.isWindows&&R>d){this._model.setScrollTop(N.scrollTop);return}const K=W-A;this._model.setScrollTop(N.getDesiredScrollTopFromDelta(K))};T.pageY!==A&&O(T.pageY,F),this._sliderPointerMoveMonitor.startMonitoring(T.target,T.pointerId,T.buttons,W=>O(W.pageY,W.pageX),()=>{this._slider.toggleClassName("active",!1)})}scrollDueToTouchEvent(T){const A=this._domNode.domNode.getBoundingClientRect().top,N=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(T.pageY-A);this._model.setScrollTop(N)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const T=["minimap"];return this._model.options.showSlider==="always"?T.push("slider-always"):T.push("slider-mouseover"),this._model.options.autohide&&T.push("autohide"),T.join(" ")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new w(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(T,A){return this._lastRenderData?this._lastRenderData.onLinesChanged(T,A):!1}onLinesDeleted(T,A){var N;return(N=this._lastRenderData)===null||N===void 0||N.onLinesDeleted(T,A),!0}onLinesInserted(T,A){var N;return(N=this._lastRenderData)===null||N===void 0||N.onLinesInserted(T,A),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(a.minimapSelection),this._renderDecorations=!0,!0}onTokensChanged(T){return this._lastRenderData?this._lastRenderData.onTokensChanged(T):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(T){if(this._model.options.renderMinimap===0){this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}T.scrollLeft+T.viewportWidth>=T.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const N=m.create(this._model.options,T.viewportStartLineNumber,T.viewportEndLineNumber,T.viewportStartLineNumberVerticalOffset,T.viewportHeight,T.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),T.scrollTop,T.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(N.sliderNeeded?"block":"none"),this._slider.setTop(N.sliderTop),this._slider.setHeight(N.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(N.sliderHeight),this.renderDecorations(N),this._lastRenderData=this.renderLines(N)}renderDecorations(T){if(this._renderDecorations){this._renderDecorations=!1;const A=this._model.getSelections();A.sort(s.Range.compareRangesUsingStarts);const N=this._model.getMinimapDecorationsInViewport(T.startLineNumber,T.endLineNumber);N.sort((Z,J)=>(Z.options.zIndex||0)-(J.options.zIndex||0));const{canvasInnerWidth:F,canvasInnerHeight:O}=this._model.options,W=this._model.options.minimapLineHeight,U=this._model.options.minimapCharWidth,j=this._model.getOptions().tabSize,R=this._decorationsCanvas.domNode.getContext("2d");R.clearRect(0,0,F,O);const K=new P(T.startLineNumber,T.endLineNumber,!1);this._renderSelectionLineHighlights(R,A,K,T,W),this._renderDecorationsLineHighlights(R,N,K,T,W);const G=new P(T.startLineNumber,T.endLineNumber,null);this._renderSelectionsHighlights(R,A,G,T,W,j,U,F),this._renderDecorationsHighlights(R,N,G,T,W,j,U,F)}}_renderSelectionLineHighlights(T,A,N,F,O){if(!this._selectionColor||this._selectionColor.isTransparent())return;T.fillStyle=this._selectionColor.transparent(.5).toString();let W=0,U=0;for(const j of A){const R=F.intersectWithViewport(j);if(!R)continue;const[K,G]=R;for(let X=K;X<=G;X++)N.set(X,!0);const Z=F.getYForLineNumber(K,O),J=F.getYForLineNumber(G,O);U>=Z||(U>W&&T.fillRect(C.MINIMAP_GUTTER_WIDTH,W,T.canvas.width,U-W),W=Z),U=J}U>W&&T.fillRect(C.MINIMAP_GUTTER_WIDTH,W,T.canvas.width,U-W)}_renderDecorationsLineHighlights(T,A,N,F,O){const W=new Map;for(let U=A.length-1;U>=0;U--){const j=A[U],R=j.options.minimap;if(!R||R.position!==c.MinimapPosition.Inline)continue;const K=F.intersectWithViewport(j.range);if(!K)continue;const[G,Z]=K,J=R.getColor(this._theme.value);if(!J||J.isTransparent())continue;let X=W.get(J.toString());X||(X=J.transparent(.5).toString(),W.set(J.toString(),X)),T.fillStyle=X;for(let H=G;H<=Z;H++){if(N.has(H))continue;N.set(H,!0);const B=F.getYForLineNumber(G,O);T.fillRect(C.MINIMAP_GUTTER_WIDTH,B,T.canvas.width,O)}}}_renderSelectionsHighlights(T,A,N,F,O,W,U,j){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const R of A){const K=F.intersectWithViewport(R);if(!K)continue;const[G,Z]=K;for(let J=G;J<=Z;J++)this.renderDecorationOnLine(T,N,R,this._selectionColor,F,J,O,O,W,U,j)}}_renderDecorationsHighlights(T,A,N,F,O,W,U,j){for(const R of A){const K=R.options.minimap;if(!K)continue;const G=F.intersectWithViewport(R.range);if(!G)continue;const[Z,J]=G,X=K.getColor(this._theme.value);if(!(!X||X.isTransparent()))for(let H=Z;H<=J;H++)switch(K.position){case c.MinimapPosition.Inline:this.renderDecorationOnLine(T,N,R.range,X,F,H,O,O,W,U,j);continue;case c.MinimapPosition.Gutter:{const B=F.getYForLineNumber(H,O),V=2;this.renderDecoration(T,X,V,B,l,O);continue}}}}renderDecorationOnLine(T,A,N,F,O,W,U,j,R,K,G){const Z=O.getYForLineNumber(W,j);if(Z+U<0||Z>this._model.options.canvasInnerHeight)return;const{startLineNumber:J,endLineNumber:X}=N,H=J===W?N.startColumn:1,B=X===W?N.endColumn:this._model.getLineMaxColumn(W),V=this.getXOffsetForPosition(A,W,H,R,K,G),Y=this.getXOffsetForPosition(A,W,B,R,K,G);this.renderDecoration(T,F,V,Z,Y-V,U)}getXOffsetForPosition(T,A,N,F,O,W){if(N===1)return C.MINIMAP_GUTTER_WIDTH;if((N-1)*O>=W)return W;let j=T.get(A);if(!j){const R=this._model.getLineContent(A);j=[C.MINIMAP_GUTTER_WIDTH];let K=C.MINIMAP_GUTTER_WIDTH;for(let G=1;G=W){j[G]=W;break}j[G]=X,K=X}T.set(A,j)}return N-1ce?Math.floor((F-ce)/2):0,he=Z.a/255,ue=new i.RGBA8(Math.round((Z.r-G.r)*he+G.r),Math.round((Z.g-G.g)*he+G.g),Math.round((Z.b-G.b)*he+G.b),255);let te=T.topPaddingLineCount*F;const q=[];for(let oe=0,ge=N-A+1;oe=0&&zY)return;const ee=B.charCodeAt(ce);if(ee===9){const $=Z-(ce+de)%Z;de+=$-1,ae+=$*W}else if(ee===32)ae+=W;else{const $=f.isFullWidthCharacter(ee)?2:1;for(let re=0;re<$;re++)if(O===2?R.blockRenderChar(T,ae,K+G,z,j,A,N,ie):R.renderChar(T,ae,K+G,ee,z,j,A,N,X,F,ie),ae+=W,ae>Y)return}}}}}class P{constructor(T,A,N){this._startLineNumber=T,this._endLineNumber=A,this._defaultValue=N,this._values=[];for(let F=0,O=this._endLineNumber-this._startLineNumber+1;Fthis._endLineNumber||(this._values[T-this._startLineNumber]=A)}get(T){return Tthis._endLineNumber?this._defaultValue:this._values[T-this._startLineNumber]}}}),define(ne[822],se([1,0,608,31]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.diffMoveBorderActive=e.diffMoveBorder=void 0,e.diffMoveBorder=(0,k.registerColor)("diffEditor.move.border",{dark:"#8b8b8b9c",light:"#8b8b8b9c",hcDark:"#8b8b8b9c",hcLight:"#8b8b8b9c"},(0,L.localize)(0,null)),e.diffMoveBorderActive=(0,k.registerColor)("diffEditor.moveActive.border",{dark:"#FFA500",light:"#FFA500",hcDark:"#FFA500",hcLight:"#FFA500"},(0,L.localize)(1,null))}),define(ne[249],se([1,0,706,31,463]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SYMBOL_ICON_VARIABLE_FOREGROUND=e.SYMBOL_ICON_UNIT_FOREGROUND=e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=e.SYMBOL_ICON_TEXT_FOREGROUND=e.SYMBOL_ICON_STRUCT_FOREGROUND=e.SYMBOL_ICON_STRING_FOREGROUND=e.SYMBOL_ICON_SNIPPET_FOREGROUND=e.SYMBOL_ICON_REFERENCE_FOREGROUND=e.SYMBOL_ICON_PROPERTY_FOREGROUND=e.SYMBOL_ICON_PACKAGE_FOREGROUND=e.SYMBOL_ICON_OPERATOR_FOREGROUND=e.SYMBOL_ICON_OBJECT_FOREGROUND=e.SYMBOL_ICON_NUMBER_FOREGROUND=e.SYMBOL_ICON_NULL_FOREGROUND=e.SYMBOL_ICON_NAMESPACE_FOREGROUND=e.SYMBOL_ICON_MODULE_FOREGROUND=e.SYMBOL_ICON_METHOD_FOREGROUND=e.SYMBOL_ICON_KEYWORD_FOREGROUND=e.SYMBOL_ICON_KEY_FOREGROUND=e.SYMBOL_ICON_INTERFACE_FOREGROUND=e.SYMBOL_ICON_FUNCTION_FOREGROUND=e.SYMBOL_ICON_FOLDER_FOREGROUND=e.SYMBOL_ICON_FILE_FOREGROUND=e.SYMBOL_ICON_FIELD_FOREGROUND=e.SYMBOL_ICON_EVENT_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=e.SYMBOL_ICON_CONSTANT_FOREGROUND=e.SYMBOL_ICON_COLOR_FOREGROUND=e.SYMBOL_ICON_CLASS_FOREGROUND=e.SYMBOL_ICON_BOOLEAN_FOREGROUND=e.SYMBOL_ICON_ARRAY_FOREGROUND=void 0,e.SYMBOL_ICON_ARRAY_FOREGROUND=(0,k.registerColor)("symbolIcon.arrayForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(0,null)),e.SYMBOL_ICON_BOOLEAN_FOREGROUND=(0,k.registerColor)("symbolIcon.booleanForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(1,null)),e.SYMBOL_ICON_CLASS_FOREGROUND=(0,k.registerColor)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(2,null)),e.SYMBOL_ICON_COLOR_FOREGROUND=(0,k.registerColor)("symbolIcon.colorForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(3,null)),e.SYMBOL_ICON_CONSTANT_FOREGROUND=(0,k.registerColor)("symbolIcon.constantForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(4,null)),e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=(0,k.registerColor)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(5,null)),e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=(0,k.registerColor)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(6,null)),e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=(0,k.registerColor)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(7,null)),e.SYMBOL_ICON_EVENT_FOREGROUND=(0,k.registerColor)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(8,null)),e.SYMBOL_ICON_FIELD_FOREGROUND=(0,k.registerColor)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(9,null)),e.SYMBOL_ICON_FILE_FOREGROUND=(0,k.registerColor)("symbolIcon.fileForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(10,null)),e.SYMBOL_ICON_FOLDER_FOREGROUND=(0,k.registerColor)("symbolIcon.folderForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(11,null)),e.SYMBOL_ICON_FUNCTION_FOREGROUND=(0,k.registerColor)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(12,null)),e.SYMBOL_ICON_INTERFACE_FOREGROUND=(0,k.registerColor)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(13,null)),e.SYMBOL_ICON_KEY_FOREGROUND=(0,k.registerColor)("symbolIcon.keyForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(14,null)),e.SYMBOL_ICON_KEYWORD_FOREGROUND=(0,k.registerColor)("symbolIcon.keywordForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(15,null)),e.SYMBOL_ICON_METHOD_FOREGROUND=(0,k.registerColor)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(16,null)),e.SYMBOL_ICON_MODULE_FOREGROUND=(0,k.registerColor)("symbolIcon.moduleForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(17,null)),e.SYMBOL_ICON_NAMESPACE_FOREGROUND=(0,k.registerColor)("symbolIcon.namespaceForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(18,null)),e.SYMBOL_ICON_NULL_FOREGROUND=(0,k.registerColor)("symbolIcon.nullForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(19,null)),e.SYMBOL_ICON_NUMBER_FOREGROUND=(0,k.registerColor)("symbolIcon.numberForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(20,null)),e.SYMBOL_ICON_OBJECT_FOREGROUND=(0,k.registerColor)("symbolIcon.objectForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(21,null)),e.SYMBOL_ICON_OPERATOR_FOREGROUND=(0,k.registerColor)("symbolIcon.operatorForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(22,null)),e.SYMBOL_ICON_PACKAGE_FOREGROUND=(0,k.registerColor)("symbolIcon.packageForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(23,null)),e.SYMBOL_ICON_PROPERTY_FOREGROUND=(0,k.registerColor)("symbolIcon.propertyForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(24,null)),e.SYMBOL_ICON_REFERENCE_FOREGROUND=(0,k.registerColor)("symbolIcon.referenceForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(25,null)),e.SYMBOL_ICON_SNIPPET_FOREGROUND=(0,k.registerColor)("symbolIcon.snippetForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(26,null)),e.SYMBOL_ICON_STRING_FOREGROUND=(0,k.registerColor)("symbolIcon.stringForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(27,null)),e.SYMBOL_ICON_STRUCT_FOREGROUND=(0,k.registerColor)("symbolIcon.structForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(28,null)),e.SYMBOL_ICON_TEXT_FOREGROUND=(0,k.registerColor)("symbolIcon.textForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(29,null)),e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=(0,k.registerColor)("symbolIcon.typeParameterForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(30,null)),e.SYMBOL_ICON_UNIT_FOREGROUND=(0,k.registerColor)("symbolIcon.unitForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(31,null)),e.SYMBOL_ICON_VARIABLE_FOREGROUND=(0,k.registerColor)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(32,null))}),define(ne[823],se([1,0,25,113,641,172,249]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toMenuItems=void 0;const D=Object.freeze({kind:k.CodeActionKind.Empty,title:(0,y.localize)(0,null)}),S=Object.freeze([{kind:k.CodeActionKind.QuickFix,title:(0,y.localize)(1,null)},{kind:k.CodeActionKind.RefactorExtract,title:(0,y.localize)(2,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorInline,title:(0,y.localize)(3,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorRewrite,title:(0,y.localize)(4,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorMove,title:(0,y.localize)(5,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.SurroundWith,title:(0,y.localize)(6,null),icon:L.Codicon.symbolSnippet},{kind:k.CodeActionKind.Source,title:(0,y.localize)(7,null),icon:L.Codicon.symbolFile},D]);function f(_,g,C){if(!g)return _.map(n=>({kind:"action",item:n,group:D,disabled:!!n.action.disabled,label:n.action.disabled||n.action.title}));const s=S.map(n=>({group:n,actions:[]}));for(const n of _){const t=n.action.kind?new k.CodeActionKind(n.action.kind):k.CodeActionKind.None;for(const a of s)if(a.group.kind.contains(t)){a.actions.push(n);break}}const i=[];for(const n of s)if(n.actions.length){i.push({kind:"header",group:n.group});for(const t of n.actions)i.push({kind:"action",item:t,group:n.group,label:t.action.title,disabled:!!t.action.disabled,keybinding:C(t.action)})}return i}e.toMenuItems=f}),define(ne[105],se([1,0,31,38]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.defaultMenuStyles=e.defaultSelectBoxStyles=e.getListStyles=e.defaultListStyles=e.defaultBreadcrumbsWidgetStyles=e.defaultCountBadgeStyles=e.defaultFindWidgetStyles=e.defaultInputBoxStyles=e.defaultDialogStyles=e.defaultCheckboxStyles=e.defaultToggleStyles=e.defaultProgressBarStyles=e.defaultButtonStyles=e.defaultKeybindingLabelStyles=void 0;function y(S,f){const _=Object.assign({},f);for(const g in S){const C=S[g];_[g]=C!==void 0?(0,L.asCssVariable)(C):void 0}return _}e.defaultKeybindingLabelStyles={keybindingLabelBackground:(0,L.asCssVariable)(L.keybindingLabelBackground),keybindingLabelForeground:(0,L.asCssVariable)(L.keybindingLabelForeground),keybindingLabelBorder:(0,L.asCssVariable)(L.keybindingLabelBorder),keybindingLabelBottomBorder:(0,L.asCssVariable)(L.keybindingLabelBottomBorder),keybindingLabelShadow:(0,L.asCssVariable)(L.widgetShadow)},e.defaultButtonStyles={buttonForeground:(0,L.asCssVariable)(L.buttonForeground),buttonSeparator:(0,L.asCssVariable)(L.buttonSeparator),buttonBackground:(0,L.asCssVariable)(L.buttonBackground),buttonHoverBackground:(0,L.asCssVariable)(L.buttonHoverBackground),buttonSecondaryForeground:(0,L.asCssVariable)(L.buttonSecondaryForeground),buttonSecondaryBackground:(0,L.asCssVariable)(L.buttonSecondaryBackground),buttonSecondaryHoverBackground:(0,L.asCssVariable)(L.buttonSecondaryHoverBackground),buttonBorder:(0,L.asCssVariable)(L.buttonBorder)},e.defaultProgressBarStyles={progressBarBackground:(0,L.asCssVariable)(L.progressBarBackground)},e.defaultToggleStyles={inputActiveOptionBorder:(0,L.asCssVariable)(L.inputActiveOptionBorder),inputActiveOptionForeground:(0,L.asCssVariable)(L.inputActiveOptionForeground),inputActiveOptionBackground:(0,L.asCssVariable)(L.inputActiveOptionBackground)},e.defaultCheckboxStyles={checkboxBackground:(0,L.asCssVariable)(L.checkboxBackground),checkboxBorder:(0,L.asCssVariable)(L.checkboxBorder),checkboxForeground:(0,L.asCssVariable)(L.checkboxForeground)},e.defaultDialogStyles={dialogBackground:(0,L.asCssVariable)(L.editorWidgetBackground),dialogForeground:(0,L.asCssVariable)(L.editorWidgetForeground),dialogShadow:(0,L.asCssVariable)(L.widgetShadow),dialogBorder:(0,L.asCssVariable)(L.contrastBorder),errorIconForeground:(0,L.asCssVariable)(L.problemsErrorIconForeground),warningIconForeground:(0,L.asCssVariable)(L.problemsWarningIconForeground),infoIconForeground:(0,L.asCssVariable)(L.problemsInfoIconForeground),textLinkForeground:(0,L.asCssVariable)(L.textLinkForeground)},e.defaultInputBoxStyles={inputBackground:(0,L.asCssVariable)(L.inputBackground),inputForeground:(0,L.asCssVariable)(L.inputForeground),inputBorder:(0,L.asCssVariable)(L.inputBorder),inputValidationInfoBorder:(0,L.asCssVariable)(L.inputValidationInfoBorder),inputValidationInfoBackground:(0,L.asCssVariable)(L.inputValidationInfoBackground),inputValidationInfoForeground:(0,L.asCssVariable)(L.inputValidationInfoForeground),inputValidationWarningBorder:(0,L.asCssVariable)(L.inputValidationWarningBorder),inputValidationWarningBackground:(0,L.asCssVariable)(L.inputValidationWarningBackground),inputValidationWarningForeground:(0,L.asCssVariable)(L.inputValidationWarningForeground),inputValidationErrorBorder:(0,L.asCssVariable)(L.inputValidationErrorBorder),inputValidationErrorBackground:(0,L.asCssVariable)(L.inputValidationErrorBackground),inputValidationErrorForeground:(0,L.asCssVariable)(L.inputValidationErrorForeground)},e.defaultFindWidgetStyles={listFilterWidgetBackground:(0,L.asCssVariable)(L.listFilterWidgetBackground),listFilterWidgetOutline:(0,L.asCssVariable)(L.listFilterWidgetOutline),listFilterWidgetNoMatchesOutline:(0,L.asCssVariable)(L.listFilterWidgetNoMatchesOutline),listFilterWidgetShadow:(0,L.asCssVariable)(L.listFilterWidgetShadow),inputBoxStyles:e.defaultInputBoxStyles,toggleStyles:e.defaultToggleStyles},e.defaultCountBadgeStyles={badgeBackground:(0,L.asCssVariable)(L.badgeBackground),badgeForeground:(0,L.asCssVariable)(L.badgeForeground),badgeBorder:(0,L.asCssVariable)(L.contrastBorder)},e.defaultBreadcrumbsWidgetStyles={breadcrumbsBackground:(0,L.asCssVariable)(L.breadcrumbsBackground),breadcrumbsForeground:(0,L.asCssVariable)(L.breadcrumbsForeground),breadcrumbsHoverForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusAndSelectionForeground:(0,L.asCssVariable)(L.breadcrumbsActiveSelectionForeground)},e.defaultListStyles={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:(0,L.asCssVariable)(L.listFocusBackground),listFocusForeground:(0,L.asCssVariable)(L.listFocusForeground),listFocusOutline:(0,L.asCssVariable)(L.listFocusOutline),listActiveSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listActiveSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listActiveSelectionIconForeground:(0,L.asCssVariable)(L.listActiveSelectionIconForeground),listFocusAndSelectionOutline:(0,L.asCssVariable)(L.listFocusAndSelectionOutline),listFocusAndSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listFocusAndSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listInactiveSelectionBackground:(0,L.asCssVariable)(L.listInactiveSelectionBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.listInactiveSelectionIconForeground),listInactiveSelectionForeground:(0,L.asCssVariable)(L.listInactiveSelectionForeground),listInactiveFocusBackground:(0,L.asCssVariable)(L.listInactiveFocusBackground),listInactiveFocusOutline:(0,L.asCssVariable)(L.listInactiveFocusOutline),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listDropBackground:(0,L.asCssVariable)(L.listDropBackground),listSelectionOutline:(0,L.asCssVariable)(L.activeContrastBorder),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),treeIndentGuidesStroke:(0,L.asCssVariable)(L.treeIndentGuidesStroke),treeInactiveIndentGuidesStroke:(0,L.asCssVariable)(L.treeInactiveIndentGuidesStroke),tableColumnsBorder:(0,L.asCssVariable)(L.tableColumnsBorder),tableOddRowsBackgroundColor:(0,L.asCssVariable)(L.tableOddRowsBackgroundColor)};function D(S){return y(S,e.defaultListStyles)}e.getListStyles=D,e.defaultSelectBoxStyles={selectBackground:(0,L.asCssVariable)(L.selectBackground),selectListBackground:(0,L.asCssVariable)(L.selectListBackground),selectForeground:(0,L.asCssVariable)(L.selectForeground),decoratorRightForeground:(0,L.asCssVariable)(L.pickerGroupForeground),selectBorder:(0,L.asCssVariable)(L.selectBorder),focusBorder:(0,L.asCssVariable)(L.focusBorder),listFocusBackground:(0,L.asCssVariable)(L.quickInputListFocusBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.quickInputListFocusIconForeground),listFocusForeground:(0,L.asCssVariable)(L.quickInputListFocusForeground),listFocusOutline:(0,L.asCssVariableWithDefault)(L.activeContrastBorder,k.Color.transparent.toString()),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),selectListBorder:(0,L.asCssVariable)(L.editorWidgetBorder),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0},e.defaultMenuStyles={shadowColor:(0,L.asCssVariable)(L.widgetShadow),borderColor:(0,L.asCssVariable)(L.menuBorder),foregroundColor:(0,L.asCssVariable)(L.menuForeground),backgroundColor:(0,L.asCssVariable)(L.menuBackground),selectionForegroundColor:(0,L.asCssVariable)(L.menuSelectionForeground),selectionBackgroundColor:(0,L.asCssVariable)(L.menuSelectionBackground),selectionBorderColor:(0,L.asCssVariable)(L.menuSelectionBorder),separatorColor:(0,L.asCssVariable)(L.menuSeparatorBackground),scrollbarShadow:(0,L.asCssVariable)(L.scrollbarShadow),scrollbarSliderBackground:(0,L.asCssVariable)(L.scrollbarSliderBackground),scrollbarSliderHoverBackground:(0,L.asCssVariable)(L.scrollbarSliderHoverBackground),scrollbarSliderActiveBackground:(0,L.asCssVariable)(L.scrollbarSliderActiveBackground)}}),define(ne[824],se([1,0,7,307,308,226,72,2,45,69,667,8,34,158,105,155]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibilityProvider=e.OneReferenceRenderer=e.FileReferencesRenderer=e.IdentityProvider=e.StringRepresentationProvider=e.Delegate=e.DataSource=void 0;let h=class{constructor(w){this._resolverService=w}hasChildren(w){return w instanceof a.ReferencesModel||w instanceof a.FileReferences}getChildren(w){if(w instanceof a.ReferencesModel)return w.groups;if(w instanceof a.FileReferences)return w.resolve(this._resolverService).then(E=>E.children);throw new Error("bad tree")}};e.DataSource=h,e.DataSource=h=ke([fe(0,g.ITextModelService)],h);class r{getHeight(){return 23}getTemplateId(w){return w instanceof a.FileReferences?l.id:m.id}}e.Delegate=r;let c=class{constructor(w){this._keybindingService=w}getKeyboardNavigationLabel(w){var E;if(w instanceof a.OneReference){const I=(E=w.parent.getPreview(w))===null||E===void 0?void 0:E.preview(w.range);if(I)return I.value}return(0,_.basename)(w.uri)}};e.StringRepresentationProvider=c,e.StringRepresentationProvider=c=ke([fe(0,i.IKeybindingService)],c);class o{getId(w){return w instanceof a.OneReference?w.id:w.uri}}e.IdentityProvider=o;let d=class extends f.Disposable{constructor(w,E){super(),this._labelService=E;const I=document.createElement("div");I.classList.add("reference-file"),this.file=this._register(new D.IconLabel(I,{supportHighlights:!0})),this.badge=new k.CountBadge(L.append(I,L.$(".count")),{},t.defaultCountBadgeStyles),w.appendChild(I)}set(w,E){const I=(0,_.dirname)(w.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(w.uri),this._labelService.getUriLabel(I,{relative:!0}),{title:this._labelService.getUriLabel(w.uri),matches:E});const M=w.children.length;this.badge.setCount(M),M>1?this.badge.setTitleFormat((0,C.localize)(0,null,M)):this.badge.setTitleFormat((0,C.localize)(1,null,M))}};d=ke([fe(1,n.ILabelService)],d);let l=u=class{constructor(w){this._instantiationService=w,this.templateId=u.id}renderTemplate(w){return this._instantiationService.createInstance(d,w)}renderElement(w,E,I){I.set(w.element,(0,S.createMatches)(w.filterData))}disposeTemplate(w){w.dispose()}};e.FileReferencesRenderer=l,l.id="FileReferencesRenderer",e.FileReferencesRenderer=l=u=ke([fe(0,s.IInstantiationService)],l);class p{constructor(w){this.label=new y.HighlightedLabel(w)}set(w,E){var I;const M=(I=w.parent.getPreview(w))===null||I===void 0?void 0:I.preview(w.range);if(!M||!M.value)this.label.set(`${(0,_.basename)(w.uri)}:${w.range.startLineNumber+1}:${w.range.startColumn+1}`);else{const{value:P,highlight:x}=M;E&&!S.FuzzyScore.isDefault(E)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(P,(0,S.createMatches)(E))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(P,[x]))}}}class m{constructor(){this.templateId=m.id}renderTemplate(w){return new p(w)}renderElement(w,E,I){I.set(w.element,w.filterData)}disposeTemplate(){}}e.OneReferenceRenderer=m,m.id="OneReferenceRenderer";class v{getWidgetAriaLabel(){return(0,C.localize)(2,null)}getAriaLabel(w){return w.ariaMessage}}e.AccessibilityProvider=v}),define(ne[825],se([1,0,7,222,114,25,2,17,26,715,57,34,105,31,269]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionList=e.previewSelectedActionCommand=e.acceptSelectedActionCommand=void 0,e.acceptSelectedActionCommand="acceptSelectedCodeAction",e.previewSelectedActionCommand="previewSelectedCodeAction";class t{get templateId(){return"header"}renderTemplate(l){l.classList.add("group-header");const p=document.createElement("span");return l.append(p),{container:l,text:p}}renderElement(l,p,m){var v,b;m.text.textContent=(b=(v=l.group)===null||v===void 0?void 0:v.title)!==null&&b!==void 0?b:""}disposeTemplate(l){}}let a=class{get templateId(){return"action"}constructor(l,p){this._supportsPreview=l,this._keybindingService=p}renderTemplate(l){l.classList.add(this.templateId);const p=document.createElement("div");p.className="icon",l.append(p);const m=document.createElement("span");m.className="title",l.append(m);const v=new k.KeybindingLabel(l,f.OS);return{container:l,icon:p,text:m,keybinding:v}}renderElement(l,p,m){var v,b,w;if(!((v=l.group)===null||v===void 0)&&v.icon?(m.icon.className=_.ThemeIcon.asClassName(l.group.icon),l.group.icon.color&&(m.icon.style.color=(0,n.asCssVariable)(l.group.icon.color.id))):(m.icon.className=_.ThemeIcon.asClassName(D.Codicon.lightBulb),m.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!l.item||!l.label)return;m.text.textContent=o(l.label),m.keybinding.set(l.keybinding),L.setVisibility(!!l.keybinding,m.keybinding.element);const E=(b=this._keybindingService.lookupKeybinding(e.acceptSelectedActionCommand))===null||b===void 0?void 0:b.getLabel(),I=(w=this._keybindingService.lookupKeybinding(e.previewSelectedActionCommand))===null||w===void 0?void 0:w.getLabel();m.container.classList.toggle("option-disabled",l.disabled),l.disabled?m.container.title=l.label:E&&I?this._supportsPreview?m.container.title=(0,g.localize)(0,null,E,I):m.container.title=(0,g.localize)(1,null,E):m.container.title=""}disposeTemplate(l){}};a=ke([fe(1,s.IKeybindingService)],a);class u extends UIEvent{constructor(){super("acceptSelectedAction")}}class h extends UIEvent{constructor(){super("previewSelectedAction")}}function r(d){if(d.kind==="action")return d.label}let c=class extends S.Disposable{constructor(l,p,m,v,b,w){super(),this._delegate=v,this._contextViewService=b,this._keybindingService=w,this._actionLineHeight=24,this._headerLineHeight=26,this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const E={getHeight:I=>I.kind==="header"?this._headerLineHeight:this._actionLineHeight,getTemplateId:I=>I.kind};this._list=this._register(new y.List(l,this.domNode,E,[new a(p,this._keybindingService),new t],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:r},accessibilityProvider:{getAriaLabel:I=>{if(I.kind==="action"){let M=I.label?o(I?.label):"";return I.disabled&&(M=(0,g.localize)(2,null,M,I.disabled)),M}return null},getWidgetAriaLabel:()=>(0,g.localize)(3,null),getRole:I=>I.kind==="action"?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style(i.defaultListStyles),this._register(this._list.onMouseClick(I=>this.onListClick(I))),this._register(this._list.onMouseOver(I=>this.onListHover(I))),this._register(this._list.onDidChangeFocus(()=>this._list.domFocus())),this._register(this._list.onDidChangeSelection(I=>this.onListSelection(I))),this._allMenuItems=m,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(l){return!l.disabled&&l.kind==="action"}hide(l){this._delegate.onHide(l),this._contextViewService.hideContextView()}layout(l){const p=this._allMenuItems.filter(M=>M.kind==="header").length,v=this._allMenuItems.length*this._actionLineHeight+p*this._headerLineHeight-p*this._actionLineHeight;this._list.layout(v);const b=this._allMenuItems.map((M,P)=>{const x=document.getElementById(this._list.getElementID(P));if(x){x.style.width="auto";const T=x.getBoundingClientRect().width;return x.style.width="",T}return 0}),w=Math.max(...b,l),E=.7,I=Math.min(v,document.body.clientHeight*E);return this._list.layout(I,w),this.domNode.style.height=`${I}px`,this._list.domFocus(),w}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(l){const p=this._list.getFocus();if(p.length===0)return;const m=p[0],v=this._list.element(m);if(!this.focusCondition(v))return;const b=l?new h:new u;this._list.setSelection([m],b)}onListSelection(l){if(!l.elements.length)return;const p=l.elements[0];p.item&&this.focusCondition(p)?this._delegate.onSelect(p.item,l.browserEvent instanceof h):this._list.setSelection([])}onListHover(l){this._list.setFocus(typeof l.index=="number"?[l.index]:[])}onListClick(l){l.element&&this.focusCondition(l.element)&&this._list.setFocus([])}};e.ActionList=c,e.ActionList=c=ke([fe(4,C.IContextViewService),fe(5,s.IKeybindingService)],c);function o(d){return d.replace(/\r\n|\r|\n/g," ")}}),define(ne[826],se([1,0,7,68,2,716,825,30,15,57,50,8,31,269]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IActionWidgetService=void 0,(0,i.registerColor)("actionBar.toggledBackground",{dark:i.inputActiveOptionBackground,light:i.inputActiveOptionBackground,hcDark:i.inputActiveOptionBackground,hcLight:i.inputActiveOptionBackground},(0,D.localize)(0,null));const n={Visible:new _.RawContextKey("codeActionMenuVisible",!1,(0,D.localize)(1,null))};e.IActionWidgetService=(0,s.createDecorator)("actionWidgetService");let t=class extends y.Disposable{get isVisible(){return n.Visible.getValue(this._contextKeyService)||!1}constructor(h,r,c){super(),this._contextViewService=h,this._contextKeyService=r,this._instantiationService=c,this._list=this._register(new y.MutableDisposable)}show(h,r,c,o,d,l,p){const m=n.Visible.bindTo(this._contextKeyService),v=this._instantiationService.createInstance(S.ActionList,h,r,c,o);this._contextViewService.showContextView({getAnchor:()=>d,render:b=>(m.set(!0),this._renderWidget(b,v,p??[])),onHide:b=>{m.reset(),this._onWidgetClosed(b)}},l,!1)}acceptSelected(h){var r;(r=this._list.value)===null||r===void 0||r.acceptSelected(h)}focusPrevious(){var h,r;(r=(h=this._list)===null||h===void 0?void 0:h.value)===null||r===void 0||r.focusPrevious()}focusNext(){var h,r;(r=(h=this._list)===null||h===void 0?void 0:h.value)===null||r===void 0||r.focusNext()}hide(){var h;(h=this._list.value)===null||h===void 0||h.hide(),this._list.clear()}_renderWidget(h,r,c){var o;const d=document.createElement("div");if(d.classList.add("action-widget"),h.appendChild(d),this._list.value=r,this._list.value)d.appendChild(this._list.value.domNode);else throw new Error("List has no value");const l=new y.DisposableStore,p=document.createElement("div"),m=h.appendChild(p);m.classList.add("context-view-block"),l.add(L.addDisposableListener(m,L.EventType.MOUSE_DOWN,M=>M.stopPropagation()));const v=document.createElement("div"),b=h.appendChild(v);b.classList.add("context-view-pointerBlock"),l.add(L.addDisposableListener(b,L.EventType.POINTER_MOVE,()=>b.remove())),l.add(L.addDisposableListener(b,L.EventType.MOUSE_DOWN,()=>b.remove()));let w=0;if(c.length){const M=this._createActionBar(".action-widget-action-bar",c);M&&(d.appendChild(M.getContainer().parentElement),l.add(M),w=M.getContainer().offsetWidth)}const E=(o=this._list.value)===null||o===void 0?void 0:o.layout(w);d.style.width=`${E}px`;const I=l.add(L.trackFocus(h));return l.add(I.onDidBlur(()=>this.hide())),l}_createActionBar(h,r){if(!r.length)return;const c=L.$(h),o=new k.ActionBar(c);return o.push(r,{icon:!1,label:!0}),o}_onWidgetClosed(h){var r;(r=this._list.value)===null||r===void 0||r.hide(h)}};t=ke([fe(0,g.IContextViewService),fe(1,_.IContextKeyService),fe(2,s.IInstantiationService)],t),(0,C.registerSingleton)(e.IActionWidgetService,t,1);const a=100+1e3;(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:"hideCodeActionWidget",title:{value:(0,D.localize)(2,null),original:"Hide action widget"},precondition:n.Visible,keybinding:{weight:a,primary:9,secondary:[1033]}})}run(u){u.get(e.IActionWidgetService).hide()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:"selectPrevCodeAction",title:{value:(0,D.localize)(3,null),original:"Select previous action"},precondition:n.Visible,keybinding:{weight:a,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.focusPrevious()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:"selectNextCodeAction",title:{value:(0,D.localize)(4,null),original:"Select next action"},precondition:n.Visible,keybinding:{weight:a,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.focusNext()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:S.acceptSelectedActionCommand,title:{value:(0,D.localize)(5,null),original:"Accept selected action"},precondition:n.Visible,keybinding:{weight:a,primary:3,secondary:[2137]}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.acceptSelected()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:S.previewSelectedActionCommand,title:{value:(0,D.localize)(6,null),original:"Preview selected action"},precondition:n.Visible,keybinding:{weight:a,primary:2051}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.acceptSelected(!0)}})}),define(ne[250],se([1,0,7,9,100,2,12,18,137,801,823,350,190,640,826,27,28,15,8,97,77,113,349]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";var p;Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionController=void 0;let m=p=class extends D.Disposable{static get(b){return b.getContribution(p.ID)}constructor(b,w,E,I,M,P,x,T,A,N){super(),this._commandService=x,this._configurationService=T,this._actionWidgetService=A,this._instantiationService=N,this._activeCodeActions=this._register(new D.MutableDisposable),this._showDisabled=!1,this._disposed=!1,this._editor=b,this._model=this._register(new l.CodeActionModel(this._editor,M.codeActionProvider,w,E,P)),this._register(this._model.onDidChangeState(F=>this.update(F))),this._lightBulbWidget=new y.Lazy(()=>{const F=this._editor.getContribution(s.LightBulbWidget.ID);return F&&this._register(F.onClick(O=>this.showCodeActionList(O.actions,O,{includeDisabledActions:!1,fromLightbulb:!0}))),F}),this._resolver=I.createInstance(g.CodeActionKeybindingResolver),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}showCodeActions(b,w,E){return this.showCodeActionList(w,E,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(b,w,E,I){var M;if(!this._editor.hasModel())return;(M=i.MessageController.get(this._editor))===null||M===void 0||M.closeMessage();const P=this._editor.getPosition();this._trigger({type:1,triggerAction:w,filter:E,autoApply:I,context:{notAvailableMessage:b,position:P}})}_trigger(b){return this._model.trigger(b)}_applyCodeAction(b,w,E){return we(this,void 0,void 0,function*(){try{yield this._instantiationService.invokeFunction(_.applyCodeAction,b,_.ApplyCodeActionReason.FromCodeActions,{preview:E,editor:this._editor})}finally{w&&this._trigger({type:2,triggerAction:d.CodeActionTriggerSource.QuickFix,filter:{}})}})}update(b){var w,E,I,M,P,x,T;return we(this,void 0,void 0,function*(){if(b.type!==1){(w=this._lightBulbWidget.rawValue)===null||w===void 0||w.hide();return}let A;try{A=yield b.actions}catch(N){(0,k.onUnexpectedError)(N);return}if(!this._disposed)if((E=this._lightBulbWidget.value)===null||E===void 0||E.update(A,b.trigger,b.position),b.trigger.type===1){if(!((I=b.trigger.filter)===null||I===void 0)&&I.include){const F=this.tryGetValidActionToApply(b.trigger,A);if(F){try{(M=this._lightBulbWidget.value)===null||M===void 0||M.hide(),yield this._applyCodeAction(F,!1,!1)}finally{A.dispose()}return}if(b.trigger.context){const O=this.getInvalidActionThatWouldHaveBeenApplied(b.trigger,A);if(O&&O.action.disabled){(P=i.MessageController.get(this._editor))===null||P===void 0||P.showMessage(O.action.disabled,b.trigger.context.position),A.dispose();return}}}const N=!!(!((x=b.trigger.filter)===null||x===void 0)&&x.include);if(b.trigger.context&&(!A.allActions.length||!N&&!A.validActions.length)){(T=i.MessageController.get(this._editor))===null||T===void 0||T.showMessage(b.trigger.context.notAvailableMessage,b.trigger.context.position),this._activeCodeActions.value=A,A.dispose();return}this._activeCodeActions.value=A,this.showCodeActionList(A,this.toCoords(b.position),{includeDisabledActions:N,fromLightbulb:!1})}else this._actionWidgetService.isVisible?A.dispose():this._activeCodeActions.value=A})}getInvalidActionThatWouldHaveBeenApplied(b,w){if(w.allActions.length&&(b.autoApply==="first"&&w.validActions.length===0||b.autoApply==="ifSingle"&&w.allActions.length===1))return w.allActions.find(({action:E})=>E.disabled)}tryGetValidActionToApply(b,w){if(w.validActions.length&&(b.autoApply==="first"&&w.validActions.length>0||b.autoApply==="ifSingle"&&w.validActions.length===1))return w.validActions[0]}showCodeActionList(b,w,E){return we(this,void 0,void 0,function*(){const I=this._editor.getDomNode();if(!I)return;const M=E.includeDisabledActions&&(this._showDisabled||b.validActions.length===0)?b.allActions:b.validActions;if(!M.length)return;const P=S.Position.isIPosition(w)?this.toCoords(w):w,x={onSelect:(T,A)=>we(this,void 0,void 0,function*(){this._applyCodeAction(T,!0,!!A),this._actionWidgetService.hide()}),onHide:()=>{var T;(T=this._editor)===null||T===void 0||T.focus()}};this._actionWidgetService.show("codeActionWidget",!0,(0,C.toMenuItems)(M,this._shouldShowHeaders(),this._resolver.getResolver()),x,P,I,this._getActionBarActions(b,w,E))})}toCoords(b){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(b,1),this._editor.render();const w=this._editor.getScrolledVisiblePosition(b),E=(0,L.getDomNodePagePosition)(this._editor.getDomNode()),I=E.left+w.left,M=E.top+w.top+w.height;return{x:I,y:M}}_shouldShowHeaders(){var b;const w=(b=this._editor)===null||b===void 0?void 0:b.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:w?.uri})}_getActionBarActions(b,w,E){if(E.fromLightbulb)return[];const I=b.documentation.map(M=>{var P;return{id:M.id,label:M.title,tooltip:(P=M.tooltip)!==null&&P!==void 0?P:"",class:void 0,enabled:!0,run:()=>{var x;return this._commandService.executeCommand(M.id,...(x=M.arguments)!==null&&x!==void 0?x:[])}}});return E.includeDisabledActions&&b.validActions.length>0&&b.allActions.length!==b.validActions.length&&I.push(this._showDisabled?{id:"hideMoreActions",label:(0,n.localize)(0,null),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(b,w,E))}:{id:"showMoreActions",label:(0,n.localize)(1,null),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(b,w,E))}),I}};e.CodeActionController=m,m.ID="editor.contrib.codeActionController",e.CodeActionController=m=p=ke([fe(1,c.IMarkerService),fe(2,h.IContextKeyService),fe(3,r.IInstantiationService),fe(4,f.ILanguageFeaturesService),fe(5,o.IEditorProgressService),fe(6,a.ICommandService),fe(7,u.IConfigurationService),fe(8,t.IActionWidgetService),fe(9,r.IInstantiationService)],m)}),define(ne[827],se([1,0,11,16,21,137,638,15,113,250,349]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AutoFixAction=e.FixAllAction=e.OrganizeImportsAction=e.SourceAction=e.RefactorAction=e.CodeActionCommand=e.QuickFixAction=void 0;function s(d){return f.ContextKeyExpr.regex(C.SUPPORTED_CODE_ACTIONS.keys()[0],new RegExp("(\\s|^)"+(0,L.escapeRegExpCharacters)(d.value)+"\\b"))}const i={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:S.localize(0,null)},apply:{type:"string",description:S.localize(1,null),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[S.localize(2,null),S.localize(3,null),S.localize(4,null)]},preferred:{type:"boolean",default:!1,description:S.localize(5,null)}}};function n(d,l,p,m,v=_.CodeActionTriggerSource.Default){if(d.hasModel()){const b=g.CodeActionController.get(d);b?.manualTriggerAtCurrentPosition(l,v,p,m)}}class t extends k.EditorAction{constructor(){super({id:D.quickFixCommandId,label:S.localize(6,null),alias:"Quick Fix...",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2137,weight:100}})}run(l,p){return n(p,S.localize(7,null),void 0,void 0,_.CodeActionTriggerSource.QuickFix)}}e.QuickFixAction=t;class a extends k.EditorCommand{constructor(){super({id:D.codeActionCommandId,precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),description:{description:"Trigger a code action",args:[{name:"args",schema:i}]}})}runEditorCommand(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Empty,apply:"ifSingle"});return n(p,typeof m?.kind=="string"?v.preferred?S.localize(8,null,m.kind):S.localize(9,null,m.kind):v.preferred?S.localize(10,null):S.localize(11,null),{include:v.kind,includeSourceActions:!0,onlyIncludePreferredActions:v.preferred},v.apply)}}e.CodeActionCommand=a;class u extends k.EditorAction{constructor(){super({id:D.refactorCommandId,label:S.localize(12,null),alias:"Refactor...",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.Refactor))},description:{description:"Refactor...",args:[{name:"args",schema:i}]}})}run(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Refactor,apply:"never"});return n(p,typeof m?.kind=="string"?v.preferred?S.localize(13,null,m.kind):S.localize(14,null,m.kind):v.preferred?S.localize(15,null):S.localize(16,null),{include:_.CodeActionKind.Refactor.contains(v.kind)?v.kind:_.CodeActionKind.None,onlyIncludePreferredActions:v.preferred},v.apply,_.CodeActionTriggerSource.Refactor)}}e.RefactorAction=u;class h extends k.EditorAction{constructor(){super({id:D.sourceActionCommandId,label:S.localize(17,null),alias:"Source Action...",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.Source))},description:{description:"Source Action...",args:[{name:"args",schema:i}]}})}run(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Source,apply:"never"});return n(p,typeof m?.kind=="string"?v.preferred?S.localize(18,null,m.kind):S.localize(19,null,m.kind):v.preferred?S.localize(20,null):S.localize(21,null),{include:_.CodeActionKind.Source.contains(v.kind)?v.kind:_.CodeActionKind.None,includeSourceActions:!0,onlyIncludePreferredActions:v.preferred},v.apply,_.CodeActionTriggerSource.SourceAction)}}e.SourceAction=h;class r extends k.EditorAction{constructor(){super({id:D.organizeImportsCommandId,label:S.localize(22,null),alias:"Organize Imports",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.SourceOrganizeImports)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1581,weight:100}})}run(l,p){return n(p,S.localize(23,null),{include:_.CodeActionKind.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",_.CodeActionTriggerSource.OrganizeImports)}}e.OrganizeImportsAction=r;class c extends k.EditorAction{constructor(){super({id:D.fixAllCommandId,label:S.localize(24,null),alias:"Fix All",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.SourceFixAll))})}run(l,p){return n(p,S.localize(25,null),{include:_.CodeActionKind.SourceFixAll,includeSourceActions:!0},"ifSingle",_.CodeActionTriggerSource.FixAll)}}e.FixAllAction=c;class o extends k.EditorAction{constructor(){super({id:D.autoFixCommandId,label:S.localize(26,null),alias:"Auto Fix...",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.QuickFix)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(l,p){return n(p,S.localize(27,null),{include:_.CodeActionKind.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",_.CodeActionTriggerSource.AutoFix)}}e.AutoFixAction=o}),define(ne[828],se([1,0,16,241,827,250,350,639,98,37]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(D.CodeActionController.ID,D.CodeActionController,3),(0,L.registerEditorContribution)(S.LightBulbWidget.ID,S.LightBulbWidget,4),(0,L.registerEditorAction)(y.QuickFixAction),(0,L.registerEditorAction)(y.RefactorAction),(0,L.registerEditorAction)(y.SourceAction),(0,L.registerEditorAction)(y.OrganizeImportsAction),(0,L.registerEditorAction)(y.AutoFixAction),(0,L.registerEditorAction)(y.FixAllAction),(0,L.registerEditorCommand)(new y.CodeActionCommand),g.Registry.as(_.Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({},k.editorConfigurationBaseNode),{properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:f.localize(0,null),default:!0}}}))}),define(ne[829],se([1,0,7,60,583,39,9,2,105]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuHandler=void 0;class g{constructor(s,i,n,t){this.contextViewService=s,this.telemetryService=i,this.notificationService=n,this.keybindingService=t,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(s){this.options=s}showContextMenu(s){const i=s.getActions();if(!i.length)return;this.focusToReturn=document.activeElement;let n;const t=(0,L.isHTMLElement)(s.domForShadowRoot)?s.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>s.getAnchor(),canRelayout:!1,anchorAlignment:s.anchorAlignment,anchorAxisAlignment:s.anchorAxisAlignment,render:a=>{var u;this.lastContainer=a;const h=s.getMenuClassName?s.getMenuClassName():"";h&&(a.className+=" "+h),this.options.blockMouse&&(this.block=a.appendChild((0,L.$)(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",(u=this.blockDisposable)===null||u===void 0||u.dispose(),this.blockDisposable=(0,L.addDisposableListener)(this.block,L.EventType.MOUSE_DOWN,o=>o.stopPropagation()));const r=new f.DisposableStore,c=s.actionRunner||new D.ActionRunner;return c.onWillRun(o=>this.onActionRun(o,!s.skipTelemetry),this,r),c.onDidRun(this.onDidActionRun,this,r),n=new y.Menu(a,i,{actionViewItemProvider:s.getActionViewItem,context:s.getActionsContext?s.getActionsContext():null,actionRunner:c,getKeyBinding:s.getKeyBinding?s.getKeyBinding:o=>this.keybindingService.lookupKeybinding(o.id)},_.defaultMenuStyles),n.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,r),n.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,r),r.add((0,L.addDisposableListener)(window,L.EventType.BLUR,()=>this.contextViewService.hideContextView(!0))),r.add((0,L.addDisposableListener)(window,L.EventType.MOUSE_DOWN,o=>{if(o.defaultPrevented)return;const d=new k.StandardMouseEvent(o);let l=d.target;if(!d.rightButton){for(;l;){if(l===a)return;l=l.parentElement}this.contextViewService.hideContextView(!0)}})),(0,f.combinedDisposable)(r,n)},focus:()=>{n?.focus(!!s.autoSelectFirstItem)},onHide:a=>{var u,h,r;(u=s.onHide)===null||u===void 0||u.call(s,!!a),this.block&&(this.block.remove(),this.block=null),(h=this.blockDisposable)===null||h===void 0||h.dispose(),this.blockDisposable=null,this.lastContainer&&((0,L.getActiveElement)()===this.lastContainer||(0,L.isAncestor)((0,L.getActiveElement)(),this.lastContainer))&&((r=this.focusToReturn)===null||r===void 0||r.focus()),this.lastContainer=null}},t,!!t)}onActionRun(s,i){i&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:s.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(s){s.error&&!(0,S.isCancellationError)(s.error)&&this.notificationService.error(s.error)}}e.ContextMenuHandler=g}),define(ne[191],se([1,0,7,578,114,579,184,586,585,316,6,2,728,28,98,15,238,57,8,34,37,105]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkbenchCompressibleAsyncDataTree=e.WorkbenchAsyncDataTree=e.WorkbenchDataTree=e.WorkbenchCompressibleObjectTree=e.WorkbenchObjectTree=e.WorkbenchTable=e.WorkbenchPagedList=e.WorkbenchList=e.WorkbenchTreeFindOpen=e.WorkbenchTreeElementHasChild=e.WorkbenchTreeElementCanExpand=e.WorkbenchTreeElementHasParent=e.WorkbenchTreeElementCanCollapse=e.WorkbenchListSupportsFind=e.WorkbenchListSelectionNavigation=e.WorkbenchListMultiSelection=e.WorkbenchListDoubleSelection=e.WorkbenchListHasSelectionOrFocus=e.WorkbenchListFocusContextKey=e.WorkbenchListSupportsMultiSelectContextKey=e.RawWorkbenchListFocusContextKey=e.WorkbenchListScrollAtBottomContextKey=e.WorkbenchListScrollAtTopContextKey=e.RawWorkbenchListScrollAtBoundaryContextKey=e.ListService=e.IListService=void 0,e.IListService=(0,r.createDecorator)("listService");class l{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new s.DisposableStore,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(oe){var ge,ve;oe!==this._lastFocusedWidget&&((ge=this._lastFocusedWidget)===null||ge===void 0||ge.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=oe,(ve=this._lastFocusedWidget)===null||ve===void 0||ve.getHTMLElement().classList.add("last-focused"))}register(oe,ge){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new y.DefaultStyleController((0,L.createStyleSheet)(),"").style(d.defaultListStyles)),this.lists.some(Se=>Se.widget===oe))throw new Error("Cannot register the same widget multiple times");const ve={widget:oe,extraContextKeys:ge};return this.lists.push(ve),oe.getHTMLElement()===document.activeElement&&this.setLastFocusedList(oe),(0,s.combinedDisposable)(oe.onDidFocus(()=>this.setLastFocusedList(oe)),(0,s.toDisposable)(()=>this.lists.splice(this.lists.indexOf(ve),1)),oe.onDidDispose(()=>{this.lists=this.lists.filter(Se=>Se!==ve),this._lastFocusedWidget===oe&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}e.ListService=l,e.RawWorkbenchListScrollAtBoundaryContextKey=new a.RawContextKey("listScrollAtBoundary","none"),e.WorkbenchListScrollAtTopContextKey=a.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("top"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("both")),e.WorkbenchListScrollAtBottomContextKey=a.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("bottom"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("both")),e.RawWorkbenchListFocusContextKey=new a.RawContextKey("listFocus",!0),e.WorkbenchListSupportsMultiSelectContextKey=new a.RawContextKey("listSupportsMultiselect",!0),e.WorkbenchListFocusContextKey=a.ContextKeyExpr.and(e.RawWorkbenchListFocusContextKey,a.ContextKeyExpr.not(u.InputFocusedContextKey)),e.WorkbenchListHasSelectionOrFocus=new a.RawContextKey("listHasSelectionOrFocus",!1),e.WorkbenchListDoubleSelection=new a.RawContextKey("listDoubleSelection",!1),e.WorkbenchListMultiSelection=new a.RawContextKey("listMultiSelection",!1),e.WorkbenchListSelectionNavigation=new a.RawContextKey("listSelectionNavigation",!1),e.WorkbenchListSupportsFind=new a.RawContextKey("listSupportsFind",!0),e.WorkbenchTreeElementCanCollapse=new a.RawContextKey("treeElementCanCollapse",!1),e.WorkbenchTreeElementHasParent=new a.RawContextKey("treeElementHasParent",!1),e.WorkbenchTreeElementCanExpand=new a.RawContextKey("treeElementCanExpand",!1),e.WorkbenchTreeElementHasChild=new a.RawContextKey("treeElementHasChild",!1),e.WorkbenchTreeFindOpen=new a.RawContextKey("treeFindOpen",!1);const p="listTypeNavigationMode",m="listAutomaticKeyboardNavigation";function v(re,oe){const ge=re.createScoped(oe.getHTMLElement());return e.RawWorkbenchListFocusContextKey.bindTo(ge),ge}function b(re,oe){const ge=e.RawWorkbenchListScrollAtBoundaryContextKey.bindTo(re),ve=()=>{const Se=oe.scrollTop===0,Le=oe.scrollHeight-oe.renderHeight-oe.scrollTop<1;Se&&Le?ge.set("both"):Se?ge.set("top"):Le?ge.set("bottom"):ge.set("none")};return ve(),oe.onDidScroll(ve)}const w="workbench.list.multiSelectModifier",E="workbench.list.openMode",I="workbench.list.horizontalScrolling",M="workbench.list.defaultFindMode",P="workbench.list.typeNavigationMode",x="workbench.list.keyboardNavigation",T="workbench.list.scrollByPage",A="workbench.list.defaultFindMatchType",N="workbench.tree.indent",F="workbench.tree.renderIndentGuides",O="workbench.list.smoothScrolling",W="workbench.list.mouseWheelScrollSensitivity",U="workbench.list.fastScrollSensitivity",j="workbench.tree.expandMode";function R(re){return re.getValue(w)==="alt"}class K extends s.Disposable{constructor(oe){super(),this.configurationService=oe,this.useAltAsMultipleSelectionModifier=R(oe),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(oe=>{oe.affectsConfiguration(w)&&(this.useAltAsMultipleSelectionModifier=R(this.configurationService))}))}isSelectionSingleChangeEvent(oe){return this.useAltAsMultipleSelectionModifier?oe.browserEvent.altKey:(0,y.isSelectionSingleChangeEvent)(oe)}isSelectionRangeChangeEvent(oe){return(0,y.isSelectionRangeChangeEvent)(oe)}}function G(re,oe){var ge;const ve=re.get(n.IConfigurationService),Se=re.get(c.IKeybindingService),Le=new s.DisposableStore;return[Object.assign(Object.assign({},oe),{keyboardNavigationDelegate:{mightProducePrintableCharacter(ye){return Se.mightProducePrintableCharacter(ye)}},smoothScrolling:!!ve.getValue(O),mouseWheelScrollSensitivity:ve.getValue(W),fastScrollSensitivity:ve.getValue(U),multipleSelectionController:(ge=oe.multipleSelectionController)!==null&&ge!==void 0?ge:Le.add(new K(ve)),keyboardNavigationEventFilter:ie(Se),scrollByPage:!!ve.getValue(T)}),Le]}let Z=class extends y.List{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const Pe=typeof Le.horizontalScrolling<"u"?Le.horizontalScrolling:!!Ee.getValue(I),[Fe,_e]=Me.invokeFunction(G,Le);super(oe,ge,ve,Se,Object.assign(Object.assign({keyboardSupport:!1},Fe),{horizontalScrolling:Pe})),this.disposables.add(_e),this.contextKeyService=v(De,this),this.disposables.add(b(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Le.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Le.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=Le.horizontalScrolling,this._useAltAsMultipleSelectionModifier=R(Ee),this.disposables.add(this.contextKeyService),this.disposables.add(ye.register(this)),this.updateStyles(Le.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const le=this.getSelection(),pe=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(le.length>0||pe.length>0),this.listMultiSelection.set(le.length>1),this.listDoubleSelection.set(le.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const le=this.getSelection(),pe=this.getFocus();this.listHasSelectionOrFocus.set(le.length>0||pe.length>0)})),this.disposables.add(Ee.onDidChangeConfiguration(le=>{le.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Ee));let pe={};if(le.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ce=!!Ee.getValue(I);pe=Object.assign(Object.assign({},pe),{horizontalScrolling:Ce})}if(le.affectsConfiguration(T)){const Ce=!!Ee.getValue(T);pe=Object.assign(Object.assign({},pe),{scrollByPage:Ce})}if(le.affectsConfiguration(O)){const Ce=!!Ee.getValue(O);pe=Object.assign(Object.assign({},pe),{smoothScrolling:Ce})}if(le.affectsConfiguration(W)){const Ce=Ee.getValue(W);pe=Object.assign(Object.assign({},pe),{mouseWheelScrollSensitivity:Ce})}if(le.affectsConfiguration(U)){const Ce=Ee.getValue(U);pe=Object.assign(Object.assign({},pe),{fastScrollSensitivity:Ce})}Object.keys(pe).length>0&&this.updateOptions(pe)})),this.navigator=new B(this,Object.assign({configurationService:Ee},Le)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}};e.WorkbenchList=Z,e.WorkbenchList=Z=ke([fe(5,a.IContextKeyService),fe(6,e.IListService),fe(7,n.IConfigurationService),fe(8,r.IInstantiationService)],Z);let J=class extends k.PagedList{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const Pe=typeof Le.horizontalScrolling<"u"?Le.horizontalScrolling:!!Ee.getValue(I),[Fe,_e]=Me.invokeFunction(G,Le);super(oe,ge,ve,Se,Object.assign(Object.assign({keyboardSupport:!1},Fe),{horizontalScrolling:Pe})),this.disposables=new s.DisposableStore,this.disposables.add(_e),this.contextKeyService=v(De,this),this.disposables.add(b(this.contextKeyService,this.widget)),this.horizontalScrolling=Le.horizontalScrolling,this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Le.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Le.selectionNavigation),this._useAltAsMultipleSelectionModifier=R(Ee),this.disposables.add(this.contextKeyService),this.disposables.add(ye.register(this)),this.updateStyles(Le.overrideStyles),this.disposables.add(Ee.onDidChangeConfiguration(le=>{le.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Ee));let pe={};if(le.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ce=!!Ee.getValue(I);pe=Object.assign(Object.assign({},pe),{horizontalScrolling:Ce})}if(le.affectsConfiguration(T)){const Ce=!!Ee.getValue(T);pe=Object.assign(Object.assign({},pe),{scrollByPage:Ce})}if(le.affectsConfiguration(O)){const Ce=!!Ee.getValue(O);pe=Object.assign(Object.assign({},pe),{smoothScrolling:Ce})}if(le.affectsConfiguration(W)){const Ce=Ee.getValue(W);pe=Object.assign(Object.assign({},pe),{mouseWheelScrollSensitivity:Ce})}if(le.affectsConfiguration(U)){const Ce=Ee.getValue(U);pe=Object.assign(Object.assign({},pe),{fastScrollSensitivity:Ce})}Object.keys(pe).length>0&&this.updateOptions(pe)})),this.navigator=new B(this,Object.assign({configurationService:Ee},Le)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchPagedList=J,e.WorkbenchPagedList=J=ke([fe(5,a.IContextKeyService),fe(6,e.IListService),fe(7,n.IConfigurationService),fe(8,r.IInstantiationService)],J);let X=class extends D.Table{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const Fe=typeof De.horizontalScrolling<"u"?De.horizontalScrolling:!!Me.getValue(I),[_e,me]=Pe.invokeFunction(G,De);super(oe,ge,ve,Se,Le,Object.assign(Object.assign({keyboardSupport:!1},_e),{horizontalScrolling:Fe})),this.disposables.add(me),this.contextKeyService=v(ye,this),this.disposables.add(b(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(De.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!De.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=De.horizontalScrolling,this._useAltAsMultipleSelectionModifier=R(Me),this.disposables.add(this.contextKeyService),this.disposables.add(Ee.register(this)),this.updateStyles(De.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const pe=this.getSelection(),Ce=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(pe.length>0||Ce.length>0),this.listMultiSelection.set(pe.length>1),this.listDoubleSelection.set(pe.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const pe=this.getSelection(),Ce=this.getFocus();this.listHasSelectionOrFocus.set(pe.length>0||Ce.length>0)})),this.disposables.add(Me.onDidChangeConfiguration(pe=>{pe.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Me));let Ce={};if(pe.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const be=!!Me.getValue(I);Ce=Object.assign(Object.assign({},Ce),{horizontalScrolling:be})}if(pe.affectsConfiguration(T)){const be=!!Me.getValue(T);Ce=Object.assign(Object.assign({},Ce),{scrollByPage:be})}if(pe.affectsConfiguration(O)){const be=!!Me.getValue(O);Ce=Object.assign(Object.assign({},Ce),{smoothScrolling:be})}if(pe.affectsConfiguration(W)){const be=Me.getValue(W);Ce=Object.assign(Object.assign({},Ce),{mouseWheelScrollSensitivity:be})}if(pe.affectsConfiguration(U)){const be=Me.getValue(U);Ce=Object.assign(Object.assign({},Ce),{fastScrollSensitivity:be})}Object.keys(Ce).length>0&&this.updateOptions(Ce)})),this.navigator=new V(this,Object.assign({configurationService:Me},De)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchTable=X,e.WorkbenchTable=X=ke([fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService),fe(9,r.IInstantiationService)],X);class H extends s.Disposable{constructor(oe,ge){var ve;super(),this.widget=oe,this._onDidOpen=this._register(new C.Emitter),this.onDidOpen=this._onDidOpen.event,this._register(C.Event.filter(this.widget.onDidChangeSelection,Se=>Se.browserEvent instanceof KeyboardEvent)(Se=>this.onSelectionFromKeyboard(Se))),this._register(this.widget.onPointer(Se=>this.onPointer(Se.element,Se.browserEvent))),this._register(this.widget.onMouseDblClick(Se=>this.onMouseDblClick(Se.element,Se.browserEvent))),typeof ge?.openOnSingleClick!="boolean"&&ge?.configurationService?(this.openOnSingleClick=ge?.configurationService.getValue(E)!=="doubleClick",this._register(ge?.configurationService.onDidChangeConfiguration(Se=>{Se.affectsConfiguration(E)&&(this.openOnSingleClick=ge?.configurationService.getValue(E)!=="doubleClick")}))):this.openOnSingleClick=(ve=ge?.openOnSingleClick)!==null&&ve!==void 0?ve:!0}onSelectionFromKeyboard(oe){if(oe.elements.length!==1)return;const ge=oe.browserEvent,ve=typeof ge.preserveFocus=="boolean"?ge.preserveFocus:!0,Se=typeof ge.pinned=="boolean"?ge.pinned:!ve,Le=!1;this._open(this.getSelectedElement(),ve,Se,Le,oe.browserEvent)}onPointer(oe,ge){if(!this.openOnSingleClick||ge.detail===2)return;const Se=ge.button===1,Le=!0,De=Se,ye=ge.ctrlKey||ge.metaKey||ge.altKey;this._open(oe,Le,De,ye,ge)}onMouseDblClick(oe,ge){if(!ge)return;const ve=ge.target;if(ve.classList.contains("monaco-tl-twistie")||ve.classList.contains("monaco-icon-label")&&ve.classList.contains("folder-icon")&&ge.offsetX<16)return;const Le=!1,De=!0,ye=ge.ctrlKey||ge.metaKey||ge.altKey;this._open(oe,Le,De,ye,ge)}_open(oe,ge,ve,Se,Le){oe&&this._onDidOpen.fire({editorOptions:{preserveFocus:ge,pinned:ve,revealIfVisible:!0},sideBySide:Se,element:oe,browserEvent:Le})}}class B extends H{constructor(oe,ge){super(oe,ge),this.widget=oe}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class V extends H{constructor(oe,ge){super(oe,ge)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Y extends H{constructor(oe,ge){super(oe,ge)}getSelectedElement(){var oe;return(oe=this.widget.getSelection()[0])!==null&&oe!==void 0?oe:void 0}}function ie(re){let oe=!1;return ge=>{if(ge.toKeyCodeChord().isModifierKey())return!1;if(oe)return oe=!1,!1;const ve=re.softDispatch(ge,ge.target);return ve.kind===1?(oe=!0,!1):(oe=!1,ve.kind===0)}}let ae=class extends g.ObjectTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const{options:Pe,getTypeNavigationMode:Fe,disposable:_e}=De.invokeFunction(z,Le);super(oe,ge,ve,Se,Pe),this.disposables.add(_e),this.internals=new ee(this,Le,Fe,Le.overrideStyles,ye,Ee,Me),this.disposables.add(this.internals)}updateOptions(oe){super.updateOptions(oe),this.internals.updateOptions(oe)}};e.WorkbenchObjectTree=ae,e.WorkbenchObjectTree=ae=ke([fe(5,r.IInstantiationService),fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService)],ae);let ce=class extends g.CompressibleObjectTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const{options:Pe,getTypeNavigationMode:Fe,disposable:_e}=De.invokeFunction(z,Le);super(oe,ge,ve,Se,Pe),this.disposables.add(_e),this.internals=new ee(this,Le,Fe,Le.overrideStyles,ye,Ee,Me),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchCompressibleObjectTree=ce,e.WorkbenchCompressibleObjectTree=ce=ke([fe(5,r.IInstantiationService),fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService)],ce);let de=class extends _.DataTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const{options:Fe,getTypeNavigationMode:_e,disposable:me}=ye.invokeFunction(z,De);super(oe,ge,ve,Se,Le,Fe),this.disposables.add(me),this.internals=new ee(this,De,_e,De.overrideStyles,Ee,Me,Pe),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchDataTree=de,e.WorkbenchDataTree=de=ke([fe(6,r.IInstantiationService),fe(7,a.IContextKeyService),fe(8,e.IListService),fe(9,n.IConfigurationService)],de);let he=class extends f.AsyncDataTree{get onDidOpen(){return this.internals.onDidOpen}constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const{options:Fe,getTypeNavigationMode:_e,disposable:me}=ye.invokeFunction(z,De);super(oe,ge,ve,Se,Le,Fe),this.disposables.add(me),this.internals=new ee(this,De,_e,De.overrideStyles,Ee,Me,Pe),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchAsyncDataTree=he,e.WorkbenchAsyncDataTree=he=ke([fe(6,r.IInstantiationService),fe(7,a.IContextKeyService),fe(8,e.IListService),fe(9,n.IConfigurationService)],he);let ue=class extends f.CompressibleAsyncDataTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe){const{options:_e,getTypeNavigationMode:me,disposable:le}=Ee.invokeFunction(z,ye);super(oe,ge,ve,Se,Le,De,_e),this.disposables.add(le),this.internals=new ee(this,ye,me,ye.overrideStyles,Me,Pe,Fe),this.disposables.add(this.internals)}updateOptions(oe){super.updateOptions(oe),this.internals.updateOptions(oe)}};e.WorkbenchCompressibleAsyncDataTree=ue,e.WorkbenchCompressibleAsyncDataTree=ue=ke([fe(7,r.IInstantiationService),fe(8,a.IContextKeyService),fe(9,e.IListService),fe(10,n.IConfigurationService)],ue);function te(re){const oe=re.getValue(M);if(oe==="highlight")return S.TreeFindMode.Highlight;if(oe==="filter")return S.TreeFindMode.Filter;const ge=re.getValue(x);if(ge==="simple"||ge==="highlight")return S.TreeFindMode.Highlight;if(ge==="filter")return S.TreeFindMode.Filter}function q(re){const oe=re.getValue(A);if(oe==="fuzzy")return S.TreeFindMatchType.Fuzzy;if(oe==="contiguous")return S.TreeFindMatchType.Contiguous}function z(re,oe){var ge;const ve=re.get(n.IConfigurationService),Se=re.get(h.IContextViewService),Le=re.get(a.IContextKeyService),De=re.get(r.IInstantiationService),ye=()=>{const me=Le.getContextKeyValue(p);if(me==="automatic")return y.TypeNavigationMode.Automatic;if(me==="trigger"||Le.getContextKeyValue(m)===!1)return y.TypeNavigationMode.Trigger;const pe=ve.getValue(P);if(pe==="automatic")return y.TypeNavigationMode.Automatic;if(pe==="trigger")return y.TypeNavigationMode.Trigger},Ee=oe.horizontalScrolling!==void 0?oe.horizontalScrolling:!!ve.getValue(I),[Me,Pe]=De.invokeFunction(G,oe),Fe=oe.paddingBottom,_e=oe.renderIndentGuides!==void 0?oe.renderIndentGuides:ve.getValue(F);return{getTypeNavigationMode:ye,disposable:Pe,options:Object.assign(Object.assign({keyboardSupport:!1},Me),{indent:typeof ve.getValue(N)=="number"?ve.getValue(N):void 0,renderIndentGuides:_e,smoothScrolling:!!ve.getValue(O),defaultFindMode:te(ve),defaultFindMatchType:q(ve),horizontalScrolling:Ee,scrollByPage:!!ve.getValue(T),paddingBottom:Fe,hideTwistiesOfChildlessElements:oe.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:(ge=oe.expandOnlyOnTwistieClick)!==null&&ge!==void 0?ge:ve.getValue(j)==="doubleClick",contextViewProvider:Se,findWidgetStyles:d.defaultFindWidgetStyles})}}let ee=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(oe,ge,ve,Se,Le,De,ye){var Ee;this.tree=oe,this.disposables=[],this.contextKeyService=v(Le,oe),this.disposables.push(b(this.contextKeyService,oe)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(ge.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!ge.selectionNavigation),this.listSupportFindWidget=e.WorkbenchListSupportsFind.bindTo(this.contextKeyService),this.listSupportFindWidget.set((Ee=ge.findWidgetEnabled)!==null&&Ee!==void 0?Ee:!0),this.hasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.hasDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.hasMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.treeElementCanCollapse=e.WorkbenchTreeElementCanCollapse.bindTo(this.contextKeyService),this.treeElementHasParent=e.WorkbenchTreeElementHasParent.bindTo(this.contextKeyService),this.treeElementCanExpand=e.WorkbenchTreeElementCanExpand.bindTo(this.contextKeyService),this.treeElementHasChild=e.WorkbenchTreeElementHasChild.bindTo(this.contextKeyService),this.treeFindOpen=e.WorkbenchTreeFindOpen.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=R(ye),this.updateStyleOverrides(Se);const Pe=()=>{const _e=oe.getFocus()[0];if(!_e)return;const me=oe.getNode(_e);this.treeElementCanCollapse.set(me.collapsible&&!me.collapsed),this.treeElementHasParent.set(!!oe.getParentElement(_e)),this.treeElementCanExpand.set(me.collapsible&&me.collapsed),this.treeElementHasChild.set(!!oe.getFirstElementChild(_e))},Fe=new Set;Fe.add(p),Fe.add(m),this.disposables.push(this.contextKeyService,De.register(oe),oe.onDidChangeSelection(()=>{const _e=oe.getSelection(),me=oe.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(_e.length>0||me.length>0),this.hasMultiSelection.set(_e.length>1),this.hasDoubleSelection.set(_e.length===2)})}),oe.onDidChangeFocus(()=>{const _e=oe.getSelection(),me=oe.getFocus();this.hasSelectionOrFocus.set(_e.length>0||me.length>0),Pe()}),oe.onDidChangeCollapseState(Pe),oe.onDidChangeModel(Pe),oe.onDidChangeFindOpenState(_e=>this.treeFindOpen.set(_e)),ye.onDidChangeConfiguration(_e=>{let me={};if(_e.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(ye)),_e.affectsConfiguration(N)){const le=ye.getValue(N);me=Object.assign(Object.assign({},me),{indent:le})}if(_e.affectsConfiguration(F)&&ge.renderIndentGuides===void 0){const le=ye.getValue(F);me=Object.assign(Object.assign({},me),{renderIndentGuides:le})}if(_e.affectsConfiguration(O)){const le=!!ye.getValue(O);me=Object.assign(Object.assign({},me),{smoothScrolling:le})}if(_e.affectsConfiguration(M)||_e.affectsConfiguration(x)){const le=te(ye);me=Object.assign(Object.assign({},me),{defaultFindMode:le})}if(_e.affectsConfiguration(P)||_e.affectsConfiguration(x)){const le=ve();me=Object.assign(Object.assign({},me),{typeNavigationMode:le})}if(_e.affectsConfiguration(A)){const le=q(ye);me=Object.assign(Object.assign({},me),{defaultFindMatchType:le})}if(_e.affectsConfiguration(I)&&ge.horizontalScrolling===void 0){const le=!!ye.getValue(I);me=Object.assign(Object.assign({},me),{horizontalScrolling:le})}if(_e.affectsConfiguration(T)){const le=!!ye.getValue(T);me=Object.assign(Object.assign({},me),{scrollByPage:le})}if(_e.affectsConfiguration(j)&&ge.expandOnlyOnTwistieClick===void 0&&(me=Object.assign(Object.assign({},me),{expandOnlyOnTwistieClick:ye.getValue(j)==="doubleClick"})),_e.affectsConfiguration(W)){const le=ye.getValue(W);me=Object.assign(Object.assign({},me),{mouseWheelScrollSensitivity:le})}if(_e.affectsConfiguration(U)){const le=ye.getValue(U);me=Object.assign(Object.assign({},me),{fastScrollSensitivity:le})}Object.keys(me).length>0&&oe.updateOptions(me)}),this.contextKeyService.onDidChangeContext(_e=>{_e.affectsSome(Fe)&&oe.updateOptions({typeNavigationMode:ve()})})),this.navigator=new Y(oe,Object.assign({configurationService:ye},ge)),this.disposables.push(this.navigator)}updateOptions(oe){oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyleOverrides(oe){this.tree.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables=(0,s.dispose)(this.disposables)}};ee=ke([fe(4,a.IContextKeyService),fe(5,e.IListService),fe(6,n.IConfigurationService)],ee),o.Registry.as(t.Extensions.Configuration).registerConfiguration({id:"workbench",order:7,title:(0,i.localize)(0,null),type:"object",properties:{[w]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[(0,i.localize)(1,null),(0,i.localize)(2,null)],default:"ctrlCmd",description:(0,i.localize)(3,null)},[E]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,i.localize)(4,null)},[I]:{type:"boolean",default:!1,description:(0,i.localize)(5,null)},[T]:{type:"boolean",default:!1,description:(0,i.localize)(6,null)},[N]:{type:"number",default:8,minimum:4,maximum:40,description:(0,i.localize)(7,null)},[F]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:(0,i.localize)(8,null)},[O]:{type:"boolean",default:!1,description:(0,i.localize)(9,null)},[W]:{type:"number",default:1,markdownDescription:(0,i.localize)(10,null)},[U]:{type:"number",default:5,markdownDescription:(0,i.localize)(11,null)},[M]:{type:"string",enum:["highlight","filter"],enumDescriptions:[(0,i.localize)(12,null),(0,i.localize)(13,null)],default:"highlight",description:(0,i.localize)(14,null)},[x]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[(0,i.localize)(15,null),(0,i.localize)(16,null),(0,i.localize)(17,null)],default:"highlight",description:(0,i.localize)(18,null),deprecated:!0,deprecationMessage:(0,i.localize)(19,null)},[A]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[(0,i.localize)(20,null),(0,i.localize)(21,null)],default:"fuzzy",description:(0,i.localize)(22,null)},[j]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,i.localize)(23,null)},[P]:{type:"string",enum:["automatic","trigger"],default:"automatic",description:(0,i.localize)(24,null)}}})}),define(ne[62],se([1,0,13,25,26,6,20,22,737,240,37]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.spinningLoading=e.syncing=e.gotoNextLocation=e.gotoPreviousLocation=e.widgetClose=e.iconsSchemaId=e.getIconRegistry=e.registerIcon=e.IconFontDefinition=e.IconContribution=e.Extensions=void 0,e.Extensions={IconContribution:"base.contributions.icons"};var s;(function(o){function d(l,p){let m=l.defaults;for(;y.ThemeIcon.isThemeIcon(m);){const v=t.getIcon(m.id);if(!v)return;m=v.defaults}return m}o.getDefinition=d})(s||(e.IconContribution=s={}));var i;(function(o){function d(p){return{weight:p.weight,style:p.style,src:p.src.map(m=>({format:m.format,location:m.location.toString()}))}}o.toJSONObject=d;function l(p){const m=v=>(0,S.isString)(v)?v:void 0;if(p&&Array.isArray(p.src)&&p.src.every(v=>(0,S.isString)(v.format)&&(0,S.isString)(v.location)))return{weight:m(p.weight),style:m(p.style),src:p.src.map(v=>({format:v.format,location:f.URI.parse(v.location)}))}}o.fromJSONObject=l})(i||(e.IconFontDefinition=i={}));class n{constructor(){this._onDidChange=new D.Emitter,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:(0,_.localize)(0,null)},fontCharacter:{type:"string",description:(0,_.localize)(1,null)}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:`^${y.ThemeIcon.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(d,l,p,m){const v=this.iconsById[d];if(v){if(p&&!v.description){v.description=p,this.iconSchema.properties[d].markdownDescription=`${p} $(${d})`;const E=this.iconReferenceSchema.enum.indexOf(d);E!==-1&&(this.iconReferenceSchema.enumDescriptions[E]=p),this._onDidChange.fire()}return v}const b={id:d,description:p,defaults:l,deprecationMessage:m};this.iconsById[d]=b;const w={$ref:"#/definitions/icons"};return m&&(w.deprecationMessage=m),p&&(w.markdownDescription=`${p}: $(${d})`),this.iconSchema.properties[d]=w,this.iconReferenceSchema.enum.push(d),this.iconReferenceSchema.enumDescriptions.push(p||""),this._onDidChange.fire(),{id:d}}getIcons(){return Object.keys(this.iconsById).map(d=>this.iconsById[d])}getIcon(d){return this.iconsById[d]}getIconSchema(){return this.iconSchema}toString(){const d=(v,b)=>v.id.localeCompare(b.id),l=v=>{for(;y.ThemeIcon.isThemeIcon(v.defaults);)v=this.iconsById[v.defaults.id];return`codicon codicon-${v?v.id:""}`},p=[];p.push("| preview | identifier | default codicon ID | description"),p.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const m=Object.keys(this.iconsById).map(v=>this.iconsById[v]);for(const v of m.filter(b=>!!b.description).sort(d))p.push(`||${v.id}|${y.ThemeIcon.isThemeIcon(v.defaults)?v.defaults.id:v.id}|${v.description||""}|`);p.push("| preview | identifier "),p.push("| ----------- | --------------------------------- |");for(const v of m.filter(b=>!y.ThemeIcon.isThemeIcon(b.defaults)).sort(d))p.push(`||${v.id}|`);return p.join(` -`)}}const t=new n;C.Registry.add(e.Extensions.IconContribution,t);function a(o,d,l,p){return t.registerIcon(o,d,l,p)}e.registerIcon=a;function u(){return t}e.getIconRegistry=u;function h(){const o=(0,k.getCodiconFontCharacters)();for(const d in o){const l="\\"+o[d].toString(16);t.registerIcon(d,{fontCharacter:l})}}h(),e.iconsSchemaId="vscode://schemas/icons";const r=C.Registry.as(g.Extensions.JSONContribution);r.registerSchema(e.iconsSchemaId,t.getIconSchema());const c=new L.RunOnceScheduler(()=>r.notifySchemaChanged(e.iconsSchemaId),200);t.onDidChange(()=>{c.isScheduled()||c.schedule()}),e.widgetClose=a("widget-close",k.Codicon.close,(0,_.localize)(2,null)),e.gotoPreviousLocation=a("goto-previous-location",k.Codicon.arrowUp,(0,_.localize)(3,null)),e.gotoNextLocation=a("goto-next-location",k.Codicon.arrowDown,(0,_.localize)(4,null)),e.syncing=y.ThemeIcon.modify(k.Codicon.sync,"spin"),e.spinningLoading=y.ThemeIcon.modify(k.Codicon.loading,"spin")}),define(ne[354],se([1,0,7,35,89,68,75,39,25,2,26,59,36,12,41,86,95,67,615,116,28,62,434]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){"use strict";var l;Object.defineProperty(e,"__esModule",{value:!0}),e.DiffReview=void 0;const p=3;class m{constructor(P,x,T,A){this.originalLineStart=P,this.originalLineEnd=x,this.modifiedLineStart=T,this.modifiedLineEnd=A}getType(){return this.originalLineStart===0?1:this.modifiedLineStart===0?2:0}}class v{constructor(P){this.entries=P}}const b=(0,d.registerIcon)("diff-review-insert",_.Codicon.add,r.localize(0,null)),w=(0,d.registerIcon)("diff-review-remove",_.Codicon.remove,r.localize(1,null)),E=(0,d.registerIcon)("diff-review-close",_.Codicon.close,r.localize(2,null));let I=l=class extends g.Disposable{constructor(P,x,T,A){super(),this._languageService=x,this._audioCueService=T,this._configurationService=A,this._width=0,this._diffEditor=P,this._isVisible=!1,this.shadow=(0,k.createFastDomNode)(document.createElement("div")),this.shadow.setClassName("diff-review-shadow"),this.actionBarContainer=(0,k.createFastDomNode)(document.createElement("div")),this.actionBarContainer.setClassName("diff-review-actions"),this._actionBar=this._register(new D.ActionBar(this.actionBarContainer.domNode)),this._actionBar.push(new f.Action("diffreview.close",r.localize(3,null),"close-diff-review "+C.ThemeIcon.asClassName(E),!0,()=>we(this,void 0,void 0,function*(){return this.hide()})),{label:!1,icon:!0}),this.domNode=(0,k.createFastDomNode)(document.createElement("div")),this.domNode.setClassName("diff-review monaco-editor-background"),this._content=(0,k.createFastDomNode)(document.createElement("div")),this._content.setClassName("diff-review-content"),this._content.setAttribute("role","code"),this.scrollbar=this._register(new S.DomScrollableElement(this._content.domNode,{})),this.domNode.domNode.appendChild(this.scrollbar.getDomNode()),this._register(P.onDidUpdateDiff(()=>{this._isVisible&&(this._diffs=this._compute(),this._render())})),this._register(P.getModifiedEditor().onDidChangeCursorPosition(()=>{this._isVisible&&this._render()})),this._register(L.addStandardDisposableListener(this.domNode.domNode,"click",N=>{N.preventDefault();const F=L.findParentWithClass(N.target,"diff-review-row");F&&this._goToRow(F)})),this._register(L.addStandardDisposableListener(this.domNode.domNode,"keydown",N=>{(N.equals(18)||N.equals(2066)||N.equals(530))&&(N.preventDefault(),this._goToRow(this._getNextRow(),"next")),(N.equals(16)||N.equals(2064)||N.equals(528))&&(N.preventDefault(),this._goToRow(this._getPrevRow(),"previous")),(N.equals(9)||N.equals(2057)||N.equals(521)||N.equals(1033)||N.equals(10)||N.equals(3))&&(N.preventDefault(),this.accept())})),this._register(this._configurationService.onDidChangeConfiguration(N=>{N.affectsConfiguration("accessibility.verbosity.diffEditor")&&this._diffEditor.updateOptions({accessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.diffEditor")})})),this._diffs=[],this._currentDiff=null}prev(){let P=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){let T=-1;for(let A=0,N=this._diffs.length;A0){const de=P[U-1];de.originalEndLineNumber===0?Y=de.originalStartLineNumber+1:Y=de.originalEndLineNumber+1,de.modifiedEndLineNumber===0?ie=de.modifiedStartLineNumber+1:ie=de.modifiedEndLineNumber+1}let ae=B-p+1,ce=V-p+1;if(aeY){const de=Y-ae;ae=ae+de,ce=ce+de}if(ce>ie){const de=ie-ce;ae=ae+de,ce=ce+de}X[H++]=new m(B,ae,V,ce)}A[N++]=new v(X)}let F=A[0].entries;const O=[];let W=0;for(let U=1,j=A.length;UR)&&(R=te),q!==0&&(K===0||qG)&&(G=z)}const Z=document.createElement("div");Z.className="diff-review-row";const J=document.createElement("div");J.className="diff-review-cell diff-review-summary";const X=R-j+1,H=G-K+1;J.appendChild(document.createTextNode(`${O+1}/${this._diffs.length}: @@ -${j},${X} +${K},${H} @@`)),Z.setAttribute("data-line",String(K));const B=ce=>ce===0?r.localize(4,null):ce===1?r.localize(5,null):r.localize(6,null,ce),V=B(X),Y=B(H);Z.setAttribute("aria-label",r.localize(7,null,O+1,this._diffs.length,j,V,K,Y)),Z.appendChild(J),Z.setAttribute("role","listitem"),U.appendChild(Z);const ie=x.get(65);let ae=K;for(let ce=0,de=W.length;ceM}),e.DiffReview=I=l=ke([fe(1,t.ILanguageService),fe(2,c.IAudioCueService),fe(3,o.IConfigurationService)],I)}),define(ne[830],se([1,0,7,68,75,39,25,2,42,26,59,102,354,36,66,90,12,5,109,41,86,95,67,607,116,8,62]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibleDiffViewer=void 0;const w=(0,b.registerIcon)("diff-review-insert",S.Codicon.add,(0,p.localize)(0,null)),E=(0,b.registerIcon)("diff-review-remove",S.Codicon.remove,(0,p.localize)(1,null)),I=(0,b.registerIcon)("diff-review-close",S.Codicon.close,(0,p.localize)(2,null));let M=class extends f.Disposable{constructor(Z,J,X,H,B,V,Y,ie,ae){super(),this._parentNode=Z,this._visible=J,this._setVisible=X,this._canClose=H,this._width=B,this._height=V,this._diffs=Y,this._editors=ie,this._instantiationService=ae,this.model=(0,_.derivedWithStore)("model",(ce,de)=>{const he=this._visible.read(ce);if(this._parentNode.style.visibility=he?"visible":"hidden",!he)return null;const ue=de.add(this._instantiationService.createInstance(P,this._diffs,this._editors,this._setVisible,this._canClose)),te=de.add(this._instantiationService.createInstance(j,this._parentNode,ue,this._width,this._height,this._editors));return{model:ue,view:te}}),this._register((0,_.keepAlive)(this.model,!0))}next(){(0,_.transaction)(Z=>{const J=this._visible.get();this._setVisible(!0,Z),J&&this.model.get().model.nextGroup(Z)})}prev(){(0,_.transaction)(Z=>{this._setVisible(!0,Z),this.model.get().model.previousGroup(Z)})}close(){(0,_.transaction)(Z=>{this._setVisible(!1,Z)})}};e.AccessibleDiffViewer=M,e.AccessibleDiffViewer=M=ke([fe(8,v.IInstantiationService)],M);let P=class extends f.Disposable{constructor(Z,J,X,H,B){super(),this._diffs=Z,this._editors=J,this._setVisible=X,this.canClose=H,this._audioCueService=B,this._groups=(0,_.observableValue)("groups",[]),this._currentGroupIdx=(0,_.observableValue)("currentGroupIdx",0),this._currentElementIdx=(0,_.observableValue)("currentElementIdx",0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((V,Y)=>this._groups.read(Y)[V]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((V,Y)=>{var ie;return(ie=this.currentGroup.read(Y))===null||ie===void 0?void 0:ie.lines[V]}),this._register((0,_.autorun)(V=>{const Y=this._diffs.read(V);if(!Y){this._groups.set([],void 0);return}const ie=T(Y,this._editors.original.getModel().getLineCount(),this._editors.modified.getModel().getLineCount());(0,_.transaction)(ae=>{const ce=this._editors.modified.getPosition();if(ce){const de=ie.findIndex(he=>ce?.lineNumber{const Y=this.currentElement.read(V);Y?.type===A.Deleted?this._audioCueService.playAudioCue(m.AudioCue.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):Y?.type===A.Added&&this._audioCueService.playAudioCue(m.AudioCue.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})})),this._register((0,_.autorun)(V=>{var Y;const ie=this.currentElement.read(V);if(ie&&ie.type!==A.Header){const ae=(Y=ie.modifiedLineNumber)!==null&&Y!==void 0?Y:ie.diff.modifiedRange.startLineNumber;this._editors.modified.setSelection(h.Range.fromPositions(new u.Position(ae,1)))}}))}_goToGroupDelta(Z,J){const X=this.groups.get();!X||X.length<=1||(0,_.subtransaction)(J,H=>{this._currentGroupIdx.set(a.OffsetRange.ofLength(X.length).clipCyclic(this._currentGroupIdx.get()+Z),H),this._currentElementIdx.set(0,H)})}nextGroup(Z){this._goToGroupDelta(1,Z)}previousGroup(Z){this._goToGroupDelta(-1,Z)}_goToLineDelta(Z){const J=this.currentGroup.get();!J||J.lines.length<=1||(0,_.transaction)(X=>{this._currentElementIdx.set(a.OffsetRange.ofLength(J.lines.length).clip(this._currentElementIdx.get()+Z),X)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(Z){const J=this.currentGroup.get();if(!J)return;const X=J.lines.indexOf(Z);X!==-1&&(0,_.transaction)(H=>{this._currentElementIdx.set(X,H)})}revealCurrentElementInEditor(){this._setVisible(!1,void 0);const Z=this.currentElement.get();Z&&(Z.type===A.Deleted?(this._editors.original.setSelection(h.Range.fromPositions(new u.Position(Z.originalLineNumber,1))),this._editors.original.revealLine(Z.originalLineNumber),this._editors.original.focus()):(Z.type!==A.Header&&(this._editors.modified.setSelection(h.Range.fromPositions(new u.Position(Z.modifiedLineNumber,1))),this._editors.modified.revealLine(Z.modifiedLineNumber)),this._editors.modified.focus()))}close(){this._setVisible(!1,void 0),this._editors.modified.focus()}};P=ke([fe(4,m.IAudioCueService)],P);const x=3;function T(G,Z,J){const X=[];for(const H of K(G,(B,V)=>V.modifiedRange.startLineNumber-B.modifiedRange.endLineNumberExclusive<2*x)){const B=[];B.push(new F);const V=new t.LineRange(Math.max(1,H[0].originalRange.startLineNumber-x),Math.min(H[H.length-1].originalRange.endLineNumberExclusive+x,Z+1)),Y=new t.LineRange(Math.max(1,H[0].modifiedRange.startLineNumber-x),Math.min(H[H.length-1].modifiedRange.endLineNumberExclusive+x,J+1));R(H,(ce,de)=>{const he=new t.LineRange(ce?ce.originalRange.endLineNumberExclusive:V.startLineNumber,de?de.originalRange.startLineNumber:V.endLineNumberExclusive),ue=new t.LineRange(ce?ce.modifiedRange.endLineNumberExclusive:Y.startLineNumber,de?de.modifiedRange.startLineNumber:Y.endLineNumberExclusive);he.forEach(te=>{B.push(new U(te,ue.startLineNumber+(te-he.startLineNumber)))}),de&&(de.originalRange.forEach(te=>{B.push(new O(de,te))}),de.modifiedRange.forEach(te=>{B.push(new W(de,te))}))});const ie=H[0].modifiedRange.join(H[H.length-1].modifiedRange),ae=H[0].originalRange.join(H[H.length-1].originalRange);X.push(new N(new r.SimpleLineRangeMapping(ie,ae),B))}return X}var A;(function(G){G[G.Header=0]="Header",G[G.Unchanged=1]="Unchanged",G[G.Deleted=2]="Deleted",G[G.Added=3]="Added"})(A||(A={}));class N{constructor(Z,J){this.range=Z,this.lines=J}}class F{constructor(){this.type=A.Header}}class O{constructor(Z,J){this.diff=Z,this.originalLineNumber=J,this.type=A.Deleted,this.modifiedLineNumber=void 0}}class W{constructor(Z,J){this.diff=Z,this.modifiedLineNumber=J,this.type=A.Added,this.originalLineNumber=void 0}}class U{constructor(Z,J){this.originalLineNumber=Z,this.modifiedLineNumber=J,this.type=A.Unchanged}}let j=class extends f.Disposable{constructor(Z,J,X,H,B,V){super(),this._element=Z,this._model=J,this._width=X,this._height=H,this._editors=B,this._languageService=V,this.domNode=this._element,this.domNode.className="diff-review monaco-editor-background";const Y=document.createElement("div");Y.className="diff-review-actions",this._actionBar=this._register(new k.ActionBar(Y)),this._register((0,_.autorun)(ie=>{this._actionBar.clear(),this._model.canClose.read(ie)&&this._actionBar.push(new D.Action("diffreview.close",(0,p.localize)(3,null),"close-diff-review "+g.ThemeIcon.asClassName(I),!0,()=>we(this,void 0,void 0,function*(){return J.close()})),{label:!1,icon:!0})})),this._content=document.createElement("div"),this._content.className="diff-review-content",this._content.setAttribute("role","code"),this._scrollbar=this._register(new y.DomScrollableElement(this._content,{})),(0,L.reset)(this.domNode,this._scrollbar.getDomNode(),Y),this._register((0,f.toDisposable)(()=>{(0,L.reset)(this.domNode)})),this._register((0,s.applyStyle)(this.domNode,{width:this._width,height:this._height})),this._register((0,s.applyStyle)(this._content,{width:this._width,height:this._height})),this._register((0,_.autorunWithStore)((ie,ae)=>{this._model.currentGroup.read(ie),this._render(ae)})),this._register((0,L.addStandardDisposableListener)(this.domNode,"keydown",ie=>{(ie.equals(18)||ie.equals(2066)||ie.equals(530))&&(ie.preventDefault(),this._model.goToNextLine()),(ie.equals(16)||ie.equals(2064)||ie.equals(528))&&(ie.preventDefault(),this._model.goToPreviousLine()),(ie.equals(9)||ie.equals(2057)||ie.equals(521)||ie.equals(1033))&&(ie.preventDefault(),this._model.close()),(ie.equals(10)||ie.equals(3))&&(ie.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(Z){const J=this._editors.original.getOptions(),X=this._editors.modified.getOptions(),H=document.createElement("div");H.className="diff-review-table",H.setAttribute("role","list"),H.setAttribute("aria-label",(0,p.localize)(4,null)),(0,C.applyFontInfo)(H,X.get(49)),(0,L.reset)(this._content,H);const B=this._editors.original.getModel(),V=this._editors.modified.getModel();if(!B||!V)return;const Y=B.getOptions(),ie=V.getOptions(),ae=X.get(65),ce=this._model.currentGroup.get();for(const de of ce?.lines||[]){if(!ce)break;let he;if(de.type===A.Header){const te=document.createElement("div");te.className="diff-review-row",te.setAttribute("role","listitem");const q=ce.range,z=this._model.currentGroupIndex.get(),ee=this._model.groups.get().length,$=ve=>ve===0?(0,p.localize)(5,null):ve===1?(0,p.localize)(6,null):(0,p.localize)(7,null,ve),re=$(q.original.length),oe=$(q.modified.length);te.setAttribute("aria-label",(0,p.localize)(8,null,z+1,ee,q.original.startLineNumber,re,q.modified.startLineNumber,oe));const ge=document.createElement("div");ge.className="diff-review-cell diff-review-summary",ge.appendChild(document.createTextNode(`${z+1}/${ee}: @@ -${q.original.startLineNumber},${q.original.length} +${q.modified.startLineNumber},${q.modified.length} @@`)),te.appendChild(ge),he=te}else he=this._createRow(de,ae,this._width.get(),J,B,Y,X,V,ie);H.appendChild(he);const ue=(0,_.derived)(te=>this._model.currentElement.read(te)===de);Z.add((0,_.autorun)(te=>{const q=ue.read(te);he.tabIndex=q?0:-1,q&&he.focus()})),Z.add((0,L.addDisposableListener)(he,"focus",()=>{this._model.goToLine(de)}))}this._scrollbar.scanDomNode()}_createRow(Z,J,X,H,B,V,Y,ie,ae){const ce=H.get(142),de=ce.glyphMarginWidth+ce.lineNumbersWidth,he=Y.get(142),ue=10+he.glyphMarginWidth+he.lineNumbersWidth;let te="diff-review-row",q="";const z="diff-review-spacer";let ee=null;switch(Z.type){case A.Added:te="diff-review-row line-insert",q=" char-insert",ee=w;break;case A.Deleted:te="diff-review-row line-delete",q=" char-delete",ee=E;break}const $=document.createElement("div");$.style.minWidth=X+"px",$.className=te,$.setAttribute("role","listitem"),$.ariaLevel="";const re=document.createElement("div");re.className="diff-review-cell",re.style.height=`${J}px`,$.appendChild(re);const oe=document.createElement("span");oe.style.width=de+"px",oe.style.minWidth=de+"px",oe.className="diff-review-line-number"+q,Z.originalLineNumber!==void 0?oe.appendChild(document.createTextNode(String(Z.originalLineNumber))):oe.innerText="\xA0",re.appendChild(oe);const ge=document.createElement("span");ge.style.width=ue+"px",ge.style.minWidth=ue+"px",ge.style.paddingRight="10px",ge.className="diff-review-line-number"+q,Z.modifiedLineNumber!==void 0?ge.appendChild(document.createTextNode(String(Z.modifiedLineNumber))):ge.innerText="\xA0",re.appendChild(ge);const ve=document.createElement("span");if(ve.className=z,ee){const De=document.createElement("span");De.className=g.ThemeIcon.asClassName(ee),De.innerText="\xA0\xA0",ve.appendChild(De)}else ve.innerText="\xA0\xA0";re.appendChild(ve);let Se;if(Z.modifiedLineNumber!==void 0){let De=this._getLineHtml(ie,Y,ae.tabSize,Z.modifiedLineNumber,this._languageService.languageIdCodec);i.DiffReview._ttPolicy&&(De=i.DiffReview._ttPolicy.createHTML(De)),re.insertAdjacentHTML("beforeend",De),Se=ie.getLineContent(Z.modifiedLineNumber)}else{let De=this._getLineHtml(B,H,V.tabSize,Z.originalLineNumber,this._languageService.languageIdCodec);i.DiffReview._ttPolicy&&(De=i.DiffReview._ttPolicy.createHTML(De)),re.insertAdjacentHTML("beforeend",De),Se=B.getLineContent(Z.originalLineNumber)}Se.length===0&&(Se=(0,p.localize)(9,null));let Le="";switch(Z.type){case A.Unchanged:Z.originalLineNumber===Z.modifiedLineNumber?Le=(0,p.localize)(10,null,Se,Z.originalLineNumber):Le=(0,p.localize)(11,null,Se,Z.originalLineNumber,Z.modifiedLineNumber);break;case A.Added:Le=(0,p.localize)(12,null,Se,Z.modifiedLineNumber);break;case A.Deleted:Le=(0,p.localize)(13,null,Se,Z.originalLineNumber);break}return $.setAttribute("aria-label",Le),$}_getLineHtml(Z,J,X,H,B){const V=Z.getLineContent(H),Y=J.get(49),ie=o.LineTokens.createEmpty(V,B),ae=l.ViewLineRenderingData.isBasicASCII(V,Z.mightContainNonBasicASCII()),ce=l.ViewLineRenderingData.containsRTL(V,ae,Z.mightContainRTL());return(0,d.renderViewLine2)(new d.RenderLineInput(Y.isMonospace&&!J.get(32),Y.canUseHalfwidthRightwardsArrow,V,!1,ae,ce,0,ie,[],X,0,Y.spaceWidth,Y.middotWidth,Y.wsmiddotWidth,J.get(115),J.get(97),J.get(92),J.get(50)!==n.EditorFontLigatures.OFF,null)).html}};j=ke([fe(5,c.ILanguageService)],j);function R(G,Z){let J;for(const X of G)Z(J,X),J=X;Z(J,void 0)}function*K(G,Z){let J,X;for(const H of G)X!==void 0&&Z(X,H)?J.push(H):(J&&(yield J),J=[H]),X=H;J&&(yield J)}}),define(ne[831],se([1,0,52,7,152,83,25,38,6,2,26,644,31,62,199]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPickerWidget=e.InsertButton=e.ColorPickerBody=e.ColorPickerHeader=void 0;const t=k.$;class a extends g.Disposable{constructor(v,b,w,E=!1){super(),this.model=b,this.showingStandaloneColorPicker=E,this._closeButton=null,this._domNode=t(".colorpicker-header"),k.append(v,this._domNode),this._pickedColorNode=k.append(this._domNode,t(".picked-color")),k.append(this._pickedColorNode,t("span.codicon.codicon-color-mode")),this._pickedColorPresentation=k.append(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const I=(0,s.localize)(0,null);this._pickedColorNode.setAttribute("title",I),this._originalColorNode=k.append(this._domNode,t(".original-color")),this._originalColorNode.style.backgroundColor=f.Color.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=w.getColorTheme().getColor(i.editorHoverBackground)||f.Color.white,this._register(w.onDidColorThemeChange(M=>{this.backgroundColor=M.getColor(i.editorHoverBackground)||f.Color.white})),this._register(k.addDisposableListener(this._pickedColorNode,k.EventType.CLICK,()=>this.model.selectNextColorPresentation())),this._register(k.addDisposableListener(this._originalColorNode,k.EventType.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(b.onDidChangeColor(this.onDidChangeColor,this)),this._register(b.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=f.Color.Format.CSS.format(b.color)||"",this._pickedColorNode.classList.toggle("light",b.color.rgba.a<.5?this.backgroundColor.isLighter():b.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new u(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(v){this._pickedColorNode.style.backgroundColor=f.Color.Format.CSS.format(v)||"",this._pickedColorNode.classList.toggle("light",v.rgba.a<.5?this.backgroundColor.isLighter():v.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}e.ColorPickerHeader=a;class u extends g.Disposable{constructor(v){super(),this._onClicked=this._register(new _.Emitter),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),k.append(v,this._button);const b=document.createElement("div");b.classList.add("close-button-inner-div"),k.append(this._button,b),k.append(b,t(".button"+C.ThemeIcon.asCSSSelector((0,n.registerIcon)("color-picker-close",S.Codicon.close,(0,s.localize)(1,null))))).classList.add("close-icon"),this._button.onclick=()=>{this._onClicked.fire()}}}class h extends g.Disposable{constructor(v,b,w,E=!1){super(),this.model=b,this.pixelRatio=w,this._insertButton=null,this._domNode=t(".colorpicker-body"),k.append(v,this._domNode),this._saturationBox=new r(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new o(this._domNode,this.model,E),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new d(this._domNode,this.model,E),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),E&&(this._insertButton=this._register(new l(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:v,v:b}){const w=this.model.color.hsva;this.model.color=new f.Color(new f.HSVA(w.h,v,b,w.a))}onDidOpacityChange(v){const b=this.model.color.hsva;this.model.color=new f.Color(new f.HSVA(b.h,b.s,b.v,v))}onDidHueChange(v){const b=this.model.color.hsva,w=(1-v)*360;this.model.color=new f.Color(new f.HSVA(w===360?0:w,b.s,b.v,b.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}e.ColorPickerBody=h;class r extends g.Disposable{constructor(v,b,w){super(),this.model=b,this.pixelRatio=w,this._onDidChange=new _.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new _.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._domNode=t(".saturation-wrap"),k.append(v,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",k.append(this._domNode,this._canvas),this.selection=t(".saturation-selection"),k.append(this._domNode,this.selection),this.layout(),this._register(k.addDisposableListener(this._domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(v){if(!v.target||!(v.target instanceof Element))return;this.monitor=this._register(new y.GlobalPointerMoveMonitor);const b=k.getDomNodePagePosition(this._domNode);v.target!==this.selection&&this.onDidChangePosition(v.offsetX,v.offsetY),this.monitor.startMonitoring(v.target,v.pointerId,v.buttons,E=>this.onDidChangePosition(E.pageX-b.left,E.pageY-b.top),()=>null);const w=k.addDisposableListener(document,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),w.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(v,b){const w=Math.max(0,Math.min(1,v/this.width)),E=Math.max(0,Math.min(1,1-b/this.height));this.paintSelection(w,E),this._onDidChange.fire({s:w,v:E})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const v=this.model.color.hsva;this.paintSelection(v.s,v.v)}paint(){const v=this.model.color.hsva,b=new f.Color(new f.HSVA(v.h,1,1,1)),w=this._canvas.getContext("2d"),E=w.createLinearGradient(0,0,this._canvas.width,0);E.addColorStop(0,"rgba(255, 255, 255, 1)"),E.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),E.addColorStop(1,"rgba(255, 255, 255, 0)");const I=w.createLinearGradient(0,0,0,this._canvas.height);I.addColorStop(0,"rgba(0, 0, 0, 0)"),I.addColorStop(1,"rgba(0, 0, 0, 1)"),w.rect(0,0,this._canvas.width,this._canvas.height),w.fillStyle=f.Color.Format.CSS.format(b),w.fill(),w.fillStyle=E,w.fill(),w.fillStyle=I,w.fill()}paintSelection(v,b){this.selection.style.left=`${v*this.width}px`,this.selection.style.top=`${this.height-b*this.height}px`}onDidChangeColor(v){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const b=v.hsva;this.paintSelection(b.s,b.v)}}class c extends g.Disposable{constructor(v,b,w=!1){super(),this.model=b,this._onDidChange=new _.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new _.Emitter,this.onColorFlushed=this._onColorFlushed.event,w?(this.domNode=k.append(v,t(".standalone-strip")),this.overlay=k.append(this.domNode,t(".standalone-overlay"))):(this.domNode=k.append(v,t(".strip")),this.overlay=k.append(this.domNode,t(".overlay"))),this.slider=k.append(this.domNode,t(".slider")),this.slider.style.top="0px",this._register(k.addDisposableListener(this.domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(b.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const v=this.getValue(this.model.color);this.updateSliderPosition(v)}onDidChangeColor(v){const b=this.getValue(v);this.updateSliderPosition(b)}onPointerDown(v){if(!v.target||!(v.target instanceof Element))return;const b=this._register(new y.GlobalPointerMoveMonitor),w=k.getDomNodePagePosition(this.domNode);this.domNode.classList.add("grabbing"),v.target!==this.slider&&this.onDidChangeTop(v.offsetY),b.startMonitoring(v.target,v.pointerId,v.buttons,I=>this.onDidChangeTop(I.pageY-w.top),()=>null);const E=k.addDisposableListener(document,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),E.dispose(),b.stopMonitoring(!0),this.domNode.classList.remove("grabbing")},!0)}onDidChangeTop(v){const b=Math.max(0,Math.min(1,1-v/this.height));this.updateSliderPosition(b),this._onDidChange.fire(b)}updateSliderPosition(v){this.slider.style.top=`${(1-v)*this.height}px`}}class o extends c{constructor(v,b,w=!1){super(v,b,w),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(v){super.onDidChangeColor(v);const{r:b,g:w,b:E}=v.rgba,I=new f.Color(new f.RGBA(b,w,E,1)),M=new f.Color(new f.RGBA(b,w,E,0));this.overlay.style.background=`linear-gradient(to bottom, ${I} 0%, ${M} 100%)`}getValue(v){return v.hsva.a}}class d extends c{constructor(v,b,w=!1){super(v,b,w),this.domNode.classList.add("hue-strip")}getValue(v){return 1-v.hsva.h/360}}class l extends g.Disposable{constructor(v){super(),this._onClicked=this._register(new _.Emitter),this.onClicked=this._onClicked.event,this._button=k.append(v,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._button.onclick=b=>{this._onClicked.fire()}}get button(){return this._button}}e.InsertButton=l;class p extends D.Widget{constructor(v,b,w,E,I=!1){super(),this.model=b,this.pixelRatio=w,this._register(L.PixelRatio.onDidChange(()=>this.layout()));const M=t(".colorpicker-widget");v.appendChild(M),this.header=this._register(new a(M,this.model,E,I)),this.body=this._register(new h(M,this.model,this.pixelRatio,I))}layout(){this.body.layout()}}e.ColorPickerWidget=p}),define(ne[832],se([1,0,7,49,75,25,6,2,11,20,41,117,236,689,15,56,31,62,26,457]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.ParameterHintsWidget=void 0;const o=L.$,d=(0,h.registerIcon)("parameter-hints-next",D.Codicon.chevronDown,n.localize(0,null)),l=(0,h.registerIcon)("parameter-hints-previous",D.Codicon.chevronUp,n.localize(1,null));let p=c=class extends f.Disposable{constructor(v,b,w,E,I){super(),this.editor=v,this.model=b,this.renderDisposeables=this._register(new f.DisposableStore),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new s.MarkdownRenderer({editor:v},I,E)),this.keyVisible=i.Context.Visible.bindTo(w),this.keyMultipleSignatures=i.Context.MultipleSignatures.bindTo(w)}createParameterHintDOMNodes(){const v=o(".editor-widget.parameter-hints-widget"),b=L.append(v,o(".phwrapper"));b.tabIndex=-1;const w=L.append(b,o(".controls")),E=L.append(w,o(".button"+r.ThemeIcon.asCSSSelector(l))),I=L.append(w,o(".overloads")),M=L.append(w,o(".button"+r.ThemeIcon.asCSSSelector(d)));this._register(L.addDisposableListener(E,"click",F=>{L.EventHelper.stop(F),this.previous()})),this._register(L.addDisposableListener(M,"click",F=>{L.EventHelper.stop(F),this.next()}));const P=o(".body"),x=new y.DomScrollableElement(P,{alwaysConsumeMouseWheel:!0});this._register(x),b.appendChild(x.getDomNode());const T=L.append(P,o(".signature")),A=L.append(P,o(".docs"));v.style.userSelect="text",this.domNodes={element:v,signature:T,overloads:I,docs:A,scrollbar:x},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(F=>{this.visible&&this.editor.layoutContentWidget(this)}));const N=()=>{if(!this.domNodes)return;const F=this.editor.getOption(49);this.domNodes.element.style.fontSize=`${F.fontSize}px`,this.domNodes.element.style.lineHeight=`${F.lineHeight/F.fontSize}`};N(),this._register(S.Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(F=>F.hasChanged(49)).on(N,null)),this._register(this.editor.onDidLayoutChange(F=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var v;(v=this.domNodes)===null||v===void 0||v.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var v;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(v=this.domNodes)===null||v===void 0||v.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(v){var b;if(this.renderDisposeables.clear(),!this.domNodes)return;const w=v.signatures.length>1;this.domNodes.element.classList.toggle("multiple",w),this.keyMultipleSignatures.set(w),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const E=v.signatures[v.activeSignature];if(!E)return;const I=L.append(this.domNodes.signature,o(".code")),M=this.editor.getOption(49);I.style.fontSize=`${M.fontSize}px`,I.style.fontFamily=M.fontFamily;const P=E.parameters.length>0,x=(b=E.activeParameter)!==null&&b!==void 0?b:v.activeParameter;if(P)this.renderParameters(I,E,x);else{const N=L.append(I,o("span"));N.textContent=E.label}const T=E.parameters[x];if(T?.documentation){const N=o("span.documentation");if(typeof T.documentation=="string")N.textContent=T.documentation;else{const F=this.renderMarkdownDocs(T.documentation);N.appendChild(F.element)}L.append(this.domNodes.docs,o("p",{},N))}if(E.documentation!==void 0)if(typeof E.documentation=="string")L.append(this.domNodes.docs,o("p",{},E.documentation));else{const N=this.renderMarkdownDocs(E.documentation);L.append(this.domNodes.docs,N.element)}const A=this.hasDocs(E,T);if(this.domNodes.signature.classList.toggle("has-docs",A),this.domNodes.docs.classList.toggle("empty",!A),this.domNodes.overloads.textContent=String(v.activeSignature+1).padStart(v.signatures.length.toString().length,"0")+"/"+v.signatures.length,T){let N="";const F=E.parameters[x];Array.isArray(F.label)?N=E.label.substring(F.label[0],F.label[1]):N=F.label,F.documentation&&(N+=typeof F.documentation=="string"?`, ${F.documentation}`:`, ${F.documentation.value}`),E.documentation&&(N+=typeof E.documentation=="string"?`, ${E.documentation}`:`, ${E.documentation.value}`),this.announcedLabel!==N&&(k.alert(n.localize(2,null,N)),this.announcedLabel=N)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(v){const b=this.renderDisposeables.add(this.markdownRenderer.render(v,{asyncRenderCallback:()=>{var w;(w=this.domNodes)===null||w===void 0||w.scrollbar.scanDomNode()}}));return b.element.classList.add("markdown-docs"),b}hasDocs(v,b){return!!(b&&typeof b.documentation=="string"&&(0,g.assertIsDefined)(b.documentation).length>0||b&&typeof b.documentation=="object"&&(0,g.assertIsDefined)(b.documentation).value.length>0||v.documentation&&typeof v.documentation=="string"&&(0,g.assertIsDefined)(v.documentation).length>0||v.documentation&&typeof v.documentation=="object"&&(0,g.assertIsDefined)(v.documentation.value).length>0)}renderParameters(v,b,w){const[E,I]=this.getParameterLabelOffsets(b,w),M=document.createElement("span");M.textContent=b.label.substring(0,E);const P=document.createElement("span");P.textContent=b.label.substring(E,I),P.className="parameter active";const x=document.createElement("span");x.textContent=b.label.substring(I),L.append(v,M,P,x)}getParameterLabelOffsets(v,b){const w=v.parameters[b];if(w){if(Array.isArray(w.label))return w.label;if(w.label.length){const E=new RegExp(`(\\W|^)${(0,_.escapeRegExpCharacters)(w.label)}(?=\\W|$)`,"g");E.test(v.label);const I=E.lastIndex-w.label.length;return I>=0?[I,E.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return c.ID}updateMaxHeight(){if(!this.domNodes)return;const b=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=b;const w=this.domNodes.element.getElementsByClassName("phwrapper");w.length&&(w[0].style.maxHeight=b)}};e.ParameterHintsWidget=p,p.ID="editor.widget.parameterHintsWidget",e.ParameterHintsWidget=p=c=ke([fe(2,t.IContextKeyService),fe(3,a.IOpenerService),fe(4,C.ILanguageService)],p),(0,u.registerColor)("editorHoverWidget.highlightForeground",{dark:u.listHighlightForeground,light:u.listHighlightForeground,hcDark:u.listHighlightForeground,hcLight:u.listHighlightForeground},n.localize(3,null))}),define(ne[833],se([1,0,100,2,16,21,29,18,753,236,688,15,8,832]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.TriggerParameterHintsAction=e.ParameterHintsController=void 0;let a=t=class extends k.Disposable{static get(o){return o.getContribution(t.ID)}constructor(o,d,l){super(),this.editor=o,this.model=this._register(new _.ParameterHintsModel(o,l.signatureHelpProvider)),this._register(this.model.onChangedHints(p=>{var m;p?(this.widget.value.show(),this.widget.value.render(p)):(m=this.widget.rawValue)===null||m===void 0||m.hide()})),this.widget=new L.Lazy(()=>this._register(d.createInstance(n.ParameterHintsWidget,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var o;(o=this.widget.rawValue)===null||o===void 0||o.previous()}next(){var o;(o=this.widget.rawValue)===null||o===void 0||o.next()}trigger(o){this.model.trigger(o,0)}};e.ParameterHintsController=a,a.ID="editor.controller.parameterHints",e.ParameterHintsController=a=t=ke([fe(1,i.IInstantiationService),fe(2,f.ILanguageFeaturesService)],a);class u extends y.EditorAction{constructor(){super({id:"editor.action.triggerParameterHints",label:C.localize(0,null),alias:"Trigger Parameter Hints",precondition:D.EditorContextKeys.hasSignatureHelpProvider,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:3082,weight:100}})}run(o,d){const l=a.get(d);l?.trigger({triggerKind:S.SignatureHelpTriggerKind.Invoke})}}e.TriggerParameterHintsAction=u,(0,y.registerEditorContribution)(a.ID,a,2),(0,y.registerEditorAction)(u);const h=100+75,r=y.EditorCommand.bindToContribution(a.get);(0,y.registerEditorCommand)(new r({id:"closeParameterHints",precondition:g.Context.Visible,handler:c=>c.cancel(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new r({id:"showPrevParameterHint",precondition:s.ContextKeyExpr.and(g.Context.Visible,g.Context.MultipleSignatures),handler:c=>c.previous(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,y.registerEditorCommand)(new r({id:"showNextParameterHint",precondition:s.ContextKeyExpr.and(g.Context.Visible,g.Context.MultipleSignatures),handler:c=>c.next(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))}),define(ne[834],se([1,0,7,68,39,2,117,8,770,62,26,464]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BannerController=void 0;const s=26;let i=class extends D.Disposable{constructor(a,u){super(),this._editor=a,this.instantiationService=u,this.banner=this._register(this.instantiationService.createInstance(n))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(a){this.banner.show(Object.assign(Object.assign({},a),{onClose:()=>{var u;this.hide(),(u=a.onClose)===null||u===void 0||u.call(a)}})),this._editor.setBanner(this.banner.element,s)}};e.BannerController=i,e.BannerController=i=ke([fe(1,f.IInstantiationService)],i);let n=class extends D.Disposable{constructor(a){super(),this.instantiationService=a,this.markdownRenderer=this.instantiationService.createInstance(S.MarkdownRenderer,{}),this.element=(0,L.$)("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(a){if(a.ariaLabel)return a.ariaLabel;if(typeof a.message=="string")return a.message}getBannerMessage(a){if(typeof a=="string"){const u=(0,L.$)("span");return u.innerText=a,u}return this.markdownRenderer.render(a).element}clear(){(0,L.clearNode)(this.element)}show(a){(0,L.clearNode)(this.element);const u=this.getAriaLabel(a);u&&this.element.setAttribute("aria-label",u);const h=(0,L.append)(this.element,(0,L.$)("div.icon-container"));h.setAttribute("aria-hidden","true"),a.icon&&h.appendChild((0,L.$)(`div${C.ThemeIcon.asCSSSelector(a.icon)}`));const r=(0,L.append)(this.element,(0,L.$)("div.message-container"));if(r.setAttribute("aria-hidden","true"),r.appendChild(this.getBannerMessage(a.message)),this.messageActionsContainer=(0,L.append)(this.element,(0,L.$)("div.message-actions-container")),a.actions)for(const o of a.actions)this._register(this.instantiationService.createInstance(_.Link,this.messageActionsContainer,Object.assign(Object.assign({},o),{tabIndex:-1}),{}));const c=(0,L.append)(this.element,(0,L.$)("div.action-container"));this.actionBar=this._register(new k.ActionBar(c)),this.actionBar.push(this._register(new y.Action("banner.close","Close Banner",C.ThemeIcon.asClassName(g.widgetClose),!0,()=>{typeof a.onClose=="function"&&a.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};n=ke([fe(0,f.IInstantiationService)],n)}),define(ne[835],se([1,0,7,6,26,62]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnthemedProductIconTheme=e.getIconsStyleSheet=void 0;function S(_){const g=new k.Emitter,C=(0,D.getIconRegistry)();return C.onDidChange(()=>g.fire()),_?.onDidProductIconThemeChange(()=>g.fire()),{onDidChange:g.event,getCSS(){const s=_?_.getProductIconTheme():new f,i={},n=a=>{const u=s.getIcon(a);if(!u)return;const h=u.font;return h?(i[h.id]=h.definition,`.codicon-${a.id}:before { content: '${u.fontCharacter}'; font-family: ${(0,L.asCSSPropertyValue)(h.id)}; }`):`.codicon-${a.id}:before { content: '${u.fontCharacter}'; }`},t=[];for(const a of C.getIcons()){const u=n(a);u&&t.push(u)}for(const a in i){const u=i[a],h=u.weight?`font-weight: ${u.weight};`:"",r=u.style?`font-style: ${u.style};`:"",c=u.src.map(o=>`${(0,L.asCSSUrl)(o.location)} format('${o.format}')`).join(", ");t.push(`@font-face { src: ${c}; font-family: ${(0,L.asCSSPropertyValue)(a)};${h}${r} font-display: block; }`)}return t.join(` -`)}}}e.getIconsStyleSheet=S;class f{getIcon(g){const C=(0,D.getIconRegistry)();let s=g.defaults;for(;y.ThemeIcon.isThemeIcon(s);){const i=C.getIcon(s.id);if(!i)return;s=i.defaults}return s}}e.UnthemedProductIconTheme=f}),define(ne[88],se([1,0]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isDark=e.isHighContrast=e.ColorScheme=void 0;var L;(function(D){D.DARK="dark",D.LIGHT="light",D.HIGH_CONTRAST_DARK="hcDark",D.HIGH_CONTRAST_LIGHT="hcLight"})(L||(e.ColorScheme=L={}));function k(D){return D===L.HIGH_CONTRAST_DARK||D===L.HIGH_CONTRAST_LIGHT}e.isHighContrast=k;function y(D){return D===L.DARK||D===L.HIGH_CONTRAST_DARK}e.isDark=y}),define(ne[251],se([1,0,52,35,17,478,144,127,95,88,36]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getColumnOfNodeOffset=e.ViewLine=e.ViewLineOptions=void 0;const s=function(){return y.isNative?!0:!(y.isLinux||L.isFirefox||L.isSafari)}();let i=!0;class n{constructor(p,m){this.themeType=m;const v=p.options,b=v.get(49);v.get(37)==="off"?this.renderWhitespace=v.get(97):this.renderWhitespace="none",this.renderControlCharacters=v.get(92),this.spaceWidth=b.spaceWidth,this.middotWidth=b.middotWidth,this.wsmiddotWidth=b.wsmiddotWidth,this.useMonospaceOptimizations=b.isMonospace&&!v.get(32),this.canUseHalfwidthRightwardsArrow=b.canUseHalfwidthRightwardsArrow,this.lineHeight=v.get(65),this.stopRenderingLineAfter=v.get(115),this.fontLigatures=v.get(50)}equals(p){return this.themeType===p.themeType&&this.renderWhitespace===p.renderWhitespace&&this.renderControlCharacters===p.renderControlCharacters&&this.spaceWidth===p.spaceWidth&&this.middotWidth===p.middotWidth&&this.wsmiddotWidth===p.wsmiddotWidth&&this.useMonospaceOptimizations===p.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===p.canUseHalfwidthRightwardsArrow&&this.lineHeight===p.lineHeight&&this.stopRenderingLineAfter===p.stopRenderingLineAfter&&this.fontLigatures===p.fontLigatures}}e.ViewLineOptions=n;class t{constructor(p){this._options=p,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(p){if(this._renderedViewLine)this._renderedViewLine.domNode=(0,k.createFastDomNode)(p);else throw new Error("I have no rendered view line to set the dom node to...")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(p){this._isMaybeInvalid=!0,this._options=p}onSelectionChanged(){return(0,g.isHighContrast)(this._options.themeType)||this._options.renderWhitespace==="selection"?(this._isMaybeInvalid=!0,!0):!1}renderLine(p,m,v,b){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const w=v.getViewLineRenderingData(p),E=this._options,I=f.LineDecoration.filter(w.inlineDecorations,p,w.minColumn,w.maxColumn);let M=null;if((0,g.isHighContrast)(E.themeType)||this._options.renderWhitespace==="selection"){const A=v.selections;for(const N of A){if(N.endLineNumberp)continue;const F=N.startLineNumber===p?N.startColumn:w.minColumn,O=N.endLineNumber===p?N.endColumn:w.maxColumn;F');const x=(0,_.renderViewLine)(P,b);b.appendString("
    ");let T=null;return i&&s&&w.isBasicASCII&&E.useMonospaceOptimizations&&x.containsForeignElements===0&&(T=new a(this._renderedViewLine?this._renderedViewLine.domNode:null,P,x.characterMapping)),T||(T=r(this._renderedViewLine?this._renderedViewLine.domNode:null,P,x.characterMapping,x.containsRTL,x.containsForeignElements)),this._renderedViewLine=T,!0}layoutLine(p,m){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(m),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}getWidth(p){return this._renderedViewLine?this._renderedViewLine.getWidth(p):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof a:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof a?this._renderedViewLine.monospaceAssumptionsAreValid():i}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof a&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(p,m,v,b){if(!this._renderedViewLine)return null;m=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,m)),v=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,v));const w=this._renderedViewLine.input.stopRenderingLineAfter;if(w!==-1&&m>w+1&&v>w+1)return new S.VisibleRanges(!0,[new S.FloatHorizontalRange(this.getWidth(b),0)]);w!==-1&&m>w+1&&(m=w+1),w!==-1&&v>w+1&&(v=w+1);const E=this._renderedViewLine.getVisibleRangesForRange(p,m,v,b);return E&&E.length>0?new S.VisibleRanges(!1,E):null}getColumnOfNodeOffset(p,m){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(p,m):1}}e.ViewLine=t,t.CLASS_NAME="view-line";class a{constructor(p,m,v){this._cachedWidth=-1,this.domNode=p,this.input=m;const b=Math.floor(m.lineContent.length/300);if(b>0){this._keyColumnPixelOffsetCache=new Float32Array(b);for(let w=0;w=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),i=!1)}return i}toSlowRenderedLine(){return r(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(p,m,v,b){const w=this._getColumnPixelOffset(p,m,b),E=this._getColumnPixelOffset(p,v,b);return[new S.FloatHorizontalRange(w,E-w)]}_getColumnPixelOffset(p,m,v){if(m<=300){const P=this._characterMapping.getHorizontalOffset(m);return this._charWidth*P}const b=Math.floor((m-1)/300)-1,w=(b+1)*300+1;let E=-1;if(this._keyColumnPixelOffsetCache&&(E=this._keyColumnPixelOffsetCache[b],E===-1&&(E=this._actualReadPixelOffset(p,w,v),this._keyColumnPixelOffsetCache[b]=E)),E===-1){const P=this._characterMapping.getHorizontalOffset(m);return this._charWidth*P}const I=this._characterMapping.getHorizontalOffset(w),M=this._characterMapping.getHorizontalOffset(m);return E+this._charWidth*(M-I)}_getReadingTarget(p){return p.domNode.firstChild}_actualReadPixelOffset(p,m,v){if(!this.domNode)return-1;const b=this._characterMapping.getDomPosition(m),w=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(this.domNode),b.partIndex,b.charIndex,b.partIndex,b.charIndex,v);return!w||w.length===0?-1:w[0].left}getColumnOfNodeOffset(p,m){return d(this._characterMapping,p,m)}}class u{constructor(p,m,v,b,w){if(this.domNode=p,this.input=m,this._characterMapping=v,this._isWhitespaceOnly=/^\s*$/.test(m.lineContent),this._containsForeignElements=w,this._cachedWidth=-1,this._pixelOffsetCache=null,!b||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let E=0,I=this._characterMapping.length;E<=I;E++)this._pixelOffsetCache[E]=-1}}_getReadingTarget(p){return p.domNode.firstChild}getWidth(p){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,p?.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(p,m,v,b){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const w=this._readPixelOffset(this.domNode,p,m,b);if(w===-1)return null;const E=this._readPixelOffset(this.domNode,p,v,b);return E===-1?null:[new S.FloatHorizontalRange(w,E-w)]}return this._readVisibleRangesForRange(this.domNode,p,m,v,b)}_readVisibleRangesForRange(p,m,v,b,w){if(v===b){const E=this._readPixelOffset(p,m,v,w);return E===-1?null:[new S.FloatHorizontalRange(E,0)]}else return this._readRawVisibleRangesForRange(p,v,b,w)}_readPixelOffset(p,m,v,b){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(b);const w=this._getReadingTarget(p);return w.firstChild?(b.markDidDomLayout(),w.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const w=this._pixelOffsetCache[v];if(w!==-1)return w;const E=this._actualReadPixelOffset(p,m,v,b);return this._pixelOffsetCache[v]=E,E}return this._actualReadPixelOffset(p,m,v,b)}_actualReadPixelOffset(p,m,v,b){if(this._characterMapping.length===0){const M=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),0,0,0,0,b);return!M||M.length===0?-1:M[0].left}if(v===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(b);const w=this._characterMapping.getDomPosition(v),E=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),w.partIndex,w.charIndex,w.partIndex,w.charIndex,b);if(!E||E.length===0)return-1;const I=E[0].left;if(this.input.isBasicASCII){const M=this._characterMapping.getHorizontalOffset(v),P=Math.round(this.input.spaceWidth*M);if(Math.abs(P-I)<=1)return P}return I}_readRawVisibleRangesForRange(p,m,v,b){if(m===1&&v===this._characterMapping.length)return[new S.FloatHorizontalRange(0,this.getWidth(b))];const w=this._characterMapping.getDomPosition(m),E=this._characterMapping.getDomPosition(v);return D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),w.partIndex,w.charIndex,E.partIndex,E.charIndex,b)}getColumnOfNodeOffset(p,m){return d(this._characterMapping,p,m)}}class h extends u{_readVisibleRangesForRange(p,m,v,b,w){const E=super._readVisibleRangesForRange(p,m,v,b,w);if(!E||E.length===0||v===b||v===1&&b===this._characterMapping.length)return E;if(!this.input.containsRTL){const I=this._readPixelOffset(p,m,b,w);if(I!==-1){const M=E[E.length-1];M.left=4&&v[0]===3&&v[3]===7}static isStrictChildOfViewLines(v){return v.length>4&&v[0]===3&&v[3]===7}static isChildOfScrollableElement(v){return v.length>=2&&v[0]===3&&v[1]===5}static isChildOfMinimap(v){return v.length>=2&&v[0]===3&&v[1]===8}static isChildOfContentWidgets(v){return v.length>=4&&v[0]===3&&v[3]===1}static isChildOfOverflowGuard(v){return v.length>=1&&v[0]===3}static isChildOfOverflowingContentWidgets(v){return v.length>=1&&v[0]===2}static isChildOfOverlayWidgets(v){return v.length>=2&&v[0]===3&&v[1]===4}}class u{constructor(v,b,w){this.viewModel=v.viewModel;const E=v.configuration.options;this.layoutInfo=E.get(142),this.viewDomNode=b.viewDomNode,this.lineHeight=E.get(65),this.stickyTabStops=E.get(114),this.typicalHalfwidthCharacterWidth=E.get(49).typicalHalfwidthCharacterWidth,this.lastRenderData=w,this._context=v,this._viewHelper=b}getZoneAtCoord(v){return u.getZoneAtCoord(this._context,v)}static getZoneAtCoord(v,b){const w=v.viewLayout.getWhitespaceAtVerticalOffset(b);if(w){const E=w.verticalOffset+w.height/2,I=v.viewModel.getLineCount();let M=null,P,x=null;return w.afterLineNumber!==I&&(x=new D.Position(w.afterLineNumber+1,1)),w.afterLineNumber>0&&(M=new D.Position(w.afterLineNumber,v.viewModel.getLineMaxColumn(w.afterLineNumber))),x===null?P=M:M===null?P=x:b=v.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,d._getMouseColumn(this.mouseContentHorizontalOffset,v.typicalHalfwidthCharacterWidth))}}class r extends h{constructor(v,b,w,E,I){super(v,b,w,E),this._ctx=v,I?(this.target=I,this.targetPath=k.PartFingerprints.collect(I,v.viewDomNode)):(this.target=null,this.targetPath=new Uint8Array(0))}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset} - target: ${this.target?this.target.outerHTML:null}`}_getMouseColumn(v=null){return v&&v.columnM.contentLeft+M.width)continue;const P=v.getVerticalOffsetForLineNumber(M.position.lineNumber);if(P<=I&&I<=P+M.height)return b.fulfillContentText(M.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(v,b){const w=v.getZoneAtCoord(b.mouseVerticalOffset);if(w){const E=b.isInContentArea?8:5;return b.fulfillViewZone(E,w.position,w)}return null}static _hitTestTextArea(v,b){return a.isTextArea(b.targetPath)?v.lastRenderData.lastTextareaPosition?b.fulfillContentText(v.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):b.fulfillTextarea():null}static _hitTestMargin(v,b){if(b.isInMarginArea){const w=v.getFullLineRangeAtCoord(b.mouseVerticalOffset),E=w.range.getStartPosition();let I=Math.abs(b.relativePos.x);const M={isAfterLines:w.isAfterLines,glyphMarginLeft:v.layoutInfo.glyphMarginLeft,glyphMarginWidth:v.layoutInfo.glyphMarginWidth,lineNumbersWidth:v.layoutInfo.lineNumbersWidth,offsetX:I};return I-=v.layoutInfo.glyphMarginLeft,I<=v.layoutInfo.glyphMarginWidth?b.fulfillMargin(2,E,w.range,M):(I-=v.layoutInfo.glyphMarginWidth,I<=v.layoutInfo.lineNumbersWidth?b.fulfillMargin(3,E,w.range,M):(I-=v.layoutInfo.lineNumbersWidth,b.fulfillMargin(4,E,w.range,M)))}return null}static _hitTestViewLines(v,b,w){if(!a.isChildOfViewLines(b.targetPath))return null;if(v.isInTopPadding(b.mouseVerticalOffset))return b.fulfillContentEmpty(new D.Position(1,1),c);if(v.isAfterLines(b.mouseVerticalOffset)||v.isInBottomPadding(b.mouseVerticalOffset)){const I=v.viewModel.getLineCount(),M=v.viewModel.getLineMaxColumn(I);return b.fulfillContentEmpty(new D.Position(I,M),c)}if(w){if(a.isStrictChildOfViewLines(b.targetPath)){const I=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset);if(v.viewModel.getLineLength(I)===0){const P=v.getLineWidth(I),x=o(b.mouseContentHorizontalOffset-P);return b.fulfillContentEmpty(new D.Position(I,1),x)}const M=v.getLineWidth(I);if(b.mouseContentHorizontalOffset>=M){const P=o(b.mouseContentHorizontalOffset-M),x=new D.Position(I,v.viewModel.getLineMaxColumn(I));return b.fulfillContentEmpty(x,P)}}return b.fulfillUnknown()}const E=d._doHitTest(v,b);return E.type===1?d.createMouseTargetFromHitTestPosition(v,b,E.spanNode,E.position,E.injectedText):this._createMouseTarget(v,b.withTarget(E.hitTarget),!0)}static _hitTestMinimap(v,b){if(a.isChildOfMinimap(b.targetPath)){const w=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),E=v.viewModel.getLineMaxColumn(w);return b.fulfillScrollbar(new D.Position(w,E))}return null}static _hitTestScrollbarSlider(v,b){if(a.isChildOfScrollableElement(b.targetPath)&&b.target&&b.target.nodeType===1){const w=b.target.className;if(w&&/\b(slider|scrollbar)\b/.test(w)){const E=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),I=v.viewModel.getLineMaxColumn(E);return b.fulfillScrollbar(new D.Position(E,I))}}return null}static _hitTestScrollbar(v,b){if(a.isChildOfScrollableElement(b.targetPath)){const w=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),E=v.viewModel.getLineMaxColumn(w);return b.fulfillScrollbar(new D.Position(w,E))}return null}getMouseColumn(v){const b=this._context.configuration.options,w=b.get(142),E=this._context.viewLayout.getCurrentScrollLeft()+v.x-w.contentLeft;return d._getMouseColumn(E,b.get(49).typicalHalfwidthCharacterWidth)}static _getMouseColumn(v,b){return v<0?1:Math.round(v/b)+1}static createMouseTargetFromHitTestPosition(v,b,w,E,I){const M=E.lineNumber,P=E.column,x=v.getLineWidth(M);if(b.mouseContentHorizontalOffset>x){const R=o(b.mouseContentHorizontalOffset-x);return b.fulfillContentEmpty(E,R)}const T=v.visibleRangeForPosition(M,P);if(!T)return b.fulfillUnknown(E);const A=T.left;if(Math.abs(b.mouseContentHorizontalOffset-A)<1)return b.fulfillContentText(E,null,{mightBeForeignElement:!!I,injectedText:I});const N=[];if(N.push({offset:T.left,column:P}),P>1){const R=v.visibleRangeForPosition(M,P-1);R&&N.push({offset:R.left,column:P-1})}const F=v.viewModel.getLineMaxColumn(M);if(PR.offset-K.offset);const O=b.pos.toClientCoordinates(),W=w.getBoundingClientRect(),U=W.left<=O.clientX&&O.clientX<=W.right;let j=null;for(let R=1;RI)){const P=Math.floor((E+I)/2);let x=b.pos.y+(P-b.mouseVerticalOffset);x<=b.editorPos.y&&(x=b.editorPos.y+1),x>=b.editorPos.y+b.editorPos.height&&(x=b.editorPos.y+b.editorPos.height-1);const T=new L.PageCoordinates(b.pos.x,x),A=this._actualDoHitTestWithCaretRangeFromPoint(v,T.toClientCoordinates());if(A.type===1)return A}return this._actualDoHitTestWithCaretRangeFromPoint(v,b.pos.toClientCoordinates())}static _actualDoHitTestWithCaretRangeFromPoint(v,b){const w=_.getShadowRoot(v.viewDomNode);let E;if(w?typeof w.caretRangeFromPoint>"u"?E=l(w,b.clientX,b.clientY):E=w.caretRangeFromPoint(b.clientX,b.clientY):E=document.caretRangeFromPoint(b.clientX,b.clientY),!E||!E.startContainer)return new C;const I=E.startContainer;if(I.nodeType===I.TEXT_NODE){const M=I.parentNode,P=M?M.parentNode:null,x=P?P.parentNode:null;return(x&&x.nodeType===x.ELEMENT_NODE?x.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,M,E.startOffset):new C(I.parentNode)}else if(I.nodeType===I.ELEMENT_NODE){const M=I.parentNode,P=M?M.parentNode:null;return(P&&P.nodeType===P.ELEMENT_NODE?P.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,I,I.textContent.length):new C(I)}return new C}static _doHitTestWithCaretPositionFromPoint(v,b){const w=document.caretPositionFromPoint(b.clientX,b.clientY);if(w.offsetNode.nodeType===w.offsetNode.TEXT_NODE){const E=w.offsetNode.parentNode,I=E?E.parentNode:null,M=I?I.parentNode:null;return(M&&M.nodeType===M.ELEMENT_NODE?M.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,w.offsetNode.parentNode,w.offset):new C(w.offsetNode.parentNode)}if(w.offsetNode.nodeType===w.offsetNode.ELEMENT_NODE){const E=w.offsetNode.parentNode,I=E&&E.nodeType===E.ELEMENT_NODE?E.className:null,M=E?E.parentNode:null,P=M&&M.nodeType===M.ELEMENT_NODE?M.className:null;if(I===y.ViewLine.CLASS_NAME){const x=w.offsetNode.childNodes[Math.min(w.offset,w.offsetNode.childNodes.length-1)];if(x)return i.createFromDOMInfo(v,x,0)}else if(P===y.ViewLine.CLASS_NAME)return i.createFromDOMInfo(v,w.offsetNode,0)}return new C(w.offsetNode)}static _snapToSoftTabBoundary(v,b){const w=b.getLineContent(v.lineNumber),{tabSize:E}=b.model.getOptions(),I=g.AtomicTabMoveOperations.atomicPosition(w,v.column-1,E,2);return I!==-1?new D.Position(v.lineNumber,I+1):v}static _doHitTest(v,b){let w=new C;if(typeof document.caretRangeFromPoint=="function"?w=this._doHitTestWithCaretRangeFromPoint(v,b):document.caretPositionFromPoint&&(w=this._doHitTestWithCaretPositionFromPoint(v,b.pos.toClientCoordinates())),w.type===1){const E=v.viewModel.getInjectedTextAt(w.position),I=v.viewModel.normalizePosition(w.position,2);(E||!I.equals(w.position))&&(w=new s(I,w.spanNode,E))}return w}}e.MouseTargetFactory=d;function l(m,v,b){const w=document.createRange();let E=m.elementFromPoint(v,b);if(E!==null){for(;E&&E.firstChild&&E.firstChild.nodeType!==E.firstChild.TEXT_NODE&&E.lastChild&&E.lastChild.firstChild;)E=E.lastChild;const I=E.getBoundingClientRect(),M=window.getComputedStyle(E,null).getPropertyValue("font-style"),P=window.getComputedStyle(E,null).getPropertyValue("font-variant"),x=window.getComputedStyle(E,null).getPropertyValue("font-weight"),T=window.getComputedStyle(E,null).getPropertyValue("font-size"),A=window.getComputedStyle(E,null).getPropertyValue("line-height"),N=window.getComputedStyle(E,null).getPropertyValue("font-family"),F=`${M} ${P} ${x} ${T}/${A} ${N}`,O=E.innerText;let W=I.left,U=0,j;if(v>I.left+I.width)U=O.length;else{const R=p.getInstance();for(let K=0;Kthis._createMouseTarget(m,v),m=>this._getMouseColumn(m))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(142).height;const l=new f.EditorMouseEventFactory(this.viewHelper.viewDomNode);this._register(l.onContextMenu(this.viewHelper.viewDomNode,m=>this._onContextMenu(m,!0))),this._register(l.onMouseMove(this.viewHelper.viewDomNode,m=>{this._onMouseMove(m),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=L.addDisposableListener(document,"mousemove",v=>{this.viewHelper.viewDomNode.contains(v.target)||this._onMouseLeave(new f.EditorMouseEvent(v,!1,this.viewHelper.viewDomNode))}))})),this._register(l.onMouseUp(this.viewHelper.viewDomNode,m=>this._onMouseUp(m))),this._register(l.onMouseLeave(this.viewHelper.viewDomNode,m=>this._onMouseLeave(m)));let p=0;this._register(l.onPointerDown(this.viewHelper.viewDomNode,(m,v)=>{p=v})),this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.POINTER_UP,m=>{this._mouseDownOperation.onPointerUp()})),this._register(l.onMouseDown(this.viewHelper.viewDomNode,m=>this._onMouseDown(m,p))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const c=i.MouseWheelClassifier.INSTANCE;let o=0,d=_.EditorZoom.getZoomLevel(),l=!1,p=0;const m=b=>{if(this.viewController.emitMouseWheel(b),!this._context.configuration.options.get(74))return;const w=new k.StandardWheelEvent(b);if(c.acceptStandardWheelEvent(w),c.isPhysicalMouseWheel()){if(v(b)){const E=_.EditorZoom.getZoomLevel(),I=w.deltaY>0?1:-1;_.EditorZoom.setZoomLevel(E+I),w.preventDefault(),w.stopPropagation()}}else Date.now()-o>50&&(d=_.EditorZoom.getZoomLevel(),l=v(b),p=0),o=Date.now(),p+=w.deltaY,l&&(_.EditorZoom.setZoomLevel(d+p/5),w.preventDefault(),w.stopPropagation())};this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.MOUSE_WHEEL,m,{capture:!0,passive:!1}));function v(b){return D.isMacintosh?(b.metaKey||b.ctrlKey)&&!b.shiftKey&&!b.altKey:b.ctrlKey&&!b.metaKey&&!b.shiftKey&&!b.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(c){if(c.hasChanged(142)){const o=this._context.configuration.options.get(142).height;this._height!==o&&(this._height=o,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(c){return this._mouseDownOperation.onCursorStateChanged(c),!1}onFocusChanged(c){return!1}getTargetAtClientPoint(c,o){const l=new f.ClientCoordinates(c,o).toPageCoordinates(),p=(0,f.createEditorPagePosition)(this.viewHelper.viewDomNode);if(l.yp.y+p.height||l.xp.x+p.width)return null;const m=(0,f.createCoordinatesRelativeToEditor)(this.viewHelper.viewDomNode,p,l);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),p,l,m,null)}_createMouseTarget(c,o){let d=c.target;if(!this.viewHelper.viewDomNode.contains(d)){const l=L.getShadowRoot(this.viewHelper.viewDomNode);l&&(d=l.elementsFromPoint(c.posx,c.posy).find(p=>this.viewHelper.viewDomNode.contains(p)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),c.editorPos,c.pos,c.relativePos,o?d:null)}_getMouseColumn(c){return this.mouseTargetFactory.getMouseColumn(c.relativePos)}_onContextMenu(c,o){this.viewController.emitContextMenu({event:c,target:this._createMouseTarget(c,o)})}_onMouseMove(c){this.mouseTargetFactory.mouseTargetIsWidget(c)||c.preventDefault(),!(this._mouseDownOperation.isActive()||c.timestamp{c.preventDefault(),this.viewHelper.focusTextArea()};if(E&&(l||m&&v))I(),this._mouseDownOperation.start(d.type,c,o);else if(p)c.preventDefault();else if(b){const M=d.detail;E&&this.viewHelper.shouldSuppressMouseDownOnViewZone(M.viewZoneId)&&(I(),this._mouseDownOperation.start(d.type,c,o),c.preventDefault())}else w&&this.viewHelper.shouldSuppressMouseDownOnWidget(d.detail)&&(I(),c.preventDefault());this.viewController.emitMouseDown({event:c,target:d})}}e.MouseHandler=n;class t extends y.Disposable{constructor(c,o,d,l,p,m){super(),this._context=c,this._viewController=o,this._viewHelper=d,this._mouseTargetFactory=l,this._createMouseTarget=p,this._getMouseColumn=m,this._mouseMoveMonitor=this._register(new f.GlobalEditorPointerMoveMonitor(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new a(this._context,this._viewHelper,this._mouseTargetFactory,(v,b,w)=>this._dispatchMouse(v,b,w))),this._mouseState=new h,this._currentSelection=new C.Selection(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(c){this._lastMouseEvent=c,this._mouseState.setModifiers(c);const o=this._findMousePosition(c,!1);o&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:c,target:o}):o.type===13&&(o.outsidePosition==="above"||o.outsidePosition==="below")?this._topBottomDragScrolling.start(o,c):(this._topBottomDragScrolling.stop(),this._dispatchMouse(o,!0,1)))}start(c,o,d){this._lastMouseEvent=o,this._mouseState.setStartedOnLineNumbers(c===3),this._mouseState.setStartButtons(o),this._mouseState.setModifiers(o);const l=this._findMousePosition(o,!0);if(!l||!l.position)return;this._mouseState.trySetCount(o.detail,l.position),o.detail=this._mouseState.count;const p=this._context.configuration.options;if(!p.get(89)&&p.get(34)&&!p.get(21)&&!this._mouseState.altKey&&o.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&l.type===6&&l.position&&this._currentSelection.containsPosition(l.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,d,o.buttons,m=>this._onMouseDownThenMove(m),m=>{const v=this._findMousePosition(this._lastMouseEvent,!1);m&&m instanceof KeyboardEvent?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:v?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(l,o.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,d,o.buttons,m=>this._onMouseDownThenMove(m),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(c){this._currentSelection=c.selections[0]}_getPositionOutsideEditor(c){const o=c.editorPos,d=this._context.viewModel,l=this._context.viewLayout,p=this._getMouseColumn(c);if(c.posyo.y+o.height){const v=c.posy-o.y-o.height,b=l.getCurrentScrollTop()+c.relativePos.y,w=S.HitTestContext.getZoneAtCoord(this._context,b);if(w){const I=this._helpPositionJumpOverViewZone(w);if(I)return S.MouseTarget.createOutsideEditor(p,I,"below",v)}const E=l.getLineNumberAtVerticalOffset(b);return S.MouseTarget.createOutsideEditor(p,new g.Position(E,d.getLineMaxColumn(E)),"below",v)}const m=l.getLineNumberAtVerticalOffset(l.getCurrentScrollTop()+c.relativePos.y);if(c.posxo.x+o.width){const v=c.posx-o.x-o.width;return S.MouseTarget.createOutsideEditor(p,new g.Position(m,d.getLineMaxColumn(m)),"right",v)}return null}_findMousePosition(c,o){const d=this._getPositionOutsideEditor(c);if(d)return d;const l=this._createMouseTarget(c,o);if(!l.position)return null;if(l.type===8||l.type===5){const m=this._helpPositionJumpOverViewZone(l.detail);if(m)return S.MouseTarget.createViewZone(l.type,l.element,l.mouseColumn,m,l.detail)}return l}_helpPositionJumpOverViewZone(c){const o=new g.Position(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),d=c.positionBefore,l=c.positionAfter;return d&&l?d.isBefore(o)?d:l:null}_dispatchMouse(c,o,d){c.position&&this._viewController.dispatchMouse({position:c.position,mouseColumn:c.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:d,inSelectionMode:o,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:c.type===6&&c.detail.injectedText!==null})}}class a extends y.Disposable{constructor(c,o,d,l){super(),this._context=c,this._viewHelper=o,this._mouseTargetFactory=d,this._dispatchMouse=l,this._operation=null}dispose(){super.dispose(),this.stop()}start(c,o){this._operation?this._operation.setPosition(c,o):this._operation=new u(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,c,o)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class u extends y.Disposable{constructor(c,o,d,l,p,m){super(),this._context=c,this._viewHelper=o,this._mouseTargetFactory=d,this._dispatchMouse=l,this._position=p,this._mouseEvent=m,this._lastTime=Date.now(),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(()=>this._execute())}dispose(){this._animationFrameDisposable.dispose()}setPosition(c,o){this._position=c,this._mouseEvent=o}_tick(){const c=Date.now(),o=c-this._lastTime;return this._lastTime=c,o}_getScrollSpeed(){const c=this._context.configuration.options.get(65),o=this._context.configuration.options.get(142).height/c,d=this._position.outsideDistance/c;return d<=1.5?Math.max(30,o*(1+d)):d<=3?Math.max(60,o*(2+d)):Math.max(200,o*(7+d))}_execute(){const c=this._context.configuration.options.get(65),o=this._getScrollSpeed(),d=this._tick(),l=o*(d/1e3)*c,p=this._position.outsidePosition==="above"?-l:l;this._context.viewModel.viewLayout.deltaScrollNow(0,p),this._viewHelper.renderNow();const m=this._context.viewLayout.getLinesViewportData(),v=this._position.outsidePosition==="above"?m.startLineNumber:m.endLineNumber;let b;{const w=(0,f.createEditorPagePosition)(this._viewHelper.viewDomNode),E=this._context.configuration.options.get(142).horizontalScrollbarHeight,I=new f.PageCoordinates(this._mouseEvent.pos.x,w.y+w.height-E-.1),M=(0,f.createCoordinatesRelativeToEditor)(this._viewHelper.viewDomNode,w,I);b=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),w,I,M,null)}(!b.position||b.position.lineNumber!==v)&&(this._position.outsidePosition==="above"?b=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new g.Position(v,1),"above",this._position.outsideDistance):b=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new g.Position(v,this._context.viewModel.getLineMaxColumn(v)),"below",this._position.outsideDistance)),this._dispatchMouse(b,!0,2),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(()=>this._execute())}}class h{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(c){this._altKey=c.altKey,this._ctrlKey=c.ctrlKey,this._metaKey=c.metaKey,this._shiftKey=c.shiftKey}setStartButtons(c){this._leftButton=c.leftButton,this._middleButton=c.middleButton}setStartedOnLineNumbers(c){this._startedOnLineNumbers=c}trySetCount(c,o){const d=new Date().getTime();d-this._lastSetMouseDownCountTime>h.CLEAR_MOUSE_DOWN_COUNT_TIME&&(c=1),this._lastSetMouseDownCountTime=d,c>this._lastMouseDownCount+1&&(c=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(o)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=o,this._lastMouseDownCount=Math.min(c,this._lastMouseDownPositionEqualCount)}}h.CLEAR_MOUSE_DOWN_COUNT_TIME=400}),define(ne[837],se([1,0,7,17,61,2,836,159,217,185]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PointerHandler=e.PointerEventHandler=void 0;class C extends S.MouseHandler{constructor(t,a,u){super(t,a,u),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,r=>this.onTap(r))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,r=>this.onChange(r))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,r=>this._onContextMenu(new f.EditorMouseEvent(r,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType="mouse",this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,"pointerdown",r=>{const c=r.pointerType;if(c==="mouse"){this._lastPointerType="mouse";return}else c==="touch"?this._lastPointerType="touch":this._lastPointerType="pen"}));const h=new f.EditorPointerEventFactory(this.viewHelper.viewDomNode);this._register(h.onPointerMove(this.viewHelper.viewDomNode,r=>this._onMouseMove(r))),this._register(h.onPointerUp(this.viewHelper.viewDomNode,r=>this._onMouseUp(r))),this._register(h.onPointerLeave(this.viewHelper.viewDomNode,r=>this._onMouseLeave(r))),this._register(h.onPointerDown(this.viewHelper.viewDomNode,(r,c)=>this._onMouseDown(r,c)))}onTap(t){if(!t.initialTarget||!this.viewHelper.linesContentDomNode.contains(t.initialTarget))return;t.preventDefault(),this.viewHelper.focusTextArea();const a=this._createMouseTarget(new f.EditorMouseEvent(t,!1,this.viewHelper.viewDomNode),!1);a.position&&this.viewController.dispatchMouse({position:a.position,mouseColumn:a.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:t.tapCount,inSelectionMode:!1,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:a.type===6&&a.detail.injectedText!==null})}onChange(t){this._lastPointerType==="touch"&&this._context.viewModel.viewLayout.deltaScrollNow(-t.translationX,-t.translationY)}_onMouseDown(t,a){t.browserEvent.pointerType!=="touch"&&super._onMouseDown(t,a)}}e.PointerEventHandler=C;class s extends S.MouseHandler{constructor(t,a,u){super(t,a,u),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,h=>this.onTap(h))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,h=>this.onChange(h))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,h=>this._onContextMenu(new f.EditorMouseEvent(h,!1,this.viewHelper.viewDomNode),!1)))}onTap(t){t.preventDefault(),this.viewHelper.focusTextArea();const a=this._createMouseTarget(new f.EditorMouseEvent(t,!1,this.viewHelper.viewDomNode),!1);if(a.position){const u=document.createEvent("CustomEvent");u.initEvent(g.TextAreaSyntethicEvents.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(u),this.viewController.moveTo(a.position,1)}}onChange(t){this._context.viewModel.viewLayout.deltaScrollNow(-t.translationX,-t.translationY)}}class i extends D.Disposable{constructor(t,a,u){super(),k.isIOS&&_.BrowserFeatures.pointerEvents?this.handler=this._register(new C(t,a,u)):window.TouchEvent?this.handler=this._register(new s(t,a,u)):this.handler=this._register(new S.MouseHandler(t,a,u))}getTargetAtClientPoint(t,a){return this.handler.getTargetAtClientPoint(t,a)}}e.PointerHandler=i}),define(ne[838],se([1,0,173,13,17,59,144,229,53,477,251,12,5,421]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewLines=void 0;class n{constructor(){this._currentVisibleRange=new i.Range(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(r){this._currentVisibleRange=r}}class t{constructor(r,c,o,d,l,p,m){this.minimalReveal=r,this.lineNumber=c,this.startColumn=o,this.endColumn=d,this.startScrollTop=l,this.stopScrollTop=p,this.scrollType=m,this.type="range",this.minLineNumber=c,this.maxLineNumber=c}}class a{constructor(r,c,o,d,l){this.minimalReveal=r,this.selections=c,this.startScrollTop=o,this.stopScrollTop=d,this.scrollType=l,this.type="selections";let p=c[0].startLineNumber,m=c[0].endLineNumber;for(let v=1,b=c.length;v{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new k.RunOnceScheduler(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new n,this._horizontalRevealRequest=null,this._stickyScrollEnabled=d.get(113).enabled,this._maxNumberStickyLines=d.get(113).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new C.ViewLine(this._viewLineOptions)}onConfigurationChanged(r){this._visibleLines.onConfigurationChanged(r),r.hasChanged(143)&&(this._maxLineWidth=0);const c=this._context.configuration.options,o=c.get(49),d=c.get(143);return this._lineHeight=c.get(65),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._isViewportWrapping=d.isViewportWrapping,this._revealHorizontalRightPadding=c.get(98),this._cursorSurroundingLines=c.get(28),this._cursorSurroundingLinesStyle=c.get(29),this._canUseLayerHinting=!c.get(31),this._stickyScrollEnabled=c.get(113).enabled,this._maxNumberStickyLines=c.get(113).maxLineCount,(0,D.applyFontInfo)(this.domNode,o),this._onOptionsMaybeChanged(),r.hasChanged(142)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const r=this._context.configuration,c=new C.ViewLineOptions(r,this._context.theme.type);if(!this._viewLineOptions.equals(c)){this._viewLineOptions=c;const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++)this._visibleLines.getVisibleLine(l).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();let d=!1;for(let l=c;l<=o;l++)d=this._visibleLines.getVisibleLine(l).onSelectionChanged()||d;return d}onDecorationsChanged(r){{const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();for(let d=c;d<=o;d++)this._visibleLines.getVisibleLine(d).onDecorationsChanged()}return!0}onFlushed(r){const c=this._visibleLines.onFlushed(r);return this._maxLineWidth=0,c}onLinesChanged(r){return this._visibleLines.onLinesChanged(r)}onLinesDeleted(r){return this._visibleLines.onLinesDeleted(r)}onLinesInserted(r){return this._visibleLines.onLinesInserted(r)}onRevealRangeRequest(r){const c=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),r.source,r.minimalReveal,r.range,r.selections,r.verticalType);if(c===-1)return!1;let o=this._context.viewLayout.validateScrollPosition({scrollTop:c});r.revealHorizontal?r.range&&r.range.startLineNumber!==r.range.endLineNumber?o={scrollTop:o.scrollTop,scrollLeft:0}:r.range?this._horizontalRevealRequest=new t(r.minimalReveal,r.range.startLineNumber,r.range.startColumn,r.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),o.scrollTop,r.scrollType):r.selections&&r.selections.length>0&&(this._horizontalRevealRequest=new a(r.minimalReveal,r.selections,this._context.viewLayout.getCurrentScrollTop(),o.scrollTop,r.scrollType)):this._horizontalRevealRequest=null;const l=Math.abs(this._context.viewLayout.getCurrentScrollTop()-o.scrollTop)<=this._lineHeight?1:r.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(o,l),!0}onScrollChanged(r){if(this._horizontalRevealRequest&&r.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&r.scrollTopChanged){const c=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),o=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(r.scrollTopo)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(r.scrollWidth),this._visibleLines.onScrollChanged(r)||!0}onTokensChanged(r){return this._visibleLines.onTokensChanged(r)}onZonesChanged(r){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(r)}onThemeChanged(r){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(r,c){const o=this._getViewLineDomNode(r);if(o===null)return null;const d=this._getLineNumberFor(o);if(d===-1||d<1||d>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(d)===1)return new s.Position(d,1);const l=this._visibleLines.getStartLineNumber(),p=this._visibleLines.getEndLineNumber();if(dp)return null;let m=this._visibleLines.getVisibleLine(d).getColumnOfNodeOffset(r,c);const v=this._context.viewModel.getLineMinColumn(d);return mo)return-1;const d=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),l=this._visibleLines.getVisibleLine(r).getWidth(d);return this._updateLineWidthsSlowIfDomDidLayout(d),l}linesVisibleRangesForRange(r,c){if(this.shouldRender())return null;const o=r.endLineNumber,d=i.Range.intersectRanges(r,this._lastRenderedData.getCurrentVisibleRange());if(!d)return null;const l=[];let p=0;const m=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot);let v=0;c&&(v=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(d.startLineNumber,1)).lineNumber);const b=this._visibleLines.getStartLineNumber(),w=this._visibleLines.getEndLineNumber();for(let E=d.startLineNumber;E<=d.endLineNumber;E++){if(Ew)continue;const I=E===d.startLineNumber?d.startColumn:1,M=E!==d.endLineNumber,P=M?this._context.viewModel.getLineMaxColumn(E):d.endColumn,x=this._visibleLines.getVisibleLine(E).getVisibleRangesForRange(E,I,P,m);if(x){if(c&&Ethis._visibleLines.getEndLineNumber())return null;const d=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),l=this._visibleLines.getVisibleLine(r).getVisibleRangesForRange(r,c,o,d);return this._updateLineWidthsSlowIfDomDidLayout(d),l}visibleRangeForPosition(r){const c=this._visibleRangesForLineRange(r.lineNumber,r.column,r.column);return c?new S.HorizontalPosition(c.outsideRenderedLine,c.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(r){r.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();let d=1,l=!0;for(let p=c;p<=o;p++){const m=this._visibleLines.getVisibleLine(p);if(r&&!m.getWidthIsFast()){l=!1;continue}d=Math.max(d,m.getWidth(null))}return l&&c===1&&o===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(d),l}_checkMonospaceFontAssumptions(){let r=-1,c=-1;const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++){const p=this._visibleLines.getVisibleLine(l);if(p.needsMonospaceFontCheck()){const m=p.getWidth(null);m>c&&(c=m,r=l)}}if(r!==-1&&!this._visibleLines.getVisibleLine(r).monospaceAssumptionsAreValid())for(let l=o;l<=d;l++)this._visibleLines.getVisibleLine(l).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(r){if(this._visibleLines.renderLines(r),this._lastRenderedData.setCurrentVisibleRange(r.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const o=this._horizontalRevealRequest;if(r.startLineNumber<=o.minLineNumber&&o.maxLineNumber<=r.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const d=this._computeScrollLeftToReveal(o);d&&(this._isViewportWrapping||this._ensureMaxLineWidth(d.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:d.scrollLeft},o.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),y.isLinux&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++)if(this._visibleLines.getVisibleLine(l).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const c=this._context.viewLayout.getCurrentScrollTop()-r.bigNumbersDelta;this._linesContent.setTop(-c),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(r){const c=Math.ceil(r);this._maxLineWidth0){let A=l[0].startLineNumber,N=l[0].endLineNumber;for(let F=1,O=l.length;Fv){if(!w)return-1;T=E}else if(p===5||p===6)if(p===6&&m<=E&&I<=b)T=m;else{const A=Math.max(5*this._lineHeight,v*.2),N=E-A,F=I-v;T=Math.max(F,N)}else if(p===1||p===2)if(p===2&&m<=E&&I<=b)T=m;else{const A=(E+I)/2;T=Math.max(0,A-v/2)}else T=this._computeMinimumScrolling(m,b,E,I,p===3,p===4);return T}_computeScrollLeftToReveal(r){const c=this._context.viewLayout.getCurrentViewport(),o=this._context.configuration.options.get(142),d=c.left,l=d+c.width-o.verticalScrollbarWidth;let p=1073741824,m=0;if(r.type==="range"){const b=this._visibleRangesForLineRange(r.lineNumber,r.startColumn,r.endColumn);if(!b)return null;for(const w of b.ranges)p=Math.min(p,Math.round(w.left)),m=Math.max(m,Math.round(w.left+w.width))}else for(const b of r.selections){if(b.startLineNumber!==b.endLineNumber)return null;const w=this._visibleRangesForLineRange(b.startLineNumber,b.startColumn,b.endColumn);if(!w)return null;for(const E of w.ranges)p=Math.min(p,Math.round(E.left)),m=Math.max(m,Math.round(E.left+E.width))}return r.minimalReveal||(p=Math.max(0,p-u.HORIZONTAL_EXTRA_PX),m+=this._revealHorizontalRightPadding),r.type==="selections"&&m-p>c.width?null:{scrollLeft:this._computeMinimumScrolling(d,l,p,m),maxHorizontalOffset:m}}_computeMinimumScrolling(r,c,o,d,l,p){r=r|0,c=c|0,o=o|0,d=d|0,l=!!l,p=!!p;const m=c-r;if(d-oc)return Math.max(0,d-m)}else return o;return r}}e.ViewLines=u,u.HORIZONTAL_EXTRA_PX=30}),define(ne[356],se([1,0,7,44,68,226,222,14,13,384,106,9,6,120,2,17,11,734,339,100,22,88,174]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputList=e.QuickInputListFocus=void 0;const l=L.$;class p{constructor(T,A,N,F,O,W,U){var j,R,K;this._checked=!1,this._hidden=!1,this.hasCheckbox=F,this.index=N,this.fireButtonTriggered=O,this.fireSeparatorButtonTriggered=W,this._onChecked=U,this.onChecked=F?i.Event.map(i.Event.filter(this._onChecked.event,G=>G.listElement===this),G=>G.checked):i.Event.None,T.type==="separator"?this._separator=T:(this.item=T,A&&A.type==="separator"&&!A.buttons&&(this._separator=A),this.saneDescription=this.item.description,this.saneDetail=this.item.detail,this._labelHighlights=(j=this.item.highlights)===null||j===void 0?void 0:j.label,this._descriptionHighlights=(R=this.item.highlights)===null||R===void 0?void 0:R.description,this._detailHighlights=(K=this.item.highlights)===null||K===void 0?void 0:K.detail,this.saneTooltip=this.item.tooltip),this._init=new c.Lazy(()=>{var G;const Z=(G=T.label)!==null&&G!==void 0?G:"",J=(0,n.parseLabelWithIcons)(Z).text.trim(),X=T.ariaLabel||[Z,this.saneDescription,this.saneDetail].map(H=>(0,n.getCodiconAriaLabel)(H)).filter(H=>!!H).join(", ");return{saneLabel:Z,saneSortLabel:J,saneAriaLabel:X}})}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(T){this._element=T}get hidden(){return this._hidden}set hidden(T){this._hidden=T}get checked(){return this._checked}set checked(T){T!==this._checked&&(this._checked=T,this._onChecked.fire({listElement:this,checked:T}))}get separator(){return this._separator}set separator(T){this._separator=T}get labelHighlights(){return this._labelHighlights}set labelHighlights(T){this._labelHighlights=T}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(T){this._descriptionHighlights=T}get detailHighlights(){return this._detailHighlights}set detailHighlights(T){this._detailHighlights=T}}class m{constructor(T){this.themeService=T}get templateId(){return m.ID}renderTemplate(T){const A=Object.create(null);A.toDisposeElement=[],A.toDisposeTemplate=[],A.entry=L.append(T,l(".quick-input-list-entry"));const N=L.append(A.entry,l("label.quick-input-list-label"));A.toDisposeTemplate.push(L.addStandardDisposableListener(N,L.EventType.CLICK,R=>{A.checkbox.offsetParent||R.preventDefault()})),A.checkbox=L.append(N,l("input.quick-input-list-checkbox")),A.checkbox.type="checkbox",A.toDisposeTemplate.push(L.addStandardDisposableListener(A.checkbox,L.EventType.CHANGE,R=>{A.element.checked=A.checkbox.checked}));const F=L.append(N,l(".quick-input-list-rows")),O=L.append(F,l(".quick-input-list-row")),W=L.append(F,l(".quick-input-list-row"));A.label=new D.IconLabel(O,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0}),A.icon=L.prepend(A.label.element,l(".quick-input-list-icon"));const U=L.append(O,l(".quick-input-list-entry-keybinding"));A.keybinding=new S.KeybindingLabel(U,a.OS);const j=L.append(W,l(".quick-input-list-label-meta"));return A.detail=new D.IconLabel(j,{supportHighlights:!0,supportIcons:!0}),A.separator=L.append(A.entry,l(".quick-input-list-separator")),A.actionBar=new y.ActionBar(A.entry),A.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),A.toDisposeTemplate.push(A.actionBar),A}renderElement(T,A,N){var F,O,W,U;N.element=T,T.element=(F=N.entry)!==null&&F!==void 0?F:void 0;const j=T.item?T.item:T.separator;N.checkbox.checked=T.checked,N.toDisposeElement.push(T.onChecked(X=>N.checkbox.checked=X));const{labelHighlights:R,descriptionHighlights:K,detailHighlights:G}=T;if(!((O=T.item)===null||O===void 0)&&O.iconPath){const X=(0,d.isDark)(this.themeService.getColorTheme().type)?T.item.iconPath.dark:(W=T.item.iconPath.light)!==null&&W!==void 0?W:T.item.iconPath.dark,H=o.URI.revive(X);N.icon.className="quick-input-list-icon",N.icon.style.backgroundImage=L.asCSSUrl(H)}else N.icon.style.backgroundImage="",N.icon.className=!((U=T.item)===null||U===void 0)&&U.iconClass?`quick-input-list-icon ${T.item.iconClass}`:"";const Z={matches:R||[],descriptionTitle:T.saneDescription,descriptionMatches:K||[],labelEscapeNewLines:!0};j.type!=="separator"?(Z.extraClasses=j.iconClasses,Z.italic=j.italic,Z.strikethrough=j.strikethrough,N.entry.classList.remove("quick-input-list-separator-as-item")):N.entry.classList.add("quick-input-list-separator-as-item"),N.label.setLabel(T.saneLabel,T.saneDescription,Z),N.keybinding.set(j.type==="separator"?void 0:j.keybinding),T.saneDetail?(N.detail.element.style.display="",N.detail.setLabel(T.saneDetail,void 0,{matches:G,title:T.saneDetail,labelEscapeNewLines:!0})):N.detail.element.style.display="none",T.item&&T.separator&&T.separator.label?(N.separator.textContent=T.separator.label,N.separator.style.display=""):N.separator.style.display="none",N.entry.classList.toggle("quick-input-list-separator-border",!!T.separator);const J=j.buttons;J&&J.length?(N.actionBar.push(J.map((X,H)=>{let B=X.iconClass||(X.iconPath?(0,r.getIconClass)(X.iconPath):void 0);return X.alwaysVisible&&(B=B?`${B} always-visible`:"always-visible"),{id:`id-${H}`,class:B,enabled:!0,label:"",tooltip:X.tooltip||"",run:()=>{j.type!=="separator"?T.fireButtonTriggered({button:X,item:j}):T.fireSeparatorButtonTriggered({button:X,separator:j})}}}),{icon:!0,label:!1}),N.entry.classList.add("has-actions")):N.entry.classList.remove("has-actions")}disposeElement(T,A,N){N.toDisposeElement=(0,t.dispose)(N.toDisposeElement),N.actionBar.clear()}disposeTemplate(T){T.toDisposeElement=(0,t.dispose)(T.toDisposeElement),T.toDisposeTemplate=(0,t.dispose)(T.toDisposeTemplate)}}m.ID="listelement";class v{getHeight(T){return T.item?T.saneDetail?44:22:24}getTemplateId(T){return m.ID}}var b;(function(x){x[x.First=1]="First",x[x.Second=2]="Second",x[x.Last=3]="Last",x[x.Next=4]="Next",x[x.Previous=5]="Previous",x[x.NextPage=6]="NextPage",x[x.PreviousPage=7]="PreviousPage"})(b||(e.QuickInputListFocus=b={}));class w{constructor(T,A,N,F){this.parent=T,this.options=N,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.matchOnLabelMode="fuzzy",this.sortByLabel=!0,this._onChangedAllVisibleChecked=new i.Emitter,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new i.Emitter,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new i.Emitter,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new i.Emitter,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new i.Emitter,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new i.Emitter,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._onKeyDown=new i.Emitter,this.onKeyDown=this._onKeyDown.event,this._onLeave=new i.Emitter,this.onLeave=this._onLeave.event,this._listElementChecked=new i.Emitter,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=A,this.container=L.append(this.parent,l(".quick-input-list"));const O=new v,W=new P;if(this.list=N.createList("QuickInput",this.container,O,[new m(F)],{identityProvider:{getId:U=>{var j,R,K,G,Z,J,X,H;return(H=(J=(G=(R=(j=U.item)===null||j===void 0?void 0:j.id)!==null&&R!==void 0?R:(K=U.item)===null||K===void 0?void 0:K.label)!==null&&G!==void 0?G:(Z=U.separator)===null||Z===void 0?void 0:Z.id)!==null&&J!==void 0?J:(X=U.separator)===null||X===void 0?void 0:X.label)!==null&&H!==void 0?H:""}},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:W}),this.list.getHTMLElement().id=A,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown(U=>{const j=new k.StandardKeyboardEvent(U);switch(j.keyCode){case 10:this.toggleCheckbox();break;case 31:(a.isMacintosh?U.metaKey:U.ctrlKey)&&this.list.setFocus((0,f.range)(this.list.length));break;case 16:{const R=this.list.getFocus();R.length===1&&R[0]===0&&this._onLeave.fire();break}case 18:{const R=this.list.getFocus();R.length===1&&R[0]===this.list.length-1&&this._onLeave.fire();break}}this._onKeyDown.fire(j)})),this.disposables.push(this.list.onMouseDown(U=>{U.browserEvent.button!==2&&U.browserEvent.preventDefault()})),this.disposables.push(L.addDisposableListener(this.container,L.EventType.CLICK,U=>{(U.x||U.y)&&this._onLeave.fire()})),this.disposables.push(this.list.onMouseMiddleClick(U=>{this._onLeave.fire()})),this.disposables.push(this.list.onContextMenu(U=>{typeof U.index=="number"&&(U.browserEvent.preventDefault(),this.list.setSelection([U.index]))})),N.hoverDelegate){const U=new _.ThrottledDelayer(N.hoverDelegate.delay);this.disposables.push(this.list.onMouseOver(j=>we(this,void 0,void 0,function*(){var R;if(j.browserEvent.target instanceof HTMLAnchorElement){U.cancel();return}if(!(!(j.browserEvent.relatedTarget instanceof HTMLAnchorElement)&&L.isAncestor(j.browserEvent.relatedTarget,(R=j.element)===null||R===void 0?void 0:R.element)))try{yield U.trigger(()=>we(this,void 0,void 0,function*(){j.element&&this.showHover(j.element)}))}catch(K){if(!(0,s.isCancellationError)(K))throw K}}))),this.disposables.push(this.list.onMouseOut(j=>{var R;L.isAncestor(j.browserEvent.relatedTarget,(R=j.element)===null||R===void 0?void 0:R.element)||U.cancel()})),this.disposables.push(U)}this.disposables.push(this._listElementChecked.event(U=>this.fireCheckedEvents())),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onSeparatorButtonTriggered,this._onLeave,this._onKeyDown)}get onDidChangeFocus(){return i.Event.map(this.list.onDidChangeFocus,T=>T.elements.map(A=>A.item))}get onDidChangeSelection(){return i.Event.map(this.list.onDidChangeSelection,T=>({items:T.elements.map(A=>A.item),event:T.browserEvent}))}get scrollTop(){return this.list.scrollTop}set scrollTop(T){this.list.scrollTop=T}get ariaLabel(){return this.list.getHTMLElement().ariaLabel}set ariaLabel(T){this.list.getHTMLElement().ariaLabel=T}getAllVisibleChecked(){return this.allVisibleChecked(this.elements,!1)}allVisibleChecked(T,A=!0){for(let N=0,F=T.length;N{A.hidden||(A.checked=T)})}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}setElements(T){this.elementDisposables=(0,t.dispose)(this.elementDisposables);const A=W=>this.fireButtonTriggered(W),N=W=>this.fireSeparatorButtonTriggered(W);this.inputElements=T;const F=new Map,O=this.parent.classList.contains("show-checkboxes");this.elements=T.reduce((W,U,j)=>{var R;const K=j>0?T[j-1]:void 0;if(U.type==="separator"&&!U.buttons)return W;const G=new p(U,K,j,O,A,N,this._listElementChecked),Z=W.length;return W.push(G),F.set((R=G.item)!==null&&R!==void 0?R:G.separator,Z),W},[]),this.elementsToIndexes=F,this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}getFocusedElements(){return this.list.getFocusedElements().map(T=>T.item)}setFocusedElements(T){if(this.list.setFocus(T.filter(A=>this.elementsToIndexes.has(A)).map(A=>this.elementsToIndexes.get(A))),T.length>0){const A=this.list.getFocus()[0];typeof A=="number"&&this.list.reveal(A)}}getActiveDescendant(){return this.list.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(T){this.list.setSelection(T.filter(A=>this.elementsToIndexes.has(A)).map(A=>this.elementsToIndexes.get(A)))}getCheckedElements(){return this.elements.filter(T=>T.checked).map(T=>T.item).filter(T=>!!T)}setCheckedElements(T){try{this._fireCheckedEvents=!1;const A=new Set;for(const N of T)A.add(N);for(const N of this.elements)N.checked=A.has(N.item)}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}set enabled(T){this.list.getHTMLElement().style.pointerEvents=T?"":"none"}focus(T){if(!this.list.length)return;switch(T===b.Second&&this.list.length<2&&(T=b.First),T){case b.First:this.list.scrollTop=0,this.list.focusFirst(void 0,N=>!!N.item);break;case b.Second:this.list.scrollTop=0,this.list.focusNth(1,void 0,N=>!!N.item);break;case b.Last:this.list.scrollTop=this.list.scrollHeight,this.list.focusLast(void 0,N=>!!N.item);break;case b.Next:{this.list.focusNext(void 0,!0,void 0,F=>!!F.item);const N=this.list.getFocus()[0];N!==0&&!this.elements[N-1].item&&this.list.firstVisibleIndex>N-1&&this.list.reveal(N-1);break}case b.Previous:{this.list.focusPrevious(void 0,!0,void 0,F=>!!F.item);const N=this.list.getFocus()[0];N!==0&&!this.elements[N-1].item&&this.list.firstVisibleIndex>N-1&&this.list.reveal(N-1);break}case b.NextPage:this.list.focusNextPage(void 0,N=>!!N.item);break;case b.PreviousPage:this.list.focusPreviousPage(void 0,N=>!!N.item);break}const A=this.list.getFocus()[0];typeof A=="number"&&this.list.reveal(A)}clearFocus(){this.list.setFocus([])}domFocus(){this.list.domFocus()}showHover(T){var A,N,F;this.options.hoverDelegate!==void 0&&(this._lastHover&&!this._lastHover.isDisposed&&((N=(A=this.options.hoverDelegate).onDidHideHover)===null||N===void 0||N.call(A),(F=this._lastHover)===null||F===void 0||F.dispose()),!(!T.element||!T.saneTooltip)&&(this._lastHover=this.options.hoverDelegate.showHover({content:T.saneTooltip,target:T.element,linkHandler:O=>{this.options.linkOpenerDelegate(O)},showPointer:!0,container:this.container,hoverPosition:1},!1)))}layout(T){this.list.getHTMLElement().style.maxHeight=T?`${Math.floor(T/44)*44+6}px`:"",this.list.layout()}filter(T){if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;const A=T;if(T=T.trim(),!T||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this.elements.forEach(F=>{F.labelHighlights=void 0,F.descriptionHighlights=void 0,F.detailHighlights=void 0,F.hidden=!1;const O=F.index&&this.inputElements[F.index-1];F.item&&(F.separator=O&&O.type==="separator"&&!O.buttons?O:void 0)});else{let F;this.elements.forEach(O=>{var W,U,j,R;let K;this.matchOnLabelMode==="fuzzy"?K=this.matchOnLabel&&(W=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneLabel)))!==null&&W!==void 0?W:void 0:K=this.matchOnLabel&&(U=E(A,(0,n.parseLabelWithIcons)(O.saneLabel)))!==null&&U!==void 0?U:void 0;const G=this.matchOnDescription&&(j=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneDescription||"")))!==null&&j!==void 0?j:void 0,Z=this.matchOnDetail&&(R=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneDetail||"")))!==null&&R!==void 0?R:void 0;if(K||G||Z?(O.labelHighlights=K,O.descriptionHighlights=G,O.detailHighlights=Z,O.hidden=!1):(O.labelHighlights=void 0,O.descriptionHighlights=void 0,O.detailHighlights=void 0,O.hidden=O.item?!O.item.alwaysShow:!0),O.item?O.separator=void 0:O.separator&&(O.hidden=!0),!this.sortByLabel){const J=O.index&&this.inputElements[O.index-1];F=J&&J.type==="separator"?J:F,F&&!O.hidden&&(O.separator=F,F=void 0)}})}const N=this.elements.filter(F=>!F.hidden);if(this.sortByLabel&&T){const F=T.toLowerCase();N.sort((O,W)=>M(O,W,F))}return this.elementsToIndexes=N.reduce((F,O,W)=>{var U;return F.set((U=O.item)!==null&&U!==void 0?U:O.separator,W),F},new Map),this.list.splice(0,this.list.length,N),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(N.length),!0}toggleCheckbox(){try{this._fireCheckedEvents=!1;const T=this.list.getFocusedElements(),A=this.allVisibleChecked(T);for(const N of T)N.checked=!A}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}display(T){this.container.style.display=T?"":"none"}isDisplayed(){return this.container.style.display!=="none"}dispose(){this.elementDisposables=(0,t.dispose)(this.elementDisposables),this.disposables=(0,t.dispose)(this.disposables)}fireCheckedEvents(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}fireButtonTriggered(T){this._onButtonTriggered.fire(T)}fireSeparatorButtonTriggered(T){this._onSeparatorButtonTriggered.fire(T)}style(T){this.list.style(T)}toggleHover(){const T=this.list.getFocusedElements()[0];if(!T?.saneTooltip)return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}const A=this.list.getFocusedElements()[0];if(!A)return;this.showHover(A);const N=new t.DisposableStore;N.add(this.list.onDidChangeFocus(F=>{F.indexes.length&&this.showHover(F.elements[0])})),this._lastHover&&N.add(this._lastHover),this._toggleHover=N,this.elementDisposables.push(this._toggleHover)}}e.QuickInputList=w,ke([C.memoize],w.prototype,"onDidChangeFocus",null),ke([C.memoize],w.prototype,"onDidChangeSelection",null);function E(x,T){const{text:A,iconOffsets:N}=T;if(!N||N.length===0)return I(x,A);const F=(0,u.ltrim)(A," "),O=A.length-F.length,W=I(x,F);if(W)for(const U of W){const j=N[U.start+O]+O;U.start+=j,U.end+=j}return W}function I(x,T){const A=T.toLowerCase().indexOf(x.toLowerCase());return A!==-1?[{start:A,end:A+x.length}]:null}function M(x,T,A){const N=x.labelHighlights||[],F=T.labelHighlights||[];return N.length&&!F.length?-1:!N.length&&F.length?1:N.length===0&&F.length===0?0:(0,g.compareAnything)(x.saneSortLabel,T.saneSortLabel,A)}class P{getWidgetAriaLabel(){return(0,h.localize)(0,null)}getAriaLabel(T){var A;return!((A=T.separator)===null||A===void 0)&&A.label?`${T.saneAriaLabel}, ${T.separator.label}`:T.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(T){return T.hasCheckbox?"checkbox":"option"}isChecked(T){if(T.hasCheckbox)return{value:T.checked,onDidChange:T.onChecked}}}}),define(ne[839],se([1,0,7,44,153,39,14,13,25,6,2,17,101,26,732,71,356,339,174]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InputBox=e.QuickPick=e.backButton=void 0,e.backButton={iconClass:n.ThemeIcon.asClassName(_.Codicon.quickInputBack),tooltip:(0,t.localize)(0,null),handle:-1};class r extends C.Disposable{constructor(l){super(),this.ui=l,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._buttons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=r.noPromptMessage,this._severity=i.default.Ignore,this.onDidTriggerButtonEmitter=this._register(new g.Emitter),this.onDidHideEmitter=this._register(new g.Emitter),this.onDisposeEmitter=this._register(new g.Emitter),this.visibleDisposables=this._register(new C.DisposableStore),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(l){this._title=l,this.update()}get description(){return this._description}set description(l){this._description=l,this.update()}get step(){return this._steps}set step(l){this._steps=l,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(l){this._totalSteps=l,this.update()}get enabled(){return this._enabled}set enabled(l){this._enabled=l,this.update()}get contextKey(){return this._contextKey}set contextKey(l){this._contextKey=l,this.update()}get busy(){return this._busy}set busy(l){this._busy=l,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(l){const p=this._ignoreFocusOut!==l&&!s.isIOS;this._ignoreFocusOut=l&&!s.isIOS,p&&this.update()}get buttons(){return this._buttons}set buttons(l){this._buttons=l,this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(l){this._toggles=l??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(l){this._validationMessage=l,this.update()}get severity(){return this._severity}set severity(l){this._severity=l,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(l=>{this.buttons.indexOf(l)!==-1&&this.onDidTriggerButtonEmitter.fire(l)})),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(l=a.QuickInputHideReason.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:l})}update(){var l,p;if(!this.visible)return;const m=this.getTitle();m&&this.ui.title.textContent!==m?this.ui.title.textContent=m:!m&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText="\xA0");const v=this.getDescription();if(this.ui.description1.textContent!==v&&(this.ui.description1.textContent=v),this.ui.description2.textContent!==v&&(this.ui.description2.textContent=v),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?L.reset(this.ui.widget,this._widget):L.reset(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new f.TimeoutTimer,this.busyDelay.setIfNotSet(()=>{this.visible&&this.ui.progressBar.infinite()},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const w=this.buttons.filter(I=>I===e.backButton);this.ui.leftActionBar.push(w.map((I,M)=>{const P=new D.Action(`id-${M}`,"",I.iconClass||(0,h.getIconClass)(I.iconPath),!0,()=>we(this,void 0,void 0,function*(){this.onDidTriggerButtonEmitter.fire(I)}));return P.tooltip=I.tooltip||"",P}),{icon:!0,label:!1}),this.ui.rightActionBar.clear();const E=this.buttons.filter(I=>I!==e.backButton);this.ui.rightActionBar.push(E.map((I,M)=>{const P=new D.Action(`id-${M}`,"",I.iconClass||(0,h.getIconClass)(I.iconPath),!0,()=>we(this,void 0,void 0,function*(){this.onDidTriggerButtonEmitter.fire(I)}));return P.tooltip=I.tooltip||"",P}),{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const w=(p=(l=this.toggles)===null||l===void 0?void 0:l.filter(E=>E instanceof y.Toggle))!==null&&p!==void 0?p:[];this.ui.inputBox.toggles=w}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const b=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==b&&(this._lastValidationMessage=b,L.reset(this.ui.message),(0,h.renderQuickInputDescription)(b,this.ui.message,{callback:w=>{this.ui.linkOpenerDelegate(w)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?(0,t.localize)(2,null,this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(l){if(this.ui.inputBox.showDecoration(l),l!==i.default.Ignore){const p=this.ui.inputBox.stylesForType(l);this.ui.message.style.color=p.foreground?`${p.foreground}`:"",this.ui.message.style.backgroundColor=p.background?`${p.background}`:"",this.ui.message.style.border=p.border?`1px solid ${p.border}`:"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}}r.noPromptMessage=(0,t.localize)(1,null);class c extends r{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new g.Emitter),this.onWillAcceptEmitter=this._register(new g.Emitter),this.onDidAcceptEmitter=this._register(new g.Emitter),this.onDidCustomEmitter=this._register(new g.Emitter),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._autoFocusOnList=!0,this._keepScrollPosition=!1,this._itemActivation=a.ItemActivation.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new g.Emitter),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new g.Emitter),this.onDidTriggerItemButtonEmitter=this._register(new g.Emitter),this.onDidTriggerSeparatorButtonEmitter=this._register(new g.Emitter),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this.filterValue=l=>l,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(l){this._quickNavigate=l,this.update()}get value(){return this._value}set value(l){this.doSetValue(l)}doSetValue(l,p){this._value!==l&&(this._value=l,p||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(l){this._ariaLabel=l,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(l){this._placeholder=l,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(l){this.ui.list.scrollTop=l}set items(l){this._items=l,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(l){this._canSelectMany=l,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(l){this._canAcceptInBackground=l}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(l){this._matchOnDescription=l,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(l){this._matchOnDetail=l,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(l){this._matchOnLabel=l,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(l){this._matchOnLabelMode=l,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(l){this._sortByLabel=l,this.update()}get autoFocusOnList(){return this._autoFocusOnList}set autoFocusOnList(l){this._autoFocusOnList=l,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(l){this._keepScrollPosition=l}get itemActivation(){return this._itemActivation}set itemActivation(l){this._itemActivation=l}get activeItems(){return this._activeItems}set activeItems(l){this._activeItems=l,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(l){this._selectedItems=l,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?a.NO_KEY_MODS:this.ui.keyMods}set valueSelection(l){this._valueSelection=l,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(l){this._customButton=l,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(l){this._customButtonLabel=l,this.update()}get customHover(){return this._customButtonHover}set customHover(l){this._customButtonHover=l,this.update()}get ok(){return this._ok}set ok(l){this._ok=l,this.update()}get hideInput(){return!!this._hideInput}set hideInput(l){this._hideInput=l,this.update()}trySelectFirst(){this.autoFocusOnList&&(this.canSelectMany||this.ui.list.focus(u.QuickInputListFocus.First))}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(l=>{this.doSetValue(l,!0)})),this.visibleDisposables.add(this.ui.inputBox.onMouseDown(l=>{this.autoFocusOnList||this.ui.list.clearFocus()})),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown(l=>{switch(l.keyCode){case 18:this.ui.list.focus(u.QuickInputListFocus.Next),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 16:this.ui.list.getFocusedElements().length?this.ui.list.focus(u.QuickInputListFocus.Previous):this.ui.list.focus(u.QuickInputListFocus.Last),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 12:this.ui.list.focus(u.QuickInputListFocus.NextPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 11:this.ui.list.focus(u.QuickInputListFocus.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 17:if(!this._canAcceptInBackground||!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!0));break;case 14:(l.ctrlKey||l.metaKey)&&!l.shiftKey&&!l.altKey&&(this.ui.list.focus(u.QuickInputListFocus.First),L.EventHelper.stop(l,!0));break;case 13:(l.ctrlKey||l.metaKey)&&!l.shiftKey&&!l.altKey&&(this.ui.list.focus(u.QuickInputListFocus.Last),L.EventHelper.stop(l,!0));break}})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this.ui.list.onDidChangeFocus(l=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&(0,S.equals)(l,this._activeItems,(p,m)=>p===m)||(this._activeItems=l,this.onDidChangeActiveEmitter.fire(l))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:l,event:p})=>{if(this.canSelectMany){l.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&(0,S.equals)(l,this._selectedItems,(m,v)=>m===v)||(this._selectedItems=l,this.onDidChangeSelectionEmitter.fire(l),l.length&&this.handleAccept(p instanceof MouseEvent&&p.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(l=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&(0,S.equals)(l,this._selectedItems,(p,m)=>p===m)||(this._selectedItems=l,this.onDidChangeSelectionEmitter.fire(l)))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(l=>this.onDidTriggerItemButtonEmitter.fire(l))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(l=>this.onDidTriggerSeparatorButtonEmitter.fire(l))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(l){let p=!1;this.onWillAcceptEmitter.fire({veto:()=>p=!0}),p||this.onDidAcceptEmitter.fire({inBackground:l})}registerQuickNavigation(){return L.addDisposableListener(this.ui.container,L.EventType.KEY_UP,l=>{if(this.canSelectMany||!this._quickNavigate)return;const p=new k.StandardKeyboardEvent(l),m=p.keyCode;this._quickNavigate.keybindings.some(w=>{const E=w.getChords();return E.length>1?!1:E[0].shiftKey&&m===4?!(p.ctrlKey||p.altKey||p.metaKey):!!(E[0].altKey&&m===6||E[0].ctrlKey&&m===5||E[0].metaKey&&m===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const l=this.keepScrollPosition?this.scrollTop:0,p=!!this.description,m={title:!!this.title||!!this.step||!!this.buttons.length,description:p,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||p,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(m),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let v=this.ariaLabel;if(!v&&m.inputBox&&(v=this.placeholder||c.DEFAULT_ARIA_LABEL,this.title&&(v+=` - ${this.title}`)),this.ui.list.ariaLabel!==v&&(this.ui.list.ariaLabel=v??null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated)switch(this.itemsUpdated=!1,this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case a.ItemActivation.NONE:this._itemActivation=a.ItemActivation.FIRST;break;case a.ItemActivation.SECOND:this.ui.list.focus(u.QuickInputListFocus.Second),this._itemActivation=a.ItemActivation.FIRST;break;case a.ItemActivation.LAST:this.ui.list.focus(u.QuickInputListFocus.Last),this._itemActivation=a.ItemActivation.FIRST;break;default:this.trySelectFirst();break}this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",m.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(u.QuickInputListFocus.First)),this.keepScrollPosition&&(this.scrollTop=l)}}e.QuickPick=c,c.DEFAULT_ARIA_LABEL=(0,t.localize)(3,null);class o extends r{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new g.Emitter),this.onDidAcceptEmitter=this._register(new g.Emitter),this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(l){this._value=l||"",this.update()}get placeholder(){return this._placeholder}set placeholder(l){this._placeholder=l,this.update()}get password(){return this._password}set password(l){this._password=l,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(l=>{l!==this.value&&(this._value=l,this.onDidValueChangeEmitter.fire(l))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const l={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(l),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}}e.InputBox=o}),define(ne[840],se([1,0,7,68,313,307,574,19,6,2,101,733,71,772,356,839]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputController=void 0;const u=L.$;class h extends g.Disposable{constructor(c,o){super(),this.options=c,this.themeService=o,this.enabled=!0,this.onDidAcceptEmitter=this._register(new _.Emitter),this.onDidCustomEmitter=this._register(new _.Emitter),this.onDidTriggerButtonEmitter=this._register(new _.Emitter),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new _.Emitter),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new _.Emitter),this.onHide=this.onHideEmitter.event,this.idPrefix=c.idPrefix,this.parentElement=c.container,this.styles=c.styles,this.registerKeyModsListeners()}registerKeyModsListeners(){const c=o=>{this.keyMods.ctrlCmd=o.ctrlKey||o.metaKey,this.keyMods.alt=o.altKey};this._register(L.addDisposableListener(window,L.EventType.KEY_DOWN,c,!0)),this._register(L.addDisposableListener(window,L.EventType.KEY_UP,c,!0)),this._register(L.addDisposableListener(window,L.EventType.MOUSE_DOWN,c,!0))}getUI(){if(this.ui)return this.ui;const c=L.append(this.parentElement,u(".quick-input-widget.show-file-icons"));c.tabIndex=-1,c.style.display="none";const o=L.createStyleSheet(c),d=L.append(c,u(".quick-input-titlebar")),l=this.options.hoverDelegate?{hoverDelegate:this.options.hoverDelegate}:void 0,p=this._register(new k.ActionBar(d,l));p.domNode.classList.add("quick-input-left-action-bar");const m=L.append(d,u(".quick-input-title")),v=this._register(new k.ActionBar(d,l));v.domNode.classList.add("quick-input-right-action-bar");const b=L.append(c,u(".quick-input-header")),w=L.append(b,u("input.quick-input-check-all"));w.type="checkbox",w.setAttribute("aria-label",(0,s.localize)(0,null)),this._register(L.addStandardDisposableListener(w,L.EventType.CHANGE,H=>{const B=w.checked;J.setAllVisibleChecked(B)})),this._register(L.addDisposableListener(w,L.EventType.CLICK,H=>{(H.x||H.y)&&P.setFocus()}));const E=L.append(b,u(".quick-input-description")),I=L.append(b,u(".quick-input-and-message")),M=L.append(I,u(".quick-input-filter")),P=this._register(new n.QuickInputBox(M,this.styles.inputBox,this.styles.toggle));P.setAttribute("aria-describedby",`${this.idPrefix}message`);const x=L.append(M,u(".quick-input-visible-count"));x.setAttribute("aria-live","polite"),x.setAttribute("aria-atomic","true");const T=new D.CountBadge(x,{countFormat:(0,s.localize)(1,null)},this.styles.countBadge),A=L.append(M,u(".quick-input-count"));A.setAttribute("aria-live","polite");const N=new D.CountBadge(A,{countFormat:(0,s.localize)(2,null)},this.styles.countBadge),F=L.append(b,u(".quick-input-action")),O=new y.Button(F,this.styles.button);O.label=(0,s.localize)(3,null),this._register(O.onDidClick(H=>{this.onDidAcceptEmitter.fire()}));const W=L.append(b,u(".quick-input-action")),U=new y.Button(W,this.styles.button);U.label=(0,s.localize)(4,null),this._register(U.onDidClick(H=>{this.onDidCustomEmitter.fire()}));const j=L.append(I,u(`#${this.idPrefix}message.quick-input-message`)),R=new S.ProgressBar(c,this.styles.progressBar);R.getContainer().classList.add("quick-input-progress");const K=L.append(c,u(".quick-input-html-widget"));K.tabIndex=-1;const G=L.append(c,u(".quick-input-description")),Z=this.idPrefix+"list",J=this._register(new t.QuickInputList(c,Z,this.options,this.themeService));P.setAttribute("aria-controls",Z),this._register(J.onDidChangeFocus(()=>{var H;P.setAttribute("aria-activedescendant",(H=J.getActiveDescendant())!==null&&H!==void 0?H:"")})),this._register(J.onChangedAllVisibleChecked(H=>{w.checked=H})),this._register(J.onChangedVisibleCount(H=>{T.setCount(H)})),this._register(J.onChangedCheckedCount(H=>{N.setCount(H)})),this._register(J.onLeave(()=>{setTimeout(()=>{P.setFocus(),this.controller instanceof a.QuickPick&&this.controller.canSelectMany&&J.clearFocus()},0)}));const X=L.trackFocus(c);return this._register(X),this._register(L.addDisposableListener(c,L.EventType.FOCUS,H=>{L.isAncestor(H.relatedTarget,c)||(this.previousFocusElement=H.relatedTarget instanceof HTMLElement?H.relatedTarget:void 0)},!0)),this._register(X.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(i.QuickInputHideReason.Blur),this.previousFocusElement=void 0})),this._register(L.addDisposableListener(c,L.EventType.FOCUS,H=>{P.setFocus()})),this._register(L.addStandardDisposableListener(c,L.EventType.KEY_DOWN,H=>{if(!L.isAncestor(H.target,K))switch(H.keyCode){case 3:L.EventHelper.stop(H,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:L.EventHelper.stop(H,!0),this.hide(i.QuickInputHideReason.Gesture);break;case 2:if(!H.altKey&&!H.ctrlKey&&!H.metaKey){const B=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(c.classList.contains("show-checkboxes")?B.push("input"):B.push("input[type=text]"),this.getUI().list.isDisplayed()&&B.push(".monaco-list"),this.getUI().message&&B.push(".quick-input-message a"),this.getUI().widget){if(L.isAncestor(H.target,this.getUI().widget))break;B.push(".quick-input-html-widget")}const V=c.querySelectorAll(B.join(", "));H.shiftKey&&H.target===V[0]?(L.EventHelper.stop(H,!0),J.clearFocus()):!H.shiftKey&&L.isAncestor(H.target,V[V.length-1])&&(L.EventHelper.stop(H,!0),V[0].focus())}break;case 10:H.ctrlKey&&(L.EventHelper.stop(H,!0),this.getUI().list.toggleHover());break}})),this.ui={container:c,styleSheet:o,leftActionBar:p,titleBar:d,title:m,description1:G,description2:E,widget:K,rightActionBar:v,checkAll:w,inputContainer:I,filterContainer:M,inputBox:P,visibleCountContainer:x,visibleCount:T,countContainer:A,count:N,okContainer:F,ok:O,message:j,customButtonContainer:W,customButton:U,list:J,progressBar:R,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:H=>this.show(H),hide:()=>this.hide(),setVisibilities:H=>this.setVisibilities(H),setEnabled:H=>this.setEnabled(H),setContextKey:H=>this.options.setContextKey(H),linkOpenerDelegate:H=>this.options.linkOpenerDelegate(H)},this.updateStyles(),this.ui}pick(c,o={},d=f.CancellationToken.None){return new Promise((l,p)=>{let m=E=>{var I;m=l,(I=o.onKeyMods)===null||I===void 0||I.call(o,v.keyMods),l(E)};if(d.isCancellationRequested){m(void 0);return}const v=this.createQuickPick();let b;const w=[v,v.onDidAccept(()=>{if(v.canSelectMany)m(v.selectedItems.slice()),v.hide();else{const E=v.activeItems[0];E&&(m(E),v.hide())}}),v.onDidChangeActive(E=>{const I=E[0];I&&o.onDidFocus&&o.onDidFocus(I)}),v.onDidChangeSelection(E=>{if(!v.canSelectMany){const I=E[0];I&&(m(I),v.hide())}}),v.onDidTriggerItemButton(E=>o.onDidTriggerItemButton&&o.onDidTriggerItemButton(Object.assign(Object.assign({},E),{removeItem:()=>{const I=v.items.indexOf(E.item);if(I!==-1){const M=v.items.slice(),P=M.splice(I,1),x=v.activeItems.filter(A=>A!==P[0]),T=v.keepScrollPosition;v.keepScrollPosition=!0,v.items=M,x&&(v.activeItems=x),v.keepScrollPosition=T}}}))),v.onDidTriggerSeparatorButton(E=>{var I;return(I=o.onDidTriggerSeparatorButton)===null||I===void 0?void 0:I.call(o,E)}),v.onDidChangeValue(E=>{b&&!E&&(v.activeItems.length!==1||v.activeItems[0]!==b)&&(v.activeItems=[b])}),d.onCancellationRequested(()=>{v.hide()}),v.onDidHide(()=>{(0,g.dispose)(w),m(void 0)})];v.title=o.title,v.canSelectMany=!!o.canPickMany,v.placeholder=o.placeHolder,v.ignoreFocusOut=!!o.ignoreFocusLost,v.matchOnDescription=!!o.matchOnDescription,v.matchOnDetail=!!o.matchOnDetail,v.matchOnLabel=o.matchOnLabel===void 0||o.matchOnLabel,v.autoFocusOnList=o.autoFocusOnList===void 0||o.autoFocusOnList,v.quickNavigate=o.quickNavigate,v.hideInput=!!o.hideInput,v.contextKey=o.contextKey,v.busy=!0,Promise.all([c,o.activeItem]).then(([E,I])=>{b=I,v.busy=!1,v.items=E,v.canSelectMany&&(v.selectedItems=E.filter(M=>M.type!=="separator"&&M.picked)),b&&(v.activeItems=[b])}),v.show(),Promise.resolve(c).then(void 0,E=>{p(E),v.hide()})})}createQuickPick(){const c=this.getUI();return new a.QuickPick(c)}createInputBox(){const c=this.getUI();return new a.InputBox(c)}show(c){const o=this.getUI();this.onShowEmitter.fire();const d=this.controller;this.controller=c,d?.didHide(),this.setEnabled(!0),o.leftActionBar.clear(),o.title.textContent="",o.description1.textContent="",o.description2.textContent="",L.reset(o.widget),o.rightActionBar.clear(),o.checkAll.checked=!1,o.inputBox.placeholder="",o.inputBox.password=!1,o.inputBox.showDecoration(C.default.Ignore),o.visibleCount.setCount(0),o.count.setCount(0),L.reset(o.message),o.progressBar.stop(),o.list.setElements([]),o.list.matchOnDescription=!1,o.list.matchOnDetail=!1,o.list.matchOnLabel=!0,o.list.sortByLabel=!0,o.ignoreFocusOut=!1,o.inputBox.toggles=void 0;const l=this.options.backKeybindingLabel();a.backButton.tooltip=l?(0,s.localize)(5,null,l):(0,s.localize)(6,null),o.container.style.display="",this.updateLayout(),o.inputBox.setFocus()}setVisibilities(c){const o=this.getUI();o.title.style.display=c.title?"":"none",o.description1.style.display=c.description&&(c.inputBox||c.checkAll)?"":"none",o.description2.style.display=c.description&&!(c.inputBox||c.checkAll)?"":"none",o.checkAll.style.display=c.checkAll?"":"none",o.inputContainer.style.display=c.inputBox?"":"none",o.filterContainer.style.display=c.inputBox?"":"none",o.visibleCountContainer.style.display=c.visibleCount?"":"none",o.countContainer.style.display=c.count?"":"none",o.okContainer.style.display=c.ok?"":"none",o.customButtonContainer.style.display=c.customButton?"":"none",o.message.style.display=c.message?"":"none",o.progressBar.getContainer().style.display=c.progressBar?"":"none",o.list.display(!!c.list),o.container.classList.toggle("show-checkboxes",!!c.checkBox),o.container.classList.toggle("hidden-input",!c.inputBox&&!c.description),this.updateLayout()}setEnabled(c){if(c!==this.enabled){this.enabled=c;for(const o of this.getUI().leftActionBar.viewItems)o.action.enabled=c;for(const o of this.getUI().rightActionBar.viewItems)o.action.enabled=c;this.getUI().checkAll.disabled=!c,this.getUI().inputBox.enabled=c,this.getUI().ok.enabled=c,this.getUI().list.enabled=c}}hide(c){var o,d,l;const p=this.controller;if(!p)return;const m=!L.isAncestor(document.activeElement,(d=(o=this.ui)===null||o===void 0?void 0:o.container)!==null&&d!==void 0?d:null);if(this.controller=null,this.onHideEmitter.fire(),this.getUI().container.style.display="none",!m){let v=this.previousFocusElement;for(;v&&!v.offsetParent;)v=(l=v.parentElement)!==null&&l!==void 0?l:void 0;v?.offsetParent?(v.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}p.didHide(c)}layout(c,o){this.dimension=c,this.titleBarOffset=o,this.updateLayout()}updateLayout(){if(this.ui&&this.isDisplayed()){this.ui.container.style.top=`${this.titleBarOffset}px`;const c=this.ui.container.style,o=Math.min(this.dimension.width*.62,h.MAX_WIDTH);c.width=o+"px",c.marginLeft="-"+o/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(c){this.styles=c,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:c,quickInputBackground:o,quickInputForeground:d,widgetBorder:l,widgetShadow:p}=this.styles.widget;this.ui.titleBar.style.backgroundColor=c??"",this.ui.container.style.backgroundColor=o??"",this.ui.container.style.color=d??"",this.ui.container.style.border=l?`1px solid ${l}`:"",this.ui.container.style.boxShadow=p?`0 0 8px 2px ${p}`:"",this.ui.list.style(this.styles.list);const m=[];this.styles.pickerGroup.pickerGroupBorder&&m.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&m.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&m.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(m.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&m.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&m.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&m.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&m.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&m.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),m.push("}"));const v=m.join(` -`);v!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=v)}}isDisplayed(){return this.ui&&this.ui.container.style.display!=="none"}}e.QuickInputController=h,h.MAX_WIDTH=600}),define(ne[23],se([1,0,6,2,8,37,88]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Themable=e.registerThemingParticipant=e.Extensions=e.getThemeTypeSelector=e.themeColorFromId=e.IThemeService=void 0,e.IThemeService=(0,y.createDecorator)("themeService");function f(n){return{id:n}}e.themeColorFromId=f;function _(n){switch(n){case S.ColorScheme.DARK:return"vs-dark";case S.ColorScheme.HIGH_CONTRAST_DARK:return"hc-black";case S.ColorScheme.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}e.getThemeTypeSelector=_,e.Extensions={ThemingContribution:"base.contributions.theming"};class g{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new L.Emitter}onColorThemeChange(t){return this.themingParticipants.push(t),this.onThemingParticipantAddedEmitter.fire(t),(0,k.toDisposable)(()=>{const a=this.themingParticipants.indexOf(t);this.themingParticipants.splice(a,1)})}getThemingParticipants(){return this.themingParticipants}}const C=new g;D.Registry.add(e.Extensions.ThemingContribution,C);function s(n){return C.onColorThemeChange(n)}e.registerThemingParticipant=s;class i extends k.Disposable{constructor(t){super(),this.themeService=t,this.theme=t.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(a=>this.onThemeChange(a)))}onThemeChange(t){this.theme=t,this.updateStyles()}updateStyles(){}}e.Themable=i}),define(ne[841],se([1,0,6,2,64,23]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalStyleSheet=e.AbstractCodeEditorService=void 0;let S=class extends k.Disposable{constructor(g){super(),this._themeService=g,this._onWillCreateCodeEditor=this._register(new L.Emitter),this._onCodeEditorAdd=this._register(new L.Emitter),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new L.Emitter),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new L.Emitter),this._onDiffEditorAdd=this._register(new L.Emitter),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new L.Emitter),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new y.LinkedList,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(g){this._codeEditors[g.getId()]=g,this._onCodeEditorAdd.fire(g)}removeCodeEditor(g){delete this._codeEditors[g.getId()]&&this._onCodeEditorRemove.fire(g)}listCodeEditors(){return Object.keys(this._codeEditors).map(g=>this._codeEditors[g])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(g){this._diffEditors[g.getId()]=g,this._onDiffEditorAdd.fire(g)}removeDiffEditor(g){delete this._diffEditors[g.getId()]&&this._onDiffEditorRemove.fire(g)}listDiffEditors(){return Object.keys(this._diffEditors).map(g=>this._diffEditors[g])}getFocusedCodeEditor(){let g=null;const C=this.listCodeEditors();for(const s of C){if(s.hasTextFocus())return s;s.hasWidgetFocus()&&(g=s)}return g}removeDecorationType(g){const C=this._decorationOptionProviders.get(g);C&&(C.refCount--,C.refCount<=0&&(this._decorationOptionProviders.delete(g),C.dispose(),this.listCodeEditors().forEach(s=>s.removeDecorationsByType(g))))}setModelProperty(g,C,s){const i=g.toString();let n;this._modelProperties.has(i)?n=this._modelProperties.get(i):(n=new Map,this._modelProperties.set(i,n)),n.set(C,s)}getModelProperty(g,C){const s=g.toString();if(this._modelProperties.has(s))return this._modelProperties.get(s).get(C)}openCodeEditor(g,C,s){return we(this,void 0,void 0,function*(){for(const i of this._codeEditorOpenHandlers){const n=yield i(g,C,s);if(n!==null)return n}return null})}registerCodeEditorOpenHandler(g){const C=this._codeEditorOpenHandlers.unshift(g);return(0,k.toDisposable)(C)}};e.AbstractCodeEditorService=S,e.AbstractCodeEditorService=S=ke([fe(0,D.IThemeService)],S);class f{constructor(g){this._styleSheet=g}}e.GlobalStyleSheet=f}),define(ne[842],se([1,0,7,35,75,53,23]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorScrollbar=void 0;class f extends D.ViewPart{constructor(g,C,s,i){super(g);const n=this._context.configuration.options,t=n.get(101),a=n.get(73),u=n.get(39),h=n.get(104),r={listenOnDomNode:s.domNode,className:"editor-scrollable "+(0,S.getThemeTypeSelector)(g.theme.type),useShadows:!1,lazyRender:!0,vertical:t.vertical,horizontal:t.horizontal,verticalHasArrows:t.verticalHasArrows,horizontalHasArrows:t.horizontalHasArrows,verticalScrollbarSize:t.verticalScrollbarSize,verticalSliderSize:t.verticalSliderSize,horizontalScrollbarSize:t.horizontalScrollbarSize,horizontalSliderSize:t.horizontalSliderSize,handleMouseWheel:t.handleMouseWheel,alwaysConsumeMouseWheel:t.alwaysConsumeMouseWheel,arrowSize:t.arrowSize,mouseWheelScrollSensitivity:a,fastScrollSensitivity:u,scrollPredominantAxis:h,scrollByPage:t.scrollByPage};this.scrollbar=this._register(new y.SmoothScrollableElement(C.domNode,r,this._context.viewLayout.getScrollable())),D.PartFingerprints.write(this.scrollbar.getDomNode(),5),this.scrollbarDomNode=(0,k.createFastDomNode)(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const c=(o,d,l)=>{const p={};if(d){const m=o.scrollTop;m&&(p.scrollTop=this._context.viewLayout.getCurrentScrollTop()+m,o.scrollTop=0)}if(l){const m=o.scrollLeft;m&&(p.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+m,o.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(p,1)};this._register(L.addDisposableListener(s.domNode,"scroll",o=>c(s.domNode,!0,!0))),this._register(L.addDisposableListener(C.domNode,"scroll",o=>c(C.domNode,!0,!1))),this._register(L.addDisposableListener(i.domNode,"scroll",o=>c(i.domNode,!0,!1))),this._register(L.addDisposableListener(this.scrollbarDomNode.domNode,"scroll",o=>c(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const g=this._context.configuration.options,C=g.get(142);this.scrollbarDomNode.setLeft(C.contentLeft),g.get(71).side==="right"?this.scrollbarDomNode.setWidth(C.contentWidth+C.minimap.minimapWidth):this.scrollbarDomNode.setWidth(C.contentWidth),this.scrollbarDomNode.setHeight(C.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(g){this.scrollbar.delegateVerticalScrollbarPointerDown(g)}delegateScrollFromMouseWheelEvent(g){this.scrollbar.delegateScrollFromMouseWheelEvent(g)}onConfigurationChanged(g){if(g.hasChanged(101)||g.hasChanged(73)||g.hasChanged(39)){const C=this._context.configuration.options,s=C.get(101),i=C.get(73),n=C.get(39),t=C.get(104),a={vertical:s.vertical,horizontal:s.horizontal,verticalScrollbarSize:s.verticalScrollbarSize,horizontalScrollbarSize:s.horizontalScrollbarSize,scrollByPage:s.scrollByPage,handleMouseWheel:s.handleMouseWheel,mouseWheelScrollSensitivity:i,fastScrollSensitivity:n,scrollPredominantAxis:t};this.scrollbar.updateOptions(a)}return g.hasChanged(142)&&this._setLayout(),!0}onScrollChanged(g){return!0}onThemeChanged(g){return this.scrollbar.updateClassName("editor-scrollable "+(0,S.getThemeTypeSelector)(this._context.theme.type)),!0}prepareRender(g){}render(g){this.scrollbar.renderNow()}}e.EditorScrollbar=f}),define(ne[843],se([1,0,112,31,23,429]),function(Q,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionsOverlay=void 0;class D{constructor(i){this.left=i.left,this.width=i.width,this.startStyle=null,this.endStyle=null}}class S{constructor(i,n){this.lineNumber=i,this.ranges=n}}function f(s){return new D(s)}function _(s){return new S(s.lineNumber,s.ranges.map(f))}class g extends L.DynamicViewOverlay{constructor(i){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=i;const n=this._context.configuration.options;this._lineHeight=n.get(65),this._roundedSelection=n.get(99),this._typicalHalfwidthCharacterWidth=n.get(49).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(i){const n=this._context.configuration.options;return this._lineHeight=n.get(65),this._roundedSelection=n.get(99),this._typicalHalfwidthCharacterWidth=n.get(49).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(i){return this._selections=i.selections.slice(0),!0}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onLinesChanged(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollTopChanged}onZonesChanged(i){return!0}_visibleRangesHaveGaps(i){for(let n=0,t=i.length;n1)return!0;return!1}_enrichVisibleRangesWithStyle(i,n,t){const a=this._typicalHalfwidthCharacterWidth/4;let u=null,h=null;if(t&&t.length>0&&n.length>0){const r=n[0].lineNumber;if(r===i.startLineNumber)for(let o=0;!u&&o=0;o--)t[o].lineNumber===c&&(h=t[o].ranges[0]);u&&!u.startStyle&&(u=null),h&&!h.startStyle&&(h=null)}for(let r=0,c=n.length;r0){const v=n[r-1].ranges[0].left,b=n[r-1].ranges[0].left+n[r-1].ranges[0].width;C(d-v)v&&(p.top=1),C(l-b)
    '}_actualRenderOneSelection(i,n,t,a){if(a.length===0)return;const u=!!a[0].ranges[0].startStyle,h=this._lineHeight.toString(),r=(this._lineHeight-1).toString(),c=a[0].lineNumber,o=a[a.length-1].lineNumber;for(let d=0,l=a.length;d1,o)}this._previousFrameVisibleRangesWithStyle=u,this._renderResult=n.map(([h,r])=>h+r)}render(i,n){if(!this._renderResult)return"";const t=n-i;return t<0||t>=this._renderResult.length?"":this._renderResult[t]}}e.SelectionsOverlay=g,g.SELECTION_CLASS_NAME="selected-text",g.SELECTION_TOP_LEFT="top-left-radius",g.SELECTION_BOTTOM_LEFT="bottom-left-radius",g.SELECTION_TOP_RIGHT="top-right-radius",g.SELECTION_BOTTOM_RIGHT="bottom-right-radius",g.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",g.ROUNDED_PIECE_WIDTH=10,(0,y.registerThemingParticipant)((s,i)=>{const n=s.getColor(k.editorSelectionForeground);n&&!n.isTransparent()&&i.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${n}; }`)});function C(s){return s<0?-s:s}}),define(ne[357],se([1,0,7,35,195,2,42,102,12,212,31,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRulerPart=void 0;let n=i=class extends D.Disposable{constructor(a,u,h,r,c,o,d,l){super(),this._editors=a,this._rootElement=u,this._diffModel=h,this._rootWidth=r,this._rootHeight=c,this._modifiedEditorLayoutInfo=o,this._options=d,this._themeService=l;const p=(0,S.observableFromEvent)(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),m=(0,S.derived)(w=>{const E=p.read(w),I=E.getColor(C.diffOverviewRulerInserted)||(E.getColor(C.diffInserted)||C.defaultInsertColor).transparent(2),M=E.getColor(C.diffOverviewRulerRemoved)||(E.getColor(C.diffRemoved)||C.defaultRemoveColor).transparent(2);return{insertColor:I,removeColor:M}}),v=(0,S.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),b=(0,S.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollHeight());this._register((0,S.autorunWithStore)((w,E)=>{if(!this._options.renderOverviewRuler.read(w))return;const I=(0,k.createFastDomNode)(document.createElement("div"));I.setClassName("diffViewport"),I.setPosition("absolute");const M=(0,L.h)("div.diffOverview",{style:{position:"absolute",top:"0px",width:i.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;E.add((0,f.appendRemoveOnDispose)(M,I.domNode)),E.add((0,L.addStandardDisposableListener)(M,L.EventType.POINTER_DOWN,P=>{this._editors.modified.delegateVerticalScrollbarPointerDown(P)})),E.add((0,L.addDisposableListener)(M,L.EventType.MOUSE_WHEEL,P=>{this._editors.modified.delegateScrollFromMouseWheelEvent(P)},{passive:!1})),E.add((0,f.appendRemoveOnDispose)(this._rootElement,M)),E.add((0,S.autorunWithStore)((P,x)=>{const T=this._diffModel.read(P),A=this._editors.original.createOverviewRuler("original diffOverviewRuler");A&&(x.add(A),x.add((0,f.appendRemoveOnDispose)(M,A.getDomNode())));const N=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(N&&(x.add(N),x.add((0,f.appendRemoveOnDispose)(M,N.getDomNode()))),!A||!N)return;const F=(0,S.observableSignalFromEvent)("viewZoneChanged",this._editors.original.onDidChangeViewZones),O=(0,S.observableSignalFromEvent)("viewZoneChanged",this._editors.modified.onDidChangeViewZones),W=(0,S.observableSignalFromEvent)("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),U=(0,S.observableSignalFromEvent)("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);x.add((0,S.autorun)(j=>{var R;F.read(j),O.read(j),W.read(j),U.read(j);const K=m.read(j),G=(R=T?.diff.read(j))===null||R===void 0?void 0:R.mappings;function Z(H,B,V){const Y=V._getViewModel();return Y?H.filter(ie=>ie.length>0).map(ie=>{const ae=Y.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(ie.startLineNumber,1)),ce=Y.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(ie.endLineNumberExclusive,1)),de=ce.lineNumber-ae.lineNumber;return new g.OverviewRulerZone(ae.lineNumber,ce.lineNumber,de,B.toString())}):[]}const J=Z((G||[]).map(H=>H.lineRangeMapping.originalRange),K.removeColor,this._editors.original),X=Z((G||[]).map(H=>H.lineRangeMapping.modifiedRange),K.insertColor,this._editors.modified);A?.setZones(J),N?.setZones(X)})),x.add((0,S.autorun)(j=>{const R=this._rootHeight.read(j),K=this._rootWidth.read(j),G=this._modifiedEditorLayoutInfo.read(j);if(G){const Z=i.ENTIRE_DIFF_OVERVIEW_WIDTH-2*i.ONE_OVERVIEW_WIDTH;A.setLayout({top:0,height:R,right:Z+i.ONE_OVERVIEW_WIDTH,width:i.ONE_OVERVIEW_WIDTH}),N.setLayout({top:0,height:R,right:0,width:i.ONE_OVERVIEW_WIDTH});const J=v.read(j),X=b.read(j),H=this._editors.modified.getOption(101),B=new y.ScrollbarState(H.verticalHasArrows?H.arrowSize:0,H.verticalScrollbarSize,0,G.height,X,J);I.setTop(B.getSliderPosition()),I.setHeight(B.getSliderSize())}else I.setTop(0),I.setHeight(0);M.style.height=R+"px",M.style.left=K-i.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",I.setWidth(i.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}))}};e.OverviewRulerPart=n,n.ONE_OVERVIEW_WIDTH=15,n.ENTIRE_DIFF_OVERVIEW_WIDTH=i.ONE_OVERVIEW_WIDTH*2,e.OverviewRulerPart=n=i=ke([fe(7,s.IThemeService)],n)}),define(ne[844],se([1,0,6,2,42,357,36,610,8,34]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorEditors=void 0;let C=class extends k.Disposable{constructor(i,n,t,a,u,h,r){super(),this.originalEditorElement=i,this.modifiedEditorElement=n,this._options=t,this._createInnerEditor=u,this._instantiationService=h,this._keybindingService=r,this._onDidContentSizeChange=this._register(new L.Emitter),this.original=this._register(this._createLeftHandSideEditor(t.editorOptions.get(),a.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(t.editorOptions.get(),a.modifiedEditor||{})),this._register((0,y.autorunHandleChanges)({createEmptyChangeSummary:()=>({}),handleChange:(c,o)=>(c.didChange(t.editorOptions)&&Object.assign(o,c.change.changedOptions),!0)},(c,o)=>{t.editorOptions.read(c),this._options.renderSideBySide.read(c),this.modified.updateOptions(this._adjustOptionsForRightHandSide(c,o)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(c,o))}))}_createLeftHandSideEditor(i,n){const t=this._adjustOptionsForLeftHandSide(void 0,i),a=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,t,n);return a.setContextValue("isInDiffLeftEditor",!0),a}_createRightHandSideEditor(i,n){const t=this._adjustOptionsForRightHandSide(void 0,i),a=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,t,n);return a.setContextValue("isInDiffRightEditor",!0),a}_constructInnerEditor(i,n,t,a){const u=this._createInnerEditor(i,n,t,a);return this._register(u.onDidContentSizeChange(h=>{const r=this.original.getContentWidth()+this.modified.getContentWidth()+D.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH,c=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:c,contentWidth:r,contentHeightChanged:h.contentHeightChanged,contentWidthChanged:h.contentWidthChanged})})),u}_adjustOptionsForLeftHandSide(i,n){const t=this._adjustOptionsForSubEditor(n);return this._options.renderSideBySide.get()?(t.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},t.wordWrapOverride1=this._options.diffWordWrap.get()):(t.wordWrapOverride1="off",t.wordWrapOverride2="off",t.stickyScroll={enabled:!1},t.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),n.originalAriaLabel&&(t.ariaLabel=n.originalAriaLabel),t.ariaLabel=this._updateAriaLabel(t.ariaLabel),t.readOnly=!this._options.originalEditable.get(),t.dropIntoEditor={enabled:!t.readOnly},t.extraEditorClassName="original-in-monaco-diff-editor",t}_adjustOptionsForRightHandSide(i,n){const t=this._adjustOptionsForSubEditor(n);return n.modifiedAriaLabel&&(t.ariaLabel=n.modifiedAriaLabel),t.ariaLabel=this._updateAriaLabel(t.ariaLabel),t.wordWrapOverride1=this._options.diffWordWrap.get(),t.revealHorizontalRightPadding=S.EditorOptions.revealHorizontalRightPadding.defaultValue+D.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH,t.scrollbar.verticalHasArrows=!1,t.extraEditorClassName="modified-in-monaco-diff-editor",t}_adjustOptionsForSubEditor(i){const n=Object.assign(Object.assign({},i),{dimension:{height:0,width:0}});return n.inDiffEditor=!0,n.automaticLayout=!1,n.scrollbar=Object.assign({},n.scrollbar||{}),n.scrollbar.vertical="visible",n.folding=!1,n.codeLens=this._options.diffCodeLens.get(),n.fixedOverflowWidgets=!0,n.minimap=Object.assign({},n.minimap||{}),n.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?n.stickyScroll={enabled:!1}:n.stickyScroll=this._options.editorOptions.get().stickyScroll,n}_updateAriaLabel(i){var n;i||(i="");const t=(0,f.localize)(0,null,(n=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))===null||n===void 0?void 0:n.getAriaLabel());return this._options.accessibilityVerbose.get()?i+t:i?i.replaceAll(t,""):""}};e.DiffEditorEditors=C,e.DiffEditorEditors=C=ke([fe(5,_.IInstantiationService),fe(6,g.IKeybindingService)],C)}),define(ne[80],se([1,0,622,38,31,23]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.editorUnicodeHighlightBackground=e.editorUnicodeHighlightBorder=e.editorBracketPairGuideActiveBackground6=e.editorBracketPairGuideActiveBackground5=e.editorBracketPairGuideActiveBackground4=e.editorBracketPairGuideActiveBackground3=e.editorBracketPairGuideActiveBackground2=e.editorBracketPairGuideActiveBackground1=e.editorBracketPairGuideBackground6=e.editorBracketPairGuideBackground5=e.editorBracketPairGuideBackground4=e.editorBracketPairGuideBackground3=e.editorBracketPairGuideBackground2=e.editorBracketPairGuideBackground1=e.editorBracketHighlightingUnexpectedBracketForeground=e.editorBracketHighlightingForeground6=e.editorBracketHighlightingForeground5=e.editorBracketHighlightingForeground4=e.editorBracketHighlightingForeground3=e.editorBracketHighlightingForeground2=e.editorBracketHighlightingForeground1=e.overviewRulerInfo=e.overviewRulerWarning=e.overviewRulerError=e.overviewRulerRangeHighlight=e.ghostTextBackground=e.ghostTextForeground=e.ghostTextBorder=e.editorUnnecessaryCodeOpacity=e.editorUnnecessaryCodeBorder=e.editorGutter=e.editorOverviewRulerBackground=e.editorOverviewRulerBorder=e.editorBracketMatchBorder=e.editorBracketMatchBackground=e.editorCodeLensForeground=e.editorRuler=e.editorDimmedLineNumber=e.editorActiveLineNumber=e.editorActiveIndentGuide6=e.editorActiveIndentGuide5=e.editorActiveIndentGuide4=e.editorActiveIndentGuide3=e.editorActiveIndentGuide2=e.editorActiveIndentGuide1=e.editorIndentGuide6=e.editorIndentGuide5=e.editorIndentGuide4=e.editorIndentGuide3=e.editorIndentGuide2=e.editorIndentGuide1=e.deprecatedEditorActiveIndentGuides=e.deprecatedEditorIndentGuides=e.editorLineNumbers=e.editorWhitespaces=e.editorCursorBackground=e.editorCursorForeground=e.editorSymbolHighlightBorder=e.editorSymbolHighlight=e.editorRangeHighlightBorder=e.editorRangeHighlight=e.editorLineHighlightBorder=e.editorLineHighlight=void 0,e.editorLineHighlight=(0,y.registerColor)("editor.lineHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(0,null)),e.editorLineHighlightBorder=(0,y.registerColor)("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:y.contrastBorder},L.localize(1,null)),e.editorRangeHighlight=(0,y.registerColor)("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},L.localize(2,null),!0),e.editorRangeHighlightBorder=(0,y.registerColor)("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(3,null),!0),e.editorSymbolHighlight=(0,y.registerColor)("editor.symbolHighlightBackground",{dark:y.editorFindMatchHighlight,light:y.editorFindMatchHighlight,hcDark:null,hcLight:null},L.localize(4,null),!0),e.editorSymbolHighlightBorder=(0,y.registerColor)("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(5,null),!0),e.editorCursorForeground=(0,y.registerColor)("editorCursor.foreground",{dark:"#AEAFAD",light:k.Color.black,hcDark:k.Color.white,hcLight:"#0F4A85"},L.localize(6,null)),e.editorCursorBackground=(0,y.registerColor)("editorCursor.background",null,L.localize(7,null)),e.editorWhitespaces=(0,y.registerColor)("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},L.localize(8,null)),e.editorLineNumbers=(0,y.registerColor)("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:k.Color.white,hcLight:"#292929"},L.localize(9,null)),e.deprecatedEditorIndentGuides=(0,y.registerColor)("editorIndentGuide.background",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(10,null),!1,L.localize(11,null)),e.deprecatedEditorActiveIndentGuides=(0,y.registerColor)("editorIndentGuide.activeBackground",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(12,null),!1,L.localize(13,null)),e.editorIndentGuide1=(0,y.registerColor)("editorIndentGuide.background1",{dark:e.deprecatedEditorIndentGuides,light:e.deprecatedEditorIndentGuides,hcDark:e.deprecatedEditorIndentGuides,hcLight:e.deprecatedEditorIndentGuides},L.localize(14,null)),e.editorIndentGuide2=(0,y.registerColor)("editorIndentGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(15,null)),e.editorIndentGuide3=(0,y.registerColor)("editorIndentGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(16,null)),e.editorIndentGuide4=(0,y.registerColor)("editorIndentGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(17,null)),e.editorIndentGuide5=(0,y.registerColor)("editorIndentGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(18,null)),e.editorIndentGuide6=(0,y.registerColor)("editorIndentGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(19,null)),e.editorActiveIndentGuide1=(0,y.registerColor)("editorIndentGuide.activeBackground1",{dark:e.deprecatedEditorActiveIndentGuides,light:e.deprecatedEditorActiveIndentGuides,hcDark:e.deprecatedEditorActiveIndentGuides,hcLight:e.deprecatedEditorActiveIndentGuides},L.localize(20,null)),e.editorActiveIndentGuide2=(0,y.registerColor)("editorIndentGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(21,null)),e.editorActiveIndentGuide3=(0,y.registerColor)("editorIndentGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(22,null)),e.editorActiveIndentGuide4=(0,y.registerColor)("editorIndentGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(23,null)),e.editorActiveIndentGuide5=(0,y.registerColor)("editorIndentGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(24,null)),e.editorActiveIndentGuide6=(0,y.registerColor)("editorIndentGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(25,null));const S=(0,y.registerColor)("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(26,null),!1,L.localize(27,null));e.editorActiveLineNumber=(0,y.registerColor)("editorLineNumber.activeForeground",{dark:S,light:S,hcDark:S,hcLight:S},L.localize(28,null)),e.editorDimmedLineNumber=(0,y.registerColor)("editorLineNumber.dimmedForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(29,null)),e.editorRuler=(0,y.registerColor)("editorRuler.foreground",{dark:"#5A5A5A",light:k.Color.lightgrey,hcDark:k.Color.white,hcLight:"#292929"},L.localize(30,null)),e.editorCodeLensForeground=(0,y.registerColor)("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},L.localize(31,null)),e.editorBracketMatchBackground=(0,y.registerColor)("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},L.localize(32,null)),e.editorBracketMatchBorder=(0,y.registerColor)("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:y.contrastBorder,hcLight:y.contrastBorder},L.localize(33,null)),e.editorOverviewRulerBorder=(0,y.registerColor)("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},L.localize(34,null)),e.editorOverviewRulerBackground=(0,y.registerColor)("editorOverviewRuler.background",null,L.localize(35,null)),e.editorGutter=(0,y.registerColor)("editorGutter.background",{dark:y.editorBackground,light:y.editorBackground,hcDark:y.editorBackground,hcLight:y.editorBackground},L.localize(36,null)),e.editorUnnecessaryCodeBorder=(0,y.registerColor)("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:k.Color.fromHex("#fff").transparent(.8),hcLight:y.contrastBorder},L.localize(37,null)),e.editorUnnecessaryCodeOpacity=(0,y.registerColor)("editorUnnecessaryCode.opacity",{dark:k.Color.fromHex("#000a"),light:k.Color.fromHex("#0007"),hcDark:null,hcLight:null},L.localize(38,null)),e.ghostTextBorder=(0,y.registerColor)("editorGhostText.border",{dark:null,light:null,hcDark:k.Color.fromHex("#fff").transparent(.8),hcLight:k.Color.fromHex("#292929").transparent(.8)},L.localize(39,null)),e.ghostTextForeground=(0,y.registerColor)("editorGhostText.foreground",{dark:k.Color.fromHex("#ffffff56"),light:k.Color.fromHex("#0007"),hcDark:null,hcLight:null},L.localize(40,null)),e.ghostTextBackground=(0,y.registerColor)("editorGhostText.background",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(41,null));const f=new k.Color(new k.RGBA(0,122,204,.6));e.overviewRulerRangeHighlight=(0,y.registerColor)("editorOverviewRuler.rangeHighlightForeground",{dark:f,light:f,hcDark:f,hcLight:f},L.localize(42,null),!0),e.overviewRulerError=(0,y.registerColor)("editorOverviewRuler.errorForeground",{dark:new k.Color(new k.RGBA(255,18,18,.7)),light:new k.Color(new k.RGBA(255,18,18,.7)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:"#B5200D"},L.localize(43,null)),e.overviewRulerWarning=(0,y.registerColor)("editorOverviewRuler.warningForeground",{dark:y.editorWarningForeground,light:y.editorWarningForeground,hcDark:y.editorWarningBorder,hcLight:y.editorWarningBorder},L.localize(44,null)),e.overviewRulerInfo=(0,y.registerColor)("editorOverviewRuler.infoForeground",{dark:y.editorInfoForeground,light:y.editorInfoForeground,hcDark:y.editorInfoBorder,hcLight:y.editorInfoBorder},L.localize(45,null)),e.editorBracketHighlightingForeground1=(0,y.registerColor)("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},L.localize(46,null)),e.editorBracketHighlightingForeground2=(0,y.registerColor)("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},L.localize(47,null)),e.editorBracketHighlightingForeground3=(0,y.registerColor)("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},L.localize(48,null)),e.editorBracketHighlightingForeground4=(0,y.registerColor)("editorBracketHighlight.foreground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(49,null)),e.editorBracketHighlightingForeground5=(0,y.registerColor)("editorBracketHighlight.foreground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(50,null)),e.editorBracketHighlightingForeground6=(0,y.registerColor)("editorBracketHighlight.foreground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(51,null)),e.editorBracketHighlightingUnexpectedBracketForeground=(0,y.registerColor)("editorBracketHighlight.unexpectedBracket.foreground",{dark:new k.Color(new k.RGBA(255,18,18,.8)),light:new k.Color(new k.RGBA(255,18,18,.8)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:""},L.localize(52,null)),e.editorBracketPairGuideBackground1=(0,y.registerColor)("editorBracketPairGuide.background1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(53,null)),e.editorBracketPairGuideBackground2=(0,y.registerColor)("editorBracketPairGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(54,null)),e.editorBracketPairGuideBackground3=(0,y.registerColor)("editorBracketPairGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(55,null)),e.editorBracketPairGuideBackground4=(0,y.registerColor)("editorBracketPairGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(56,null)),e.editorBracketPairGuideBackground5=(0,y.registerColor)("editorBracketPairGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(57,null)),e.editorBracketPairGuideBackground6=(0,y.registerColor)("editorBracketPairGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(58,null)),e.editorBracketPairGuideActiveBackground1=(0,y.registerColor)("editorBracketPairGuide.activeBackground1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(59,null)),e.editorBracketPairGuideActiveBackground2=(0,y.registerColor)("editorBracketPairGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(60,null)),e.editorBracketPairGuideActiveBackground3=(0,y.registerColor)("editorBracketPairGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(61,null)),e.editorBracketPairGuideActiveBackground4=(0,y.registerColor)("editorBracketPairGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(62,null)),e.editorBracketPairGuideActiveBackground5=(0,y.registerColor)("editorBracketPairGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(63,null)),e.editorBracketPairGuideActiveBackground6=(0,y.registerColor)("editorBracketPairGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(64,null)),e.editorUnicodeHighlightBorder=(0,y.registerColor)("editorUnicodeHighlight.border",{dark:"#BD9B03",light:"#CEA33D",hcDark:"#ff0000",hcLight:"#CEA33D"},L.localize(65,null)),e.editorUnicodeHighlightBackground=(0,y.registerColor)("editorUnicodeHighlight.background",{dark:"#bd9b0326",light:"#cea33d14",hcDark:"#00000000",hcLight:"#cea33d14"},L.localize(66,null)),(0,D.registerThemingParticipant)((_,g)=>{const C=_.getColor(y.editorBackground),s=_.getColor(e.editorLineHighlight),i=s&&!s.isTransparent()?s:C;i&&g.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${i}; }`)})}),define(ne[845],se([1,0,112,80,14,23,24,88,416]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CurrentLineMarginHighlightOverlay=e.CurrentLineHighlightOverlay=e.AbstractLineHighlightOverlay=void 0;class _ extends L.DynamicViewOverlay{constructor(i){super(),this._context=i;const n=this._context.configuration.options,t=n.get(142);this._lineHeight=n.get(65),this._renderLineHighlight=n.get(94),this._renderLineHighlightOnlyWhenFocus=n.get(95),this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new S.Selection(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let i=!1;const n=this._selections.map(a=>a.positionLineNumber);n.sort((a,u)=>a-u),y.equals(this._cursorLineNumbers,n)||(this._cursorLineNumbers=n,i=!0);const t=this._selections.every(a=>a.isEmpty());return this._selectionIsEmpty!==t&&(this._selectionIsEmpty=t,i=!0),i}onThemeChanged(i){return this._readFromSelections()}onConfigurationChanged(i){const n=this._context.configuration.options,t=n.get(142);return this._lineHeight=n.get(65),this._renderLineHighlight=n.get(94),this._renderLineHighlightOnlyWhenFocus=n.get(95),this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,!0}onCursorStateChanged(i){return this._selections=i.selections,this._readFromSelections()}onFlushed(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollWidthChanged||i.scrollTopChanged}onZonesChanged(i){return!0}onFocusChanged(i){return this._renderLineHighlightOnlyWhenFocus?(this._focused=i.isFocused,!0):!1}prepareRender(i){if(!this._shouldRenderThis()){this._renderData=null;return}const n=this._renderOne(i),t=i.visibleRange.startLineNumber,a=i.visibleRange.endLineNumber,u=this._cursorLineNumbers.length;let h=0;const r=[];for(let c=t;c<=a;c++){const o=c-t;for(;h=this._renderData.length?"":this._renderData[t]}_shouldRenderInMargin(){return(this._renderLineHighlight==="gutter"||this._renderLineHighlight==="all")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight==="line"||this._renderLineHighlight==="all")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}e.AbstractLineHighlightOverlay=_;class g extends _{_renderOne(i){return`
    `}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}e.CurrentLineHighlightOverlay=g;class C extends _{_renderOne(i){return`
    `}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}e.CurrentLineMarginHighlightOverlay=C,(0,D.registerThemingParticipant)((s,i)=>{const n=s.getColor(k.editorLineHighlight);if(n&&(i.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${n}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${n}; border: none; }`)),!n||n.isTransparent()||s.defines(k.editorLineHighlightBorder)){const t=s.getColor(k.editorLineHighlightBorder);t&&(i.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${t}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${t}; }`),(0,f.isHighContrast)(s.type)&&(i.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"),i.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")))}})}),define(ne[846],se([1,0,112,80,23,12,14,20,287,209,419]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentGuidesOverlay=void 0;class C extends L.DynamicViewOverlay{constructor(n){super(),this._context=n,this._primaryPosition=null;const t=this._context.configuration.options,a=t.get(143),u=t.get(49);this._lineHeight=t.get(65),this._spaceWidth=u.spaceWidth,this._maxIndentLeft=a.wrappingColumn===-1?-1:a.wrappingColumn*u.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(15),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(n){const t=this._context.configuration.options,a=t.get(143),u=t.get(49);return this._lineHeight=t.get(65),this._spaceWidth=u.spaceWidth,this._maxIndentLeft=a.wrappingColumn===-1?-1:a.wrappingColumn*u.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(15),!0}onCursorStateChanged(n){var t;const u=n.selections[0].getPosition();return!((t=this._primaryPosition)===null||t===void 0)&&t.equals(u)?!1:(this._primaryPosition=u,!0)}onDecorationsChanged(n){return!0}onFlushed(n){return!0}onLinesChanged(n){return!0}onLinesDeleted(n){return!0}onLinesInserted(n){return!0}onScrollChanged(n){return n.scrollTopChanged}onZonesChanged(n){return!0}onLanguageConfigurationChanged(n){return!0}prepareRender(n){var t,a,u,h;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const r=n.visibleRange.startLineNumber,c=n.visibleRange.endLineNumber,o=n.scrollWidth,d=this._lineHeight,l=this._primaryPosition,p=this.getGuidesByLine(r,Math.min(c+1,this._context.viewModel.getLineCount()),l),m=[];for(let v=r;v<=c;v++){const b=v-r,w=p[b];let E="";const I=(a=(t=n.visibleRangeForPosition(new D.Position(v,1)))===null||t===void 0?void 0:t.left)!==null&&a!==void 0?a:0;for(const M of w){const P=M.column===-1?I+(M.visibleColumn-1)*this._spaceWidth:n.visibleRangeForPosition(new D.Position(v,M.column)).left;if(P>o||this._maxIndentLeft>0&&P>this._maxIndentLeft)break;const x=M.horizontalLine?M.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",T=M.horizontalLine?((h=(u=n.visibleRangeForPosition(new D.Position(v,M.horizontalLine.endColumn)))===null||u===void 0?void 0:u.left)!==null&&h!==void 0?h:P+this._spaceWidth)-P:this._spaceWidth;E+=`
    `}m[b]=E}this._renderResult=m}getGuidesByLine(n,t,a){const u=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(n,t,a,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?g.HorizontalGuidesState.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal==="active"?g.HorizontalGuidesState.EnabledForActive:g.HorizontalGuidesState.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,h=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(n,t):null;let r=0,c=0,o=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&a){const p=this._context.viewModel.getActiveIndentGuide(a.lineNumber,n,t);r=p.startLineNumber,c=p.endLineNumber,o=p.indent}const{indentSize:d}=this._context.viewModel.model.getOptions(),l=[];for(let p=n;p<=t;p++){const m=new Array;l.push(m);const v=u?u[p-n]:[],b=new S.ArrayQueue(v),w=h?h[p-n]:0;for(let E=1;E<=w;E++){const I=(E-1)*d+1,M=(this._bracketPairGuideOptions.highlightActiveIndentation==="always"||v.length===0)&&r<=p&&p<=c&&E===o;m.push(...b.takeWhile(x=>x.visibleColumn!0)||[])}return l}render(n,t){if(!this._renderResult)return"";const a=t-n;return a<0||a>=this._renderResult.length?"":this._renderResult[a]}}e.IndentGuidesOverlay=C;function s(i){if(!(i&&i.isTransparent()))return i}(0,y.registerThemingParticipant)((i,n)=>{const t=[{bracketColor:k.editorBracketHighlightingForeground1,guideColor:k.editorBracketPairGuideBackground1,guideColorActive:k.editorBracketPairGuideActiveBackground1},{bracketColor:k.editorBracketHighlightingForeground2,guideColor:k.editorBracketPairGuideBackground2,guideColorActive:k.editorBracketPairGuideActiveBackground2},{bracketColor:k.editorBracketHighlightingForeground3,guideColor:k.editorBracketPairGuideBackground3,guideColorActive:k.editorBracketPairGuideActiveBackground3},{bracketColor:k.editorBracketHighlightingForeground4,guideColor:k.editorBracketPairGuideBackground4,guideColorActive:k.editorBracketPairGuideActiveBackground4},{bracketColor:k.editorBracketHighlightingForeground5,guideColor:k.editorBracketPairGuideBackground5,guideColorActive:k.editorBracketPairGuideActiveBackground5},{bracketColor:k.editorBracketHighlightingForeground6,guideColor:k.editorBracketPairGuideBackground6,guideColorActive:k.editorBracketPairGuideActiveBackground6}],a=new _.BracketPairGuidesClassNames,u=[{indentColor:k.editorIndentGuide1,indentColorActive:k.editorActiveIndentGuide1},{indentColor:k.editorIndentGuide2,indentColorActive:k.editorActiveIndentGuide2},{indentColor:k.editorIndentGuide3,indentColorActive:k.editorActiveIndentGuide3},{indentColor:k.editorIndentGuide4,indentColorActive:k.editorActiveIndentGuide4},{indentColor:k.editorIndentGuide5,indentColorActive:k.editorActiveIndentGuide5},{indentColor:k.editorIndentGuide6,indentColorActive:k.editorActiveIndentGuide6}],h=t.map(c=>{var o,d;const l=i.getColor(c.bracketColor),p=i.getColor(c.guideColor),m=i.getColor(c.guideColorActive),v=s((o=s(p))!==null&&o!==void 0?o:l?.transparent(.3)),b=s((d=s(m))!==null&&d!==void 0?d:l);if(!(!v||!b))return{guideColor:v,guideColorActive:b}}).filter(f.isDefined),r=u.map(c=>{const o=i.getColor(c.indentColor),d=i.getColor(c.indentColorActive),l=s(o),p=s(d);if(!(!l||!p))return{indentColor:l,indentColorActive:p}}).filter(f.isDefined);if(h.length>0){for(let c=0;c<30;c++){const o=h[c%h.length];n.addRule(`.monaco-editor .${a.getInlineClassNameOfLevel(c).replace(/ /g,".")} { --guide-color: ${o.guideColor}; --guide-color-active: ${o.guideColorActive}; }`)}n.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),n.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),n.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),n.addRule(`.monaco-editor .vertical.${a.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),n.addRule(`.monaco-editor .horizontal-top.${a.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),n.addRule(`.monaco-editor .horizontal-bottom.${a.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(r.length>0){for(let c=0;c<30;c++){const o=r[c%r.length];n.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${c} { --indent-color: ${o.indentColor}; --indent-color-active: ${o.indentColorActive}; }`)}n.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),n.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}})}),define(ne[358],se([1,0,17,112,12,23,80,420]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineNumbersOverlay=void 0;class f extends k.DynamicViewOverlay{constructor(g){super(),this._context=g,this._readConfig(),this._lastCursorModelPosition=new y.Position(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const g=this._context.configuration.options;this._lineHeight=g.get(65);const C=g.get(66);this._renderLineNumbers=C.renderType,this._renderCustomLineNumbers=C.renderFn,this._renderFinalNewline=g.get(93);const s=g.get(142);this._lineNumbersLeft=s.lineNumbersLeft,this._lineNumbersWidth=s.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(g){return this._readConfig(),!0}onCursorStateChanged(g){const C=g.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(C);let s=!1;return this._activeLineNumber!==C.lineNumber&&(this._activeLineNumber=C.lineNumber,s=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(s=!0),s}onFlushed(g){return!0}onLinesChanged(g){return!0}onLinesDeleted(g){return!0}onLinesInserted(g){return!0}onScrollChanged(g){return g.scrollTopChanged}onZonesChanged(g){return!0}_getLineRenderLineNumber(g){const C=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new y.Position(g,1));if(C.column!==1)return"";const s=C.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(s);if(this._renderLineNumbers===2){const i=Math.abs(this._lastCursorModelPosition.lineNumber-s);return i===0?''+s+"":String(i)}return this._renderLineNumbers===3?this._lastCursorModelPosition.lineNumber===s||s%10===0?String(s):"":String(s)}prepareRender(g){if(this._renderLineNumbers===0){this._renderResult=null;return}const C=L.isLinux?this._lineHeight%2===0?" lh-even":" lh-odd":"",s=g.visibleRange.startLineNumber,i=g.visibleRange.endLineNumber,n=this._context.viewModel.getLineCount(),t=[];for(let a=s;a<=i;a++){const u=a-s,h=this._getLineRenderLineNumber(a);if(!h){t[u]="";continue}let r="";if(a===n&&this._context.viewModel.getLineLength(a)===0){if(this._renderFinalNewline==="off"){t[u]="";continue}this._renderFinalNewline==="dimmed"&&(r=" dimmed-line-number")}a===this._activeLineNumber&&(r=" active-line-number"),t[u]=`
    ${h}
    `}this._renderResult=t}render(g,C){if(!this._renderResult)return"";const s=C-g;return s<0||s>=this._renderResult.length?"":this._renderResult[s]}}e.LineNumbersOverlay=f,f.CLASS_NAME="line-numbers",(0,D.registerThemingParticipant)((_,g)=>{const C=_.getColor(S.editorLineNumbers),s=_.getColor(S.editorDimmedLineNumber);s?g.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${s}; }`):C&&g.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${C.transparent(.4)}; }`)})}),define(ne[847],se([1,0,601,52,35,17,11,59,185,273,53,358,289,36,146,12,5,24,173,29,38,263,34,414]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextAreaHandler=void 0;class p{constructor(E,I,M,P,x){this._context=E,this.modelLineNumber=I,this.distanceToModelLineStart=M,this.widthOfHiddenLineTextBefore=P,this.distanceToModelLineEnd=x,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(E){const I=new a.Position(this.modelLineNumber,this.distanceToModelLineStart+1),M=new a.Position(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(I),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(M),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=E.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=E.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(E){return this._previousPresentation||(E?this._previousPresentation=E:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const m=k.isFirefox;let v=class extends C.ViewPart{constructor(E,I,M,P){super(E),this._keybindingService=P,this._primaryCursorPosition=new a.Position(1,1),this._primaryCursorVisibleRange=null,this._viewController=I,this._visibleRangeProvider=M,this._scrollLeft=0,this._scrollTop=0;const x=this._context.configuration.options,T=x.get(142);this._setAccessibilityOptions(x),this._contentLeft=T.contentLeft,this._contentWidth=T.contentWidth,this._contentHeight=T.height,this._fontInfo=x.get(49),this._lineHeight=x.get(65),this._emptySelectionClipboard=x.get(36),this._copyWithSyntaxHighlighting=x.get(24),this._visibleTextArea=null,this._selections=[new h.Selection(1,1,1,1)],this._modelSelections=[new h.Selection(1,1,1,1)],this._lastRenderPosition=null,this.textArea=(0,y.createFastDomNode)(document.createElement("textarea")),C.PartFingerprints.write(this.textArea,6),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:A}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${A*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(x)),this.textArea.setAttribute("aria-required",x.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(x.get(122))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",L.localize(0,null)),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",x.get(89)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=(0,y.createFastDomNode)(document.createElement("div")),this.textAreaCover.setPosition("absolute");const N={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:W=>this._context.viewModel.getLineMaxColumn(W),getValueInRange:(W,U)=>this._context.viewModel.getValueInRange(W,U),getValueLengthInRange:(W,U)=>this._context.viewModel.getValueLengthInRange(W,U),modifyPosition:(W,U)=>this._context.viewModel.modifyPosition(W,U)},F={getDataToCopy:()=>{const W=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,D.isWindows),U=this._context.viewModel.model.getEOL(),j=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),R=Array.isArray(W)?W:null,K=Array.isArray(W)?W.join(U):W;let G,Z=null;if(_.CopyOptions.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&K.length<65536){const J=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);J&&(G=J.html,Z=J.mode)}return{isFromEmptySelection:j,multicursorText:R,text:K,html:G,mode:Z}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const W=this._selections[0];if(D.isMacintosh&&W.isEmpty()){const j=W.getStartPosition();let R=this._getWordBeforePosition(j);if(R.length===0&&(R=this._getCharacterBeforePosition(j)),R.length>0)return new g.TextAreaState(R,R.length,R.length,u.Range.fromPositions(j),0)}const U=500;if(D.isMacintosh&&!W.isEmpty()&&N.getValueLengthInRange(W,0)0)return new g.TextAreaState(j,R,R,u.Range.fromPositions(U),0)}return g.TextAreaState.EMPTY}return g.PagedScreenReaderStrategy.fromEditorSelection(N,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(W,U,j)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(W,U,j)},O=this._register(new _.TextAreaWrapper(this.textArea.domNode));this._textAreaInput=this._register(new _.TextAreaInput(F,O,D.OS,{isAndroid:k.isAndroid,isChrome:k.isChrome,isFirefox:k.isFirefox,isSafari:k.isSafari})),this._register(this._textAreaInput.onKeyDown(W=>{this._viewController.emitKeyDown(W)})),this._register(this._textAreaInput.onKeyUp(W=>{this._viewController.emitKeyUp(W)})),this._register(this._textAreaInput.onPaste(W=>{let U=!1,j=null,R=null;W.metadata&&(U=this._emptySelectionClipboard&&!!W.metadata.isFromEmptySelection,j=typeof W.metadata.multicursorText<"u"?W.metadata.multicursorText:null,R=W.metadata.mode),this._viewController.paste(W.text,U,j,R)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(W=>{W.replacePrevCharCnt||W.replaceNextCharCnt||W.positionDelta?(g._debugComposition&&console.log(` => compositionType: <<${W.text}>>, ${W.replacePrevCharCnt}, ${W.replaceNextCharCnt}, ${W.positionDelta}`),this._viewController.compositionType(W.text,W.replacePrevCharCnt,W.replaceNextCharCnt,W.positionDelta)):(g._debugComposition&&console.log(` => type: <<${W.text}>>`),this._viewController.type(W.text))})),this._register(this._textAreaInput.onSelectionChangeRequest(W=>{this._viewController.setSelection(W)})),this._register(this._textAreaInput.onCompositionStart(W=>{const U=this.textArea.domNode,j=this._modelSelections[0],{distanceToModelLineStart:R,widthOfHiddenTextBefore:K}=(()=>{const Z=U.value.substring(0,Math.min(U.selectionStart,U.selectionEnd)),J=Z.lastIndexOf(` -`),X=Z.substring(J+1),H=X.lastIndexOf(" "),B=X.length-H-1,V=j.getStartPosition(),Y=Math.min(V.column-1,B),ie=V.column-1-Y,ae=X.substring(0,X.length-Y),{tabSize:ce}=this._context.viewModel.model.getOptions(),de=b(ae,this._fontInfo,ce);return{distanceToModelLineStart:ie,widthOfHiddenTextBefore:de}})(),{distanceToModelLineEnd:G}=(()=>{const Z=U.value.substring(Math.max(U.selectionStart,U.selectionEnd)),J=Z.indexOf(` -`),X=J===-1?Z:Z.substring(0,J),H=X.indexOf(" "),B=H===-1?X.length:X.length-H-1,V=j.getEndPosition(),Y=Math.min(this._context.viewModel.model.getLineMaxColumn(V.lineNumber)-V.column,B);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(V.lineNumber)-V.column-Y}})();this._context.viewModel.revealRange("keyboard",!0,u.Range.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new p(this._context,j.startLineNumber,R,K,G),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(W=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())})),this._register(this._textAreaInput.onCompositionEnd(()=>{this._visibleTextArea=null,this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._render(),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()})),this._register(this._textAreaInput.onFocus(()=>{this._context.viewModel.setHasFocus(!0)})),this._register(this._textAreaInput.onBlur(()=>{this._context.viewModel.setHasFocus(!1)})),this._register(d.IME.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(E){this._textAreaInput.writeScreenReaderContent(E)}dispose(){super.dispose()}_getAndroidWordAtPosition(E){const I='`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',M=this._context.viewModel.getLineContent(E.lineNumber),P=(0,t.getMapForWordSeparators)(I);let x=!0,T=E.column,A=!0,N=E.column,F=0;for(;F<50&&(x||A);){if(x&&T<=1&&(x=!1),x){const O=M.charCodeAt(T-2);P.get(O)!==0?x=!1:T--}if(A&&N>M.length&&(A=!1),A){const O=M.charCodeAt(N-1);P.get(O)!==0?A=!1:N++}F++}return[M.substring(T-1,N-1),E.column-T]}_getWordBeforePosition(E){const I=this._context.viewModel.getLineContent(E.lineNumber),M=(0,t.getMapForWordSeparators)(this._context.configuration.options.get(128));let P=E.column,x=0;for(;P>1;){const T=I.charCodeAt(P-2);if(M.get(T)!==0||x>50)return I.substring(P-1,E.column-1);x++,P--}return I.substring(0,E.column-1)}_getCharacterBeforePosition(E){if(E.column>1){const M=this._context.viewModel.getLineContent(E.lineNumber).charAt(E.column-2);if(!S.isHighSurrogate(M.charCodeAt(0)))return M}return""}_getAriaLabel(E){var I,M,P;if(E.get(2)===1){const T=(I=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))===null||I===void 0?void 0:I.getAriaLabel(),A=(M=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))===null||M===void 0?void 0:M.getAriaLabel(),N=(P=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))===null||P===void 0?void 0:P.getAriaLabel(),F=L.localize(1,null);return T?L.localize(2,null,F,T):A?L.localize(3,null,F,A):N?L.localize(4,null,F,N):F}return E.get(4)}_setAccessibilityOptions(E){this._accessibilitySupport=E.get(2);const I=E.get(3);this._accessibilitySupport===2&&I===n.EditorOptions.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=I;const P=E.get(142).wrappingColumn;if(P!==-1&&this._accessibilitySupport!==1){const x=E.get(49);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(P*x.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=m?0:1}onConfigurationChanged(E){const I=this._context.configuration.options,M=I.get(142);this._setAccessibilityOptions(I),this._contentLeft=M.contentLeft,this._contentWidth=M.contentWidth,this._contentHeight=M.height,this._fontInfo=I.get(49),this._lineHeight=I.get(65),this._emptySelectionClipboard=I.get(36),this._copyWithSyntaxHighlighting=I.get(24),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:P}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${P*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("aria-label",this._getAriaLabel(I)),this.textArea.setAttribute("aria-required",I.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(I.get(122))),(E.hasChanged(33)||E.hasChanged(89))&&this._ensureReadOnlyAttribute(),E.hasChanged(2)&&this._textAreaInput.writeScreenReaderContent("strategy changed"),!0}onCursorStateChanged(E){return this._selections=E.selections.slice(0),this._modelSelections=E.modelSelections.slice(0),this._textAreaInput.writeScreenReaderContent("selection changed"),!0}onDecorationsChanged(E){return!0}onFlushed(E){return!0}onLinesChanged(E){return!0}onLinesDeleted(E){return!0}onLinesInserted(E){return!0}onScrollChanged(E){return this._scrollLeft=E.scrollLeft,this._scrollTop=E.scrollTop,!0}onZonesChanged(E){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(E){E.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",E.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),E.role&&this.textArea.setAttribute("role",E.role)}_ensureReadOnlyAttribute(){const E=this._context.configuration.options;!d.IME.enabled||E.get(33)&&E.get(89)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(E){var I;this._primaryCursorPosition=new a.Position(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=E.visibleRangeForPosition(this._primaryCursorPosition),(I=this._visibleTextArea)===null||I===void 0||I.prepareRender(E)}render(E){this._textAreaInput.writeScreenReaderContent("render"),this._render()}_render(){var E;if(this._visibleTextArea){const P=this._visibleTextArea.visibleTextareaStart,x=this._visibleTextArea.visibleTextareaEnd,T=this._visibleTextArea.startPosition,A=this._visibleTextArea.endPosition;if(T&&A&&P&&x&&x.left>=this._scrollLeft&&P.left<=this._scrollLeft+this._contentWidth){const N=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,F=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let O=this._visibleTextArea.widthOfHiddenLineTextBefore,W=this._contentLeft+P.left-this._scrollLeft,U=x.left-P.left+1;if(Wthis._contentWidth&&(U=this._contentWidth);const j=this._context.viewModel.getViewLineData(T.lineNumber),R=j.tokens.findTokenIndexAtOffset(T.column-1),K=j.tokens.findTokenIndexAtOffset(A.column-1),G=R===K,Z=this._visibleTextArea.definePresentation(G?j.tokens.getPresentation(R):null);this.textArea.domNode.scrollTop=F*this._lineHeight,this.textArea.domNode.scrollLeft=O,this._doRender({lastRenderPosition:null,top:N,left:W,width:U,height:this._lineHeight,useCover:!1,color:(c.TokenizationRegistry.getColorMap()||[])[Z.foreground],italic:Z.italic,bold:Z.bold,underline:Z.underline,strikethrough:Z.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const I=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(Ithis._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const M=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(M<0||M>this._contentHeight){this._renderAtTopLeft();return}if(D.isMacintosh){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:M,left:this._textAreaWrapping?this._contentLeft:I,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const P=(E=this._textAreaInput.textAreaState.newlineCountBeforeSelection)!==null&&E!==void 0?E:this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=P*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:M,left:this._textAreaWrapping?this._contentLeft:I,width:this._textAreaWidth,height:m?0:1,useCover:!1})}_newlinecount(E){let I=0,M=-1;do{if(M=E.indexOf(` -`,M+1),M===-1)break;I++}while(!0);return I}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:m?0:1,useCover:!0})}_doRender(E){this._lastRenderPosition=E.lastRenderPosition;const I=this.textArea,M=this.textAreaCover;(0,f.applyFontInfo)(I,this._fontInfo),I.setTop(E.top),I.setLeft(E.left),I.setWidth(E.width),I.setHeight(E.height),I.setColor(E.color?o.Color.Format.CSS.formatHex(E.color):""),I.setFontStyle(E.italic?"italic":""),E.bold&&I.setFontWeight("bold"),I.setTextDecoration(`${E.underline?" underline":""}${E.strikethrough?" line-through":""}`),M.setTop(E.useCover?E.top:0),M.setLeft(E.useCover?E.left:0),M.setWidth(E.useCover?E.width:0),M.setHeight(E.useCover?E.height:0);const P=this._context.configuration.options;P.get(56)?M.setClassName("monaco-editor-background textAreaCover "+i.Margin.OUTER_CLASS_NAME):P.get(66).renderType!==0?M.setClassName("monaco-editor-background textAreaCover "+s.LineNumbersOverlay.CLASS_NAME):M.setClassName("monaco-editor-background textAreaCover")}};e.TextAreaHandler=v,e.TextAreaHandler=v=ke([fe(3,l.IKeybindingService)],v);function b(w,E,I){if(w.length===0)return 0;const M=document.createElement("div");M.style.position="absolute",M.style.top="-50000px",M.style.width="50000px";const P=document.createElement("span");(0,f.applyFontInfo)(P,E),P.style.whiteSpace="pre",P.style.tabSize=`${I*E.spaceWidth}px`,P.append(w),M.appendChild(P),document.body.appendChild(M);const x=P.offsetWidth;return document.body.removeChild(M),x}}),define(ne[848],se([1,0,35,38,53,12,29,80,67]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DecorationsOverviewRuler=void 0;class g{constructor(i,n){const t=i.options;this.lineHeight=t.get(65),this.pixelRatio=t.get(140),this.overviewRulerLanes=t.get(81),this.renderBorder=t.get(80);const a=n.getColor(f.editorOverviewRulerBorder);this.borderColor=a?a.toString():null,this.hideCursor=t.get(58);const u=n.getColor(f.editorCursorForeground);this.cursorColor=u?u.transparent(.7).toString():null,this.themeType=n.type;const h=t.get(71),r=h.enabled,c=h.side,o=n.getColor(f.editorOverviewRulerBackground),d=S.TokenizationRegistry.getDefaultBackground();o?this.backgroundColor=o:r&&c==="right"?this.backgroundColor=d:this.backgroundColor=null;const p=t.get(142).overviewRuler;this.top=p.top,this.right=p.right,this.domWidth=p.width,this.domHeight=p.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[m,v]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=m,this.w=v}_initLanes(i,n,t){const a=n-i;if(t>=3){const u=Math.floor(a/3),h=Math.floor(a/3),r=a-u-h,c=i,o=c+u,d=c+u+r;return[[0,c,o,c,d,c,o,c],[0,u,r,u+r,h,u+r+h,r+h,u+r+h]]}else if(t===2){const u=Math.floor(a/2),h=a-u,r=i,c=r+u;return[[0,r,r,r,c,r,r,r],[0,u,u,u,h,u+h,u+h,u+h]]}else{const u=i,h=a;return[[0,u,u,u,u,u,u,u],[0,h,h,h,h,h,h,h]]}}equals(i){return this.lineHeight===i.lineHeight&&this.pixelRatio===i.pixelRatio&&this.overviewRulerLanes===i.overviewRulerLanes&&this.renderBorder===i.renderBorder&&this.borderColor===i.borderColor&&this.hideCursor===i.hideCursor&&this.cursorColor===i.cursorColor&&this.themeType===i.themeType&&k.Color.equals(this.backgroundColor,i.backgroundColor)&&this.top===i.top&&this.right===i.right&&this.domWidth===i.domWidth&&this.domHeight===i.domHeight&&this.canvasWidth===i.canvasWidth&&this.canvasHeight===i.canvasHeight}}class C extends y.ViewPart{constructor(i){super(i),this._domNode=(0,L.createFastDomNode)(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=S.TokenizationRegistry.onDidChange(n=>{n.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(i){const n=new g(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(n)?!1:(this._settings=n,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,i&&this._render(),!0)}onConfigurationChanged(i){return this._updateSettings(!1)}onCursorStateChanged(i){this._cursorPositions=[];for(let n=0,t=i.selections.length;nt&&(U=t-d),F=U-d,O=U+d}F>M+1||T!==E?(P!==0&&l.fillRect(p[E],I,m[E],M-I),E=T,I=F,M=O):O>M&&(M=O)}l.fillRect(p[E],I,m[E],M-I)}if(!this._settings.hideCursor&&this._settings.cursorColor){const v=2*this._settings.pixelRatio|0,b=v/2|0,w=this._settings.x[7],E=this._settings.w[7];l.fillStyle=this._settings.cursorColor;let I=-100,M=-100;for(let P=0,x=this._cursorPositions.length;Pt&&(A=t-b);const N=A-b,F=N+v;N>M+1?(P!==0&&l.fillRect(w,I,E,M-I),I=N,M=F):F>M&&(M=F)}l.fillRect(w,I,E,M-I)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(l.beginPath(),l.lineWidth=1,l.strokeStyle=this._settings.borderColor,l.moveTo(0,0),l.lineTo(0,t),l.stroke(),l.moveTo(0,0),l.lineTo(n,0),l.stroke())}}e.DecorationsOverviewRuler=C}),define(ne[849],se([1,0,35,13,53,620,36,80,23,88,430]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewCursors=void 0;class C extends y.ViewPart{constructor(i){super(i);const n=this._context.configuration.options;this._readOnly=n.get(89),this._cursorBlinking=n.get(25),this._cursorStyle=n.get(27),this._cursorSmoothCaretAnimation=n.get(26),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new D.ViewCursor(this._context),this._secondaryCursors=[],this._renderData=[],this._domNode=(0,L.createFastDomNode)(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new k.TimeoutTimer,this._cursorFlatBlinkInterval=new k.IntervalTimer,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(i){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(i){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(i){const n=this._context.configuration.options;this._readOnly=n.get(89),this._cursorBlinking=n.get(25),this._cursorStyle=n.get(27),this._cursorSmoothCaretAnimation=n.get(26),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(i);for(let t=0,a=this._secondaryCursors.length;tn.length){const u=this._secondaryCursors.length-n.length;for(let h=0;h{for(let a=0,u=i.ranges.length;a{this._isVisible?this._hide():this._show()},C.BLINK_INTERVAL):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},C.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let i="cursors-layer";switch(this._selectionIsEmpty||(i+=" has-selection"),this._cursorStyle){case S.TextEditorCursorStyle.Line:i+=" cursor-line-style";break;case S.TextEditorCursorStyle.Block:i+=" cursor-block-style";break;case S.TextEditorCursorStyle.Underline:i+=" cursor-underline-style";break;case S.TextEditorCursorStyle.LineThin:i+=" cursor-line-thin-style";break;case S.TextEditorCursorStyle.BlockOutline:i+=" cursor-block-outline-style";break;case S.TextEditorCursorStyle.UnderlineThin:i+=" cursor-underline-thin-style";break;default:i+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:i+=" cursor-blink";break;case 2:i+=" cursor-smooth";break;case 3:i+=" cursor-phase";break;case 4:i+=" cursor-expand";break;case 5:i+=" cursor-solid";break;default:i+=" cursor-solid"}else i+=" cursor-solid";return(this._cursorSmoothCaretAnimation==="on"||this._cursorSmoothCaretAnimation==="explicit")&&(i+=" cursor-smooth-caret-animation"),i}_show(){this._primaryCursor.show();for(let i=0,n=this._secondaryCursors.length;i{const n=s.getColor(f.editorCursorForeground);if(n){let t=s.getColor(f.editorCursorBackground);t||(t=n.opposite()),i.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${n}; border-color: ${n}; color: ${t}; }`),(0,g.isHighContrast)(s.type)&&i.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${t}; border-right: 1px solid ${t}; }`)}})}),define(ne[850],se([1,0,112,11,95,12,80,431]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WhitespaceOverlay=void 0;class f extends L.DynamicViewOverlay{constructor(C){super(),this._context=C,this._options=new _(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(C){const s=new _(this._context.configuration);return this._options.equals(s)?C.hasChanged(142):(this._options=s,!0)}onCursorStateChanged(C){return this._selection=C.selections,this._options.renderWhitespace==="selection"}onDecorationsChanged(C){return!0}onFlushed(C){return!0}onLinesChanged(C){return!0}onLinesDeleted(C){return!0}onLinesInserted(C){return!0}onScrollChanged(C){return C.scrollTopChanged}onZonesChanged(C){return!0}prepareRender(C){if(this._options.renderWhitespace==="none"){this._renderResult=null;return}const s=C.visibleRange.startLineNumber,n=C.visibleRange.endLineNumber-s+1,t=new Array(n);for(let u=0;uu)continue;const l=d.startLineNumber===u?d.startColumn:r.minColumn,p=d.endLineNumber===u?d.endColumn:r.maxColumn;l=N.endOffset&&(A++,N=i&&i[A]),W!==9&&W!==32||d&&!P&&O<=T)continue;if(o&&O>=x&&O<=T&&W===32){const j=O-1>=0?u.charCodeAt(O-1):0,R=O+1=0?u.charCodeAt(O-1):0;if(W===32&&j!==32&&j!==9)continue}if(i&&(!N||N.startOffset>O||N.endOffset<=O))continue;const U=C.visibleRangeForPosition(new D.Position(s,O+1));U&&(a?(F=Math.max(F,U.left),W===9?M+=this._renderArrow(l,v,U.left):M+=``):W===9?M+=`
    ${I?String.fromCharCode(65515):String.fromCharCode(8594)}
    `:M+=`
    ${String.fromCharCode(E)}
    `)}return a?(F=Math.round(F+v),``+M+""):M}_renderArrow(C,s,i){const n=s/7,t=s,a=C/2,u=i,h={x:0,y:n/2},r={x:100/125*t,y:h.y},c={x:r.x-.2*r.x,y:r.y+.2*r.x},o={x:c.x+.1*r.x,y:c.y+.1*r.x},d={x:o.x+.35*r.x,y:o.y-.35*r.x},l={x:d.x,y:-d.y},p={x:o.x,y:-o.y},m={x:c.x,y:-c.y},v={x:r.x,y:-r.y},b={x:h.x,y:-h.y};return``}render(C,s){if(!this._renderResult)return"";const i=s-C;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}e.WhitespaceOverlay=f;class _{constructor(C){const s=C.options,i=s.get(49),n=s.get(37);n==="off"?(this.renderWhitespace="none",this.renderWithSVG=!1):n==="svg"?(this.renderWhitespace=s.get(97),this.renderWithSVG=!0):(this.renderWhitespace=s.get(97),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=s.get(65),this.stopRenderingLineAfter=s.get(115)}equals(C){return this.renderWhitespace===C.renderWhitespace&&this.renderWithSVG===C.renderWithSVG&&this.spaceWidth===C.spaceWidth&&this.middotWidth===C.middotWidth&&this.wsmiddotWidth===C.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===C.canUseHalfwidthRightwardsArrow&&this.lineHeight===C.lineHeight&&this.stopRenderingLineAfter===C.stopRenderingLineAfter}}}),define(ne[851],se([1,0,7,24,5,35,9,837,847,793,272,592,53,589,845,522,842,846,358,838,523,289,524,821,525,848,534,526,527,843,849,528,12,144,535,531,150,23,355,521,260,850,210,48,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.View=void 0;let J=class extends F.ViewEventHandler{constructor(B,V,Y,ie,ae,ce,de){super(),this._instantiationService=de,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new k.Selection(1,1,1,1)],this._renderAnimationFrame=null;const he=new g.ViewController(V,ie,ae,B);this._context=new A.ViewContext(V,Y,ie),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(_.TextAreaHandler,this._context,he,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=(0,D.createFastDomNode)(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=(0,D.createFastDomNode)(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=(0,D.createFastDomNode)(document.createElement("div")),i.PartFingerprints.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new u.EditorScrollbar(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new c.ViewLines(this._context,this._linesContent),this._viewZones=new P.ViewZones(this._context),this._viewParts.push(this._viewZones);const ue=new v.DecorationsOverviewRuler(this._context);this._viewParts.push(ue);const te=new E.ScrollDecorationViewPart(this._context);this._viewParts.push(te);const q=new s.ContentViewOverlays(this._context);this._viewParts.push(q),q.addDynamicOverlay(new t.CurrentLineHighlightOverlay(this._context)),q.addDynamicOverlay(new I.SelectionsOverlay(this._context)),q.addDynamicOverlay(new h.IndentGuidesOverlay(this._context)),q.addDynamicOverlay(new a.DecorationsOverlay(this._context)),q.addDynamicOverlay(new R.WhitespaceOverlay(this._context));const z=new s.MarginViewOverlays(this._context);this._viewParts.push(z),z.addDynamicOverlay(new t.CurrentLineMarginHighlightOverlay(this._context)),z.addDynamicOverlay(new l.MarginViewLineDecorationsOverlay(this._context)),z.addDynamicOverlay(new o.LinesDecorationsOverlay(this._context)),z.addDynamicOverlay(new r.LineNumbersOverlay(this._context)),this._glyphMarginWidgets=new K.GlyphMarginWidgets(this._context),this._viewParts.push(this._glyphMarginWidgets);const ee=new d.Margin(this._context);ee.getDomNode().appendChild(this._viewZones.marginDomNode),ee.getDomNode().appendChild(z.getDomNode()),ee.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(ee),this._contentWidgets=new n.ViewContentWidgets(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new M.ViewCursors(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new m.ViewOverlayWidgets(this._context),this._viewParts.push(this._overlayWidgets);const $=new w.Rulers(this._context);this._viewParts.push($);const re=new U.BlockDecorations(this._context);this._viewParts.push(re);const oe=new p.Minimap(this._context);if(this._viewParts.push(oe),ue){const ge=this._scrollbar.getOverviewRulerLayoutInfo();ge.parent.insertBefore(ue.getDomNode(),ge.insertBefore)}this._linesContent.appendChild(q.getDomNode()),this._linesContent.appendChild($.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(ee.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(te.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(oe.getDomNode()),this._overflowGuardContainer.appendChild(re.domNode),this.domNode.appendChild(this._overflowGuardContainer),ce?ce.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode):this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this._applyLayout(),this._pointerHandler=this._register(new f.PointerHandler(this._context,he,this._createPointerHandlerHelper()))}_flushAccumulatedAndRenderNow(){this._shouldRecomputeGlyphMarginLanes&&(this._shouldRecomputeGlyphMarginLanes=!1,this._context.configuration.setGlyphMarginDecorationLaneCount(this._computeGlyphMarginLaneCount())),j.inputLatency.onRenderStart(),this._renderNow()}_computeGlyphMarginLaneCount(){const B=this._context.viewModel.model;let V=[];V=V.concat(B.getAllMarginDecorations().map(ae=>{var ce,de;const he=(de=(ce=ae.options.glyphMargin)===null||ce===void 0?void 0:ce.position)!==null&&de!==void 0?de:G.GlyphMarginLane.Left;return{range:ae.range,lane:he}})),V=V.concat(this._glyphMarginWidgets.getWidgets().map(ae=>({range:B.validateRange(ae.preference.range),lane:ae.preference.lane}))),V.sort((ae,ce)=>y.Range.compareRangesUsingStarts(ae.range,ce.range));let Y=null,ie=null;for(const ae of V)if(ae.lane===G.GlyphMarginLane.Left&&(!Y||y.Range.compareRangesUsingEnds(Y,ae.range)<0)&&(Y=ae.range),ae.lane===G.GlyphMarginLane.Right&&(!ie||y.Range.compareRangesUsingEnds(ie,ae.range)<0)&&(ie=ae.range),Y&&ie){if(Y.endLineNumber{this.focus()},dispatchTextAreaEvent:B=>{this._textAreaHandler.textArea.domNode.dispatchEvent(B)},getLastRenderData:()=>{const B=this._viewCursors.getLastRenderData()||[],V=this._textAreaHandler.getLastRenderData();return new W.PointerHandlerLastRenderData(B,V)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:B=>this._viewZones.shouldSuppressMouseDownOnViewZone(B),shouldSuppressMouseDownOnWidget:B=>this._contentWidgets.shouldSuppressMouseDownOnWidget(B),getPositionFromDOMInfo:(B,V)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(B,V)),visibleRangeForPosition:(B,V)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new x.Position(B,V))),getLineWidth:B=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(B))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:B=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(B))}}_applyLayout(){const V=this._context.configuration.options.get(142);this.domNode.setWidth(V.width),this.domNode.setHeight(V.height),this._overflowGuardContainer.setWidth(V.width),this._overflowGuardContainer.setHeight(V.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}_getEditorClassName(){const B=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(139)+" "+(0,O.getThemeTypeSelector)(this._context.theme.type)+B}handleEvents(B){super.handleEvents(B),this._scheduleRender()}onConfigurationChanged(B){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(B){return this._selections=B.selections,!1}onDecorationsChanged(B){return B.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(B){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(B){return this._context.theme.update(B.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const B of this._viewParts)B.dispose();super.dispose()}_scheduleRender(){this._renderAnimationFrame===null&&(this._renderAnimationFrame=L.runAtThisOrScheduleAtNextAnimationFrame(this._onRenderScheduled.bind(this),100))}_onRenderScheduled(){this._renderAnimationFrame=null,this._flushAccumulatedAndRenderNow()}_renderNow(){X(()=>this._actualRender())}_getViewPartsToRender(){const B=[];let V=0;for(const Y of this._viewParts)Y.shouldRender()&&(B[V++]=Y);return B}_actualRender(){if(!L.isInDOM(this.domNode.domNode))return;let B=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&B.length===0)return;const V=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(V.startLineNumber,V.endLineNumber,V.centeredLineNumber);const Y=new N.ViewportData(this._selections,V,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(Y),this._viewLines.shouldRender()&&(this._viewLines.renderText(Y),this._viewLines.onDidRender(),B=this._getViewPartsToRender());const ie=new T.RenderingContext(this._context.viewLayout,Y,this._viewLines);for(const ae of B)ae.prepareRender(ie);for(const ae of B)ae.render(ie),ae.onDidRender()}delegateVerticalScrollbarPointerDown(B){this._scrollbar.delegateVerticalScrollbarPointerDown(B)}delegateScrollFromMouseWheelEvent(B){this._scrollbar.delegateScrollFromMouseWheelEvent(B)}restoreState(B){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:B.scrollTop,scrollLeft:B.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(B,V){const Y=this._context.viewModel.model.validatePosition({lineNumber:B,column:V}),ie=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(Y);this._flushAccumulatedAndRenderNow();const ae=this._viewLines.visibleRangeForPosition(new x.Position(ie.lineNumber,ie.column));return ae?ae.left:-1}getTargetAtClientPoint(B,V){const Y=this._pointerHandler.getTargetAtClientPoint(B,V);return Y?C.ViewUserInputEvents.convertViewToModelMouseTarget(Y,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(B){return new b.OverviewRuler(this._context,B)}change(B){this._viewZones.changeViewZones(B),this._scheduleRender()}render(B,V){if(V){this._viewLines.forceShouldRender();for(const Y of this._viewParts)Y.forceShouldRender()}B?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(B){this._textAreaHandler.writeScreenReaderContent(B)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(B){this._textAreaHandler.setAriaOptions(B)}addContentWidget(B){this._contentWidgets.addWidget(B.widget),this.layoutContentWidget(B),this._scheduleRender()}layoutContentWidget(B){var V,Y,ie,ae,ce,de,he,ue;this._contentWidgets.setWidgetPosition(B.widget,(Y=(V=B.position)===null||V===void 0?void 0:V.position)!==null&&Y!==void 0?Y:null,(ae=(ie=B.position)===null||ie===void 0?void 0:ie.secondaryPosition)!==null&&ae!==void 0?ae:null,(de=(ce=B.position)===null||ce===void 0?void 0:ce.preference)!==null&&de!==void 0?de:null,(ue=(he=B.position)===null||he===void 0?void 0:he.positionAffinity)!==null&&ue!==void 0?ue:null),this._scheduleRender()}removeContentWidget(B){this._contentWidgets.removeWidget(B.widget),this._scheduleRender()}addOverlayWidget(B){this._overlayWidgets.addWidget(B.widget),this.layoutOverlayWidget(B),this._scheduleRender()}layoutOverlayWidget(B){const V=B.position?B.position.preference:null;this._overlayWidgets.setWidgetPosition(B.widget,V)&&this._scheduleRender()}removeOverlayWidget(B){this._overlayWidgets.removeWidget(B.widget),this._scheduleRender()}addGlyphMarginWidget(B){this._glyphMarginWidgets.addWidget(B.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(B){const V=B.position;this._glyphMarginWidgets.setWidgetPosition(B.widget,V)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(B){this._glyphMarginWidgets.removeWidget(B.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};e.View=J,e.View=J=ke([fe(6,Z.IInstantiationService)],J);function X(H){try{return H()}catch(B){(0,S.onUnexpectedError)(B)}}}),define(ne[852],se([1,0,6,2,5,80,23]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorizedBracketPairsDecorationProvider=void 0;class f extends k.Disposable{constructor(C){super(),this.textModel=C,this.colorProvider=new _,this.onDidChangeEmitter=new L.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=C.getOptions().bracketPairColorizationOptions,this._register(C.bracketPairs.onDidChange(s=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(C){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(C,s,i,n){return n?[]:s===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(C,!0).map(a=>({id:`bracket${a.range.toString()}-${a.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(a,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:a.range})).toArray():[]}getAllDecorations(C,s){return C===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new y.Range(1,1,this.textModel.getLineCount(),1),C,s):[]}}e.ColorizedBracketPairsDecorationProvider=f;class _{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(C,s){return C.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(s?C.nestingLevelOfEqualBracketType:C.nestingLevel)}getInlineClassNameOfLevel(C){return`bracket-highlighting-${C%30}`}}(0,S.registerThemingParticipant)((g,C)=>{const s=[D.editorBracketHighlightingForeground1,D.editorBracketHighlightingForeground2,D.editorBracketHighlightingForeground3,D.editorBracketHighlightingForeground4,D.editorBracketHighlightingForeground5,D.editorBracketHighlightingForeground6],i=new _;C.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${g.getColor(D.editorBracketHighlightingUnexpectedBracketForeground)}; }`);const n=s.map(t=>g.getColor(t)).filter(t=>!!t).filter(t=>!t.isTransparent());for(let t=0;t<30;t++){const a=n[t%n.length];C.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(t)} { color: ${a}; }`)}})}),define(ne[853],se([1,0,97,2,48,23,80,51,5,54,6,31,65]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerDecorationsService=void 0;class n extends k.Disposable{constructor(u){super(),this.model=u,this._markersData=new Map,this._register((0,k.toDisposable)(()=>{this.model.deltaDecorations([...this._markersData.keys()],[]),this._markersData.clear()}))}update(u,h){const r=[...this._markersData.keys()];this._markersData.clear();const c=this.model.deltaDecorations(r,h);for(let o=0;othis._onModelAdded(r)),this._register(u.onModelAdded(this._onModelAdded,this)),this._register(u.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(u=>u.dispose()),this._markerDecorations.clear()}getMarker(u,h){const r=this._markerDecorations.get(u);return r&&r.getMarker(h)||null}_handleMarkerChange(u){u.forEach(h=>{const r=this._markerDecorations.get(h);r&&this._updateDecorations(r)})}_onModelAdded(u){const h=new n(u);this._markerDecorations.set(u.uri,h),this._updateDecorations(h)}_onModelRemoved(u){var h;const r=this._markerDecorations.get(u.uri);r&&(r.dispose(),this._markerDecorations.delete(u.uri)),(u.uri.scheme===g.Schemas.inMemory||u.uri.scheme===g.Schemas.internal||u.uri.scheme===g.Schemas.vscode)&&((h=this._markerService)===null||h===void 0||h.read({resource:u.uri}).map(c=>c.owner).forEach(c=>this._markerService.remove(c,[u.uri])))}_updateDecorations(u){const h=this._markerService.read({resource:u.model.uri,take:500}),r=h.map(c=>({range:this._createDecorationRange(u.model,c),options:this._createDecorationOption(c)}));u.update(h,r)&&this._onDidChangeMarker.fire(u.model)}_createDecorationRange(u,h){let r=_.Range.lift(h);if(h.severity===L.MarkerSeverity.Hint&&!this._hasMarkerTag(h,1)&&!this._hasMarkerTag(h,2)&&(r=r.setEndPosition(r.startLineNumber,r.startColumn+2)),r=u.validateRange(r),r.isEmpty()){const c=u.getLineLastNonWhitespaceColumn(r.startLineNumber)||u.getLineMaxColumn(r.startLineNumber);if(c===1||r.endColumn>=c)return r;const o=u.getWordAtPosition(r.getStartPosition());o&&(r=new _.Range(r.startLineNumber,o.startColumn,r.endLineNumber,o.endColumn))}else if(h.endColumn===Number.MAX_VALUE&&h.startColumn===1&&r.startLineNumber===r.endLineNumber){const c=u.getLineFirstNonWhitespaceColumn(h.startLineNumber);c=0:!1}};e.MarkerDecorationsService=t,e.MarkerDecorationsService=t=ke([fe(0,f.IModelService),fe(1,L.IMarkerService)],t)}),define(ne[252],se([1,0,124,23,70,519,41]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toMultilineTokens2=e.SemanticTokensProviderStyling=void 0;let f=class{constructor(i,n,t,a){this._legend=i,this._themeService=n,this._languageService=t,this._logService=a,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new C}getMetadata(i,n,t){const a=this._languageService.languageIdCodec.encodeLanguageId(t),u=this._hashTable.get(i,n,a);let h;if(u)h=u.metadata,this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${i} / ${n}: foreground ${L.TokenMetadata.getForeground(h)}, fontStyle ${L.TokenMetadata.getFontStyle(h).toString(2)}`);else{let r=this._legend.tokenTypes[i];const c=[];if(r){let o=n;for(let l=0;o>0&&l>1;o>0&&this._logService.getLevel()===y.LogLevel.Trace&&(this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${n.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`),c.push("not-in-legend"));const d=this._themeService.getColorTheme().getTokenStyleMetadata(r,c,t);if(typeof d>"u")h=2147483647;else{if(h=0,typeof d.italic<"u"){const l=(d.italic?1:0)<<11;h|=l|1}if(typeof d.bold<"u"){const l=(d.bold?2:0)<<11;h|=l|2}if(typeof d.underline<"u"){const l=(d.underline?4:0)<<11;h|=l|4}if(typeof d.strikethrough<"u"){const l=(d.strikethrough?8:0)<<11;h|=l|8}if(d.foreground){const l=d.foreground<<15;h|=l|16}h===0&&(h=2147483647)}}else this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${i} for legend: ${JSON.stringify(this._legend.tokenTypes)}`),h=2147483647,r="not-in-legend";this._hashTable.add(i,n,a,h),this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling ${i} (${r}) / ${n} (${c.join(" ")}): foreground ${L.TokenMetadata.getForeground(h)}, fontStyle ${L.TokenMetadata.getFontStyle(h).toString(2)}`)}return h}warnOverlappingSemanticTokens(i,n){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,console.warn(`Overlapping semantic tokens detected at lineNumber ${i}, column ${n}`))}warnInvalidLengthSemanticTokens(i,n){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,console.warn(`Semantic token with invalid length detected at lineNumber ${i}, column ${n}`))}warnInvalidEditStart(i,n,t,a,u){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,console.warn(`Invalid semantic tokens edit detected (previousResultId: ${i}, resultId: ${n}) at edit #${t}: The provided start offset ${a} is outside the previous data (length ${u}).`))}};e.SemanticTokensProviderStyling=f,e.SemanticTokensProviderStyling=f=ke([fe(1,k.IThemeService),fe(2,S.ILanguageService),fe(3,y.ILogService)],f);function _(s,i,n){const t=s.data,a=s.data.length/5|0,u=Math.max(Math.ceil(a/1024),400),h=[];let r=0,c=1,o=0;for(;rd&&t[5*I]===0;)I--;if(I-1===d){let M=l;for(;M+1T)i.warnOverlappingSemanticTokens(x,T+1);else{const W=i.getMetadata(F,O,n);W!==2147483647&&(v===0&&(v=x),p[m]=x-v,p[m+1]=T,p[m+2]=N,p[m+3]=W,m+=4,b=x,w=N)}c=x,o=T,r++}m!==p.length&&(p=p.subarray(0,m));const E=D.SparseMultilineTokens.create(v,p);h.push(E)}return h}e.toMultilineTokens2=_;class g{constructor(i,n,t,a){this.tokenTypeIndex=i,this.tokenModifierSet=n,this.languageId=t,this.metadata=a,this.next=null}}class C{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=C._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1=this._growCount){const u=this._elements;this._currentLengthIndex++,this._currentLength=C._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1{this._caches=new WeakMap}))}getStyling(s){return this._caches.has(s)||this._caches.set(s,new S.SemanticTokensProviderStyling(s.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(s)}};e.SemanticTokensStylingService=g,e.SemanticTokensStylingService=g=ke([fe(0,y.IThemeService),fe(1,D.ILogService),fe(2,k.ILanguageService)],g),(0,_.registerSingleton)(f.ISemanticTokensStylingService,g,1)}),define(ne[359],se([1,0,99,2,177,48,80,23,49]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractEditorNavigationQuickAccessProvider=void 0;class g{constructor(s){this.options=s,this.rangeHighlightDecorationId=void 0}provide(s,i){var n;const t=new k.DisposableStore;s.canAcceptInBackground=!!(!((n=this.options)===null||n===void 0)&&n.canAcceptInBackground),s.matchOnLabel=s.matchOnDescription=s.matchOnDetail=s.sortByLabel=!1;const a=t.add(new k.MutableDisposable);return a.value=this.doProvide(s,i),t.add(this.onDidActiveTextEditorControlChange(()=>{a.value=void 0,a.value=this.doProvide(s,i)})),t}doProvide(s,i){var n;const t=new k.DisposableStore,a=this.activeTextEditorControl;if(a&&this.canProvideWithTextEditor(a)){const u={editor:a},h=(0,y.getCodeEditor)(a);if(h){let r=(n=a.saveViewState())!==null&&n!==void 0?n:void 0;t.add(h.onDidChangeCursorPosition(()=>{var c;r=(c=a.saveViewState())!==null&&c!==void 0?c:void 0})),u.restoreViewState=()=>{r&&a===this.activeTextEditorControl&&a.restoreViewState(r)},t.add((0,L.once)(i.onCancellationRequested)(()=>{var c;return(c=u.restoreViewState)===null||c===void 0?void 0:c.call(u)}))}t.add((0,k.toDisposable)(()=>this.clearDecorations(a))),t.add(this.provideWithTextEditor(u,s,i))}else t.add(this.provideWithoutTextEditor(s,i));return t}canProvideWithTextEditor(s){return!0}gotoLocation({editor:s},i){s.setSelection(i.range),s.revealRangeInCenter(i.range,0),i.preserveFocus||s.focus();const n=s.getModel();n&&"getLineContent"in n&&(0,_.status)(`${n.getLineContent(i.range.startLineNumber)}`)}getModel(s){var i;return(0,y.isDiffEditor)(s)?(i=s.getModel())===null||i===void 0?void 0:i.modified:s.getModel()}addDecorations(s,i){s.changeDecorations(n=>{const t=[];this.rangeHighlightDecorationId&&(t.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),t.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const a=[{range:i,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:i,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:(0,f.themeColorFromId)(S.overviewRulerRangeHighlight),position:D.OverviewRulerLane.Full}}}],[u,h]=n.deltaDecorations(t,a);this.rangeHighlightDecorationId={rangeHighlightId:u,overviewRulerDecorationId:h}})}clearDecorations(s){const i=this.rangeHighlightDecorationId;i&&(s.changeDecorations(n=>{n.deltaDecorations([i.overviewRulerDecorationId,i.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}e.AbstractEditorNavigationQuickAccessProvider=g}),define(ne[855],se([1,0,2,177,359,691]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractGotoLineQuickAccessProvider=void 0;class S extends y.AbstractEditorNavigationQuickAccessProvider{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(_){const g=(0,D.localize)(0,null);return _.items=[{label:g}],_.ariaLabel=g,L.Disposable.None}provideWithTextEditor(_,g,C){const s=_.editor,i=new L.DisposableStore;i.add(g.onDidAccept(a=>{const[u]=g.selectedItems;if(u){if(!this.isValidLineNumber(s,u.lineNumber))return;this.gotoLocation(_,{range:this.toRange(u.lineNumber,u.column),keyMods:g.keyMods,preserveFocus:a.inBackground}),a.inBackground||g.hide()}}));const n=()=>{const a=this.parsePosition(s,g.value.trim().substr(S.PREFIX.length)),u=this.getPickLabel(s,a.lineNumber,a.column);if(g.items=[{lineNumber:a.lineNumber,column:a.column,label:u}],g.ariaLabel=u,!this.isValidLineNumber(s,a.lineNumber)){this.clearDecorations(s);return}const h=this.toRange(a.lineNumber,a.column);s.revealRangeInCenter(h,0),this.addDecorations(s,h)};n(),i.add(g.onDidChangeValue(()=>n()));const t=(0,k.getCodeEditor)(s);return t&&t.getOptions().get(66).renderType===2&&(t.updateOptions({lineNumbers:"on"}),i.add((0,L.toDisposable)(()=>t.updateOptions({lineNumbers:"relative"})))),i}toRange(_=1,g=1){return{startLineNumber:_,startColumn:g,endLineNumber:_,endColumn:g}}parsePosition(_,g){const C=g.split(/,|:|#/).map(i=>parseInt(i,10)).filter(i=>!isNaN(i)),s=this.lineCount(_)+1;return{lineNumber:C[0]>0?C[0]:s+C[0],column:C[1]}}getPickLabel(_,g,C){if(this.isValidLineNumber(_,g))return this.isValidColumn(_,g,C)?(0,D.localize)(1,null,g,C):(0,D.localize)(2,null,g);const s=_.getPosition()||{lineNumber:1,column:1},i=this.lineCount(_);return i>1?(0,D.localize)(3,null,s.lineNumber,s.column,i):(0,D.localize)(4,null,s.lineNumber,s.column)}isValidLineNumber(_,g){return!g||typeof g!="number"?!1:g>0&&g<=this.lineCount(_)}isValidColumn(_,g,C){if(!C||typeof C!="number")return!1;const s=this.getModel(_);if(!s)return!1;const i={lineNumber:g,column:C};return s.validatePosition(i).equals(i)}lineCount(_){var g,C;return(C=(g=this.getModel(_))===null||g===void 0?void 0:g.getLineCount())!==null&&C!==void 0?C:0}}e.AbstractGotoLineQuickAccessProvider=S,S.PREFIX=":"}),define(ne[856],se([1,0,13,19,25,26,570,2,11,5,29,188,359,692,18,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractGotoSymbolQuickAccessProvider=void 0;let h=u=class extends i.AbstractEditorNavigationQuickAccessProvider{constructor(d,l,p=Object.create(null)){super(p),this._languageFeaturesService=d,this._outlineModelService=l,this.options=p,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(d){return this.provideLabelPick(d,(0,n.localize)(0,null)),f.Disposable.None}provideWithTextEditor(d,l,p){const m=d.editor,v=this.getModel(m);return v?this._languageFeaturesService.documentSymbolProvider.has(v)?this.doProvideWithEditorSymbols(d,v,l,p):this.doProvideWithoutEditorSymbols(d,v,l,p):f.Disposable.None}doProvideWithoutEditorSymbols(d,l,p,m){const v=new f.DisposableStore;return this.provideLabelPick(p,(0,n.localize)(1,null)),we(this,void 0,void 0,function*(){!(yield this.waitForLanguageSymbolRegistry(l,v))||m.isCancellationRequested||v.add(this.doProvideWithEditorSymbols(d,l,p,m))}),v}provideLabelPick(d,l){d.items=[{label:l,index:0,kind:14}],d.ariaLabel=l}waitForLanguageSymbolRegistry(d,l){return we(this,void 0,void 0,function*(){if(this._languageFeaturesService.documentSymbolProvider.has(d))return!0;const p=new L.DeferredPromise,m=l.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(d)&&(m.dispose(),p.complete(!0))}));return l.add((0,f.toDisposable)(()=>p.complete(!1))),p.p})}doProvideWithEditorSymbols(d,l,p,m){var v;const b=d.editor,w=new f.DisposableStore;w.add(p.onDidAccept(P=>{const[x]=p.selectedItems;x&&x.range&&(this.gotoLocation(d,{range:x.range.selection,keyMods:p.keyMods,preserveFocus:P.inBackground}),P.inBackground||p.hide())})),w.add(p.onDidTriggerItemButton(({item:P})=>{P&&P.range&&(this.gotoLocation(d,{range:P.range.selection,keyMods:p.keyMods,forceSideBySide:!0}),p.hide())}));const E=this.getDocumentSymbols(l,m);let I;const M=P=>we(this,void 0,void 0,function*(){I?.dispose(!0),p.busy=!1,I=new k.CancellationTokenSource(m),p.busy=!0;try{const x=(0,S.prepareQuery)(p.value.substr(u.PREFIX.length).trim()),T=yield this.doGetSymbolPicks(E,x,void 0,I.token);if(m.isCancellationRequested)return;if(T.length>0){if(p.items=T,P&&x.original.length===0){const A=(0,a.findLast)(T,N=>!!(N.type!=="separator"&&N.range&&g.Range.containsPosition(N.range.decoration,P)));A&&(p.activeItems=[A])}}else x.original.length>0?this.provideLabelPick(p,(0,n.localize)(2,null)):this.provideLabelPick(p,(0,n.localize)(3,null))}finally{m.isCancellationRequested||(p.busy=!1)}});return w.add(p.onDidChangeValue(()=>M(void 0))),M((v=b.getSelection())===null||v===void 0?void 0:v.getPosition()),w.add(p.onDidChangeActive(()=>{const[P]=p.activeItems;P&&P.range&&(b.revealRangeInCenter(P.range.selection,0),this.addDecorations(b,P.range.decoration))})),w}doGetSymbolPicks(d,l,p,m){var v,b;return we(this,void 0,void 0,function*(){const w=yield d;if(m.isCancellationRequested)return[];const E=l.original.indexOf(u.SCOPE_PREFIX)===0,I=E?1:0;let M,P;l.values&&l.values.length>1?(M=(0,S.pieceToQuery)(l.values[0]),P=(0,S.pieceToQuery)(l.values.slice(1))):M=l;let x;const T=(b=(v=this.options)===null||v===void 0?void 0:v.openSideBySideDirection)===null||b===void 0?void 0:b.call(v);T&&(x=[{iconClass:T==="right"?D.ThemeIcon.asClassName(y.Codicon.splitHorizontal):D.ThemeIcon.asClassName(y.Codicon.splitVertical),tooltip:T==="right"?(0,n.localize)(4,null):(0,n.localize)(5,null)}]);const A=[];for(let O=0;OI){let B=!1;if(M!==l&&([G,Z]=(0,S.scoreFuzzy2)(j,Object.assign(Object.assign({},l),{values:void 0}),I,R),typeof G=="number"&&(B=!0)),typeof G!="number"&&([G,Z]=(0,S.scoreFuzzy2)(j,M,I,R),typeof G!="number"))continue;if(!B&&P){if(K&&P.original.length>0&&([J,X]=(0,S.scoreFuzzy2)(K,P)),typeof J!="number")continue;typeof G=="number"&&(G+=J)}}const H=W.tags&&W.tags.indexOf(1)>=0;A.push({index:O,kind:W.kind,score:G,label:j,ariaLabel:(0,C.getAriaLabelForSymbol)(W.name,W.kind),description:K,highlights:H?void 0:{label:Z,description:X},range:{selection:g.Range.collapseToStart(W.selectionRange),decoration:W.range},strikethrough:H,buttons:x})}const N=A.sort((O,W)=>E?this.compareByKindAndScore(O,W):this.compareByScore(O,W));let F=[];if(E){let j=function(){W&&typeof O=="number"&&U>0&&(W.label=(0,_.format)(c[O]||r,U))},O,W,U=0;for(const R of N)O!==R.kind?(j(),O=R.kind,U=1,W={type:"separator"},F.push(W)):U++,F.push(R);j()}else N.length>0&&(F=[{label:(0,n.localize)(6,null,A.length),type:"separator"},...N]);return F})}compareByScore(d,l){if(typeof d.score!="number"&&typeof l.score=="number")return 1;if(typeof d.score=="number"&&typeof l.score!="number")return-1;if(typeof d.score=="number"&&typeof l.score=="number"){if(d.score>l.score)return-1;if(d.scorel.index?1:0}compareByKindAndScore(d,l){const p=c[d.kind]||r,m=c[l.kind]||r,v=p.localeCompare(m);return v===0?this.compareByScore(d,l):v}getDocumentSymbols(d,l){return we(this,void 0,void 0,function*(){const p=yield this._outlineModelService.getOrCreate(d,l);return l.isCancellationRequested?[]:p.asListOfDocumentSymbols()})}};e.AbstractGotoSymbolQuickAccessProvider=h,h.PREFIX="@",h.SCOPE_PREFIX=":",h.PREFIX_BY_CATEGORY=`${u.PREFIX}${u.SCOPE_PREFIX}`,e.AbstractGotoSymbolQuickAccessProvider=h=u=ke([fe(0,t.ILanguageFeaturesService),fe(1,s.IOutlineModelService)],h);const r=(0,n.localize)(7,null),c={[5]:(0,n.localize)(8,null),[11]:(0,n.localize)(9,null),[8]:(0,n.localize)(10,null),[12]:(0,n.localize)(11,null),[4]:(0,n.localize)(12,null),[22]:(0,n.localize)(13,null),[23]:(0,n.localize)(14,null),[24]:(0,n.localize)(15,null),[10]:(0,n.localize)(16,null),[2]:(0,n.localize)(17,null),[3]:(0,n.localize)(18,null),[25]:(0,n.localize)(19,null),[1]:(0,n.localize)(20,null),[6]:(0,n.localize)(21,null),[9]:(0,n.localize)(22,null),[21]:(0,n.localize)(23,null),[14]:(0,n.localize)(24,null),[0]:(0,n.localize)(25,null),[17]:(0,n.localize)(26,null),[15]:(0,n.localize)(27,null),[16]:(0,n.localize)(28,null),[18]:(0,n.localize)(29,null),[19]:(0,n.localize)(30,null),[7]:(0,n.localize)(31,null),[13]:(0,n.localize)(32,null)}}),define(ne[857],se([1,0,2,12,695,15,34,31,23,459]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RenameInputField=e.CONTEXT_RENAME_INPUT_VISIBLE=void 0,e.CONTEXT_RENAME_INPUT_VISIBLE=new D.RawContextKey("renameInputVisible",!1,(0,y.localize)(0,null));let g=class{constructor(s,i,n,t,a){this._editor=s,this._acceptKeybindings=i,this._themeService=n,this._keybindingService=t,this._disposables=new L.DisposableStore,this.allowEditorOverflow=!0,this._visibleContextKey=e.CONTEXT_RENAME_INPUT_VISIBLE.bindTo(a),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(49)&&this._updateFont()})),this._disposables.add(n.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._input=document.createElement("input"),this._input.className="rename-input",this._input.type="text",this._input.setAttribute("aria-label",(0,y.localize)(1,null)),this._domNode.appendChild(this._input),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(s){var i,n,t,a;if(!this._input||!this._domNode)return;const u=s.getColor(f.widgetShadow),h=s.getColor(f.widgetBorder);this._domNode.style.backgroundColor=String((i=s.getColor(f.editorWidgetBackground))!==null&&i!==void 0?i:""),this._domNode.style.boxShadow=u?` 0 0 8px 2px ${u}`:"",this._domNode.style.border=h?`1px solid ${h}`:"",this._domNode.style.color=String((n=s.getColor(f.inputForeground))!==null&&n!==void 0?n:""),this._input.style.backgroundColor=String((t=s.getColor(f.inputBackground))!==null&&t!==void 0?t:"");const r=s.getColor(f.inputBorder);this._input.style.borderWidth=r?"1px":"0px",this._input.style.borderStyle=r?"solid":"none",this._input.style.borderColor=(a=r?.toString())!==null&&a!==void 0?a:"none"}_updateFont(){if(!this._input||!this._label)return;const s=this._editor.getOption(49);this._input.style.fontFamily=s.fontFamily,this._input.style.fontWeight=s.fontWeight,this._input.style.fontSize=`${s.fontSize}px`,this._label.style.fontSize=`${s.fontSize*.8}px`}getPosition(){return this._visible?{position:this._position,preference:[2,1]}:null}beforeRender(){var s,i;const[n,t]=this._acceptKeybindings;return this._label.innerText=(0,y.localize)(2,null,(s=this._keybindingService.lookupKeybinding(n))===null||s===void 0?void 0:s.getLabel(),(i=this._keybindingService.lookupKeybinding(t))===null||i===void 0?void 0:i.getLabel()),null}afterRender(s){s||this.cancelInput(!0)}acceptInput(s){var i;(i=this._currentAcceptInput)===null||i===void 0||i.call(this,s)}cancelInput(s){var i;(i=this._currentCancelInput)===null||i===void 0||i.call(this,s)}getInput(s,i,n,t,a,u){this._domNode.classList.toggle("preview",a),this._position=new k.Position(s.startLineNumber,s.startColumn),this._input.value=i,this._input.setAttribute("selectionStart",n.toString()),this._input.setAttribute("selectionEnd",t.toString()),this._input.size=Math.max((s.endColumn-s.startColumn)*1.1,20);const h=new L.DisposableStore;return new Promise(r=>{this._currentCancelInput=c=>(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,r(c),!0),this._currentAcceptInput=c=>{if(this._input.value.trim().length===0||this._input.value===i){this.cancelInput(!0);return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,r({newName:this._input.value,wantsPreview:a&&c})},h.add(u.onCancellationRequested(()=>this.cancelInput(!0))),h.add(this._editor.onDidBlurEditorWidget(()=>this.cancelInput(!document.hasFocus()))),this._show()}).finally(()=>{h.dispose(),this._hide()})}_show(){this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._input.focus(),this._input.setSelectionRange(parseInt(this._input.getAttribute("selectionStart")),parseInt(this._input.getAttribute("selectionEnd")))},100)}_hide(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}};e.RenameInputField=g,e.RenameInputField=g=ke([fe(2,_.IThemeService),fe(3,S.IKeybindingService),fe(4,D.IContextKeyService)],g)}),define(ne[858],se([1,0,49,13,19,9,2,20,22,104,16,132,33,12,5,21,187,190,694,98,15,8,70,43,77,37,857,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w){"use strict";var E;Object.defineProperty(e,"__esModule",{value:!0}),e.RenameAction=e.rename=void 0;class I{constructor(N,F,O){this.model=N,this.position=F,this._providerRenameIdx=0,this._providers=O.ordered(N)}hasProvider(){return this._providers.length>0}resolveRenameLocation(N){return we(this,void 0,void 0,function*(){const F=[];for(this._providerRenameIdx=0;this._providerRenameIdx0?F.join(` -`):void 0}:{range:t.Range.fromPositions(this.position),text:"",rejectReason:F.length>0?F.join(` -`):void 0}})}provideRenameEdits(N,F){return we(this,void 0,void 0,function*(){return this._provideRenameEdits(N,this._providerRenameIdx,[],F)})}_provideRenameEdits(N,F,O,W){return we(this,void 0,void 0,function*(){const U=this._providers[F];if(!U)return{edits:[],rejectReason:O.join(` -`)};const j=yield U.provideRenameEdits(this.model,this.position,N,W);if(j){if(j.rejectReason)return this._provideRenameEdits(N,F+1,O.concat(j.rejectReason),W)}else return this._provideRenameEdits(N,F+1,O.concat(r.localize(0,null)),W);return j})}}function M(A,N,F,O){return we(this,void 0,void 0,function*(){const W=new I(N,F,A),U=yield W.resolveRenameLocation(y.CancellationToken.None);return U?.rejectReason?{edits:[],rejectReason:U.rejectReason}:W.provideRenameEdits(O,y.CancellationToken.None)})}e.rename=M;let P=E=class{static get(N){return N.getContribution(E.ID)}constructor(N,F,O,W,U,j,R,K){this.editor=N,this._instaService=F,this._notificationService=O,this._bulkEditService=W,this._progressService=U,this._logService=j,this._configService=R,this._languageFeaturesService=K,this._disposableStore=new S.DisposableStore,this._cts=new y.CancellationTokenSource,this._renameInputField=this._disposableStore.add(this._instaService.createInstance(b.RenameInputField,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}run(){var N,F;return we(this,void 0,void 0,function*(){if(this._cts.dispose(!0),this._cts=new y.CancellationTokenSource,!this.editor.hasModel())return;const O=this.editor.getPosition(),W=new I(this.editor.getModel(),O,this._languageFeaturesService.renameProvider);if(!W.hasProvider())return;const U=new g.EditorStateCancellationTokenSource(this.editor,5,void 0,this._cts.token);let j;try{const B=W.resolveRenameLocation(U.token);this._progressService.showWhile(B,250),j=yield B}catch(B){(N=h.MessageController.get(this.editor))===null||N===void 0||N.showMessage(B||r.localize(1,null),O);return}finally{U.dispose()}if(!j)return;if(j.rejectReason){(F=h.MessageController.get(this.editor))===null||F===void 0||F.showMessage(j.rejectReason,O);return}if(U.token.isCancellationRequested)return;const R=new g.EditorStateCancellationTokenSource(this.editor,5,j.range,this._cts.token),K=this.editor.getSelection();let G=0,Z=j.text.length;!t.Range.isEmpty(K)&&!t.Range.spansMultipleLines(K)&&t.Range.containsRange(j.range,K)&&(G=Math.max(0,K.startColumn-j.range.startColumn),Z=Math.min(j.range.endColumn,K.endColumn)-j.range.startColumn);const J=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),X=yield this._renameInputField.getInput(j.range,j.text,G,Z,J,R.token);if(typeof X=="boolean"){X&&this.editor.focus(),R.dispose();return}this.editor.focus();const H=(0,k.raceCancellation)(W.provideRenameEdits(X.newName,R.token),R.token).then(B=>we(this,void 0,void 0,function*(){if(!(!B||!this.editor.hasModel())){if(B.rejectReason){this._notificationService.info(B.rejectReason);return}this.editor.setSelection(t.Range.fromPositions(this.editor.getSelection().getPosition())),this._bulkEditService.apply(B,{editor:this.editor,showPreview:X.wantsPreview,label:r.localize(2,null,j?.text,X.newName),code:"undoredo.rename",quotableLabel:r.localize(3,null,j?.text,X.newName),respectAutoSaveConfig:!0}).then(V=>{V.ariaSummary&&(0,L.alert)(r.localize(4,null,j.text,X.newName,V.ariaSummary))}).catch(V=>{this._notificationService.error(r.localize(5,null)),this._logService.error(V)})}}),B=>{this._notificationService.error(r.localize(6,null)),this._logService.error(B)}).finally(()=>{R.dispose()});return this._progressService.showWhile(H,250),H})}acceptRenameInput(N){this._renameInputField.acceptInput(N)}cancelRenameInput(){this._renameInputField.cancelInput(!0)}};P.ID="editor.contrib.renameController",P=E=ke([fe(1,d.IInstantiationService),fe(2,p.INotificationService),fe(3,s.IBulkEditService),fe(4,m.IEditorProgressService),fe(5,l.ILogService),fe(6,u.ITextResourceConfigurationService),fe(7,w.ILanguageFeaturesService)],P);class x extends C.EditorAction{constructor(){super({id:"editor.action.rename",label:r.localize(7,null),alias:"Rename Symbol",precondition:o.ContextKeyExpr.and(a.EditorContextKeys.writable,a.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(N,F){const O=N.get(i.ICodeEditorService),[W,U]=Array.isArray(F)&&F||[void 0,void 0];return _.URI.isUri(W)&&n.Position.isIPosition(U)?O.openCodeEditor({resource:W},O.getActiveCodeEditor()).then(j=>{j&&(j.setPosition(U),j.invokeWithinContext(R=>(this.reportTelemetry(R,j),this.run(R,j))))},D.onUnexpectedError):super.runCommand(N,F)}run(N,F){const O=P.get(F);return O?O.run():Promise.resolve()}}e.RenameAction=x,(0,C.registerEditorContribution)(P.ID,P,4),(0,C.registerEditorAction)(x);const T=C.EditorCommand.bindToContribution(P.get);(0,C.registerEditorCommand)(new T({id:"acceptRenameInput",precondition:b.CONTEXT_RENAME_INPUT_VISIBLE,handler:A=>A.acceptRenameInput(!1),kbOpts:{weight:100+99,kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.focus,o.ContextKeyExpr.not("isComposing")),primary:3}})),(0,C.registerEditorCommand)(new T({id:"acceptRenameInputWithPreview",precondition:o.ContextKeyExpr.and(b.CONTEXT_RENAME_INPUT_VISIBLE,o.ContextKeyExpr.has("config.editor.rename.enablePreview")),handler:A=>A.acceptRenameInput(!0),kbOpts:{weight:100+99,kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.focus,o.ContextKeyExpr.not("isComposing")),primary:1024+3}})),(0,C.registerEditorCommand)(new T({id:"cancelRenameInput",precondition:b.CONTEXT_RENAME_INPUT_VISIBLE,handler:A=>A.cancelRenameInput(),kbOpts:{weight:100+99,kbExpr:a.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,C.registerModelAndPositionCommand)("_executeDocumentRenameProvider",function(A,N,F,...O){const[W]=O;(0,f.assertType)(typeof W=="string");const{renameProvider:U}=A.get(w.ILanguageFeaturesService);return M(U,N,F,W)}),(0,C.registerModelAndPositionCommand)("_executePrepareRename",function(A,N,F){return we(this,void 0,void 0,function*(){const{renameProvider:O}=A.get(w.ILanguageFeaturesService),U=yield new I(N,F,O).resolveRenameLocation(y.CancellationToken.None);if(U?.rejectReason)throw new Error(U.rejectReason);return U})}),v.Registry.as(c.Extensions.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:r.localize(8,null),default:!0,type:"boolean"}}})}),define(ne[859],se([1,0,2,9,51,28,13,19,23,252,333,76,58,18,234,149,297]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentSemanticTokensFeature=void 0;let r=class extends L.Disposable{constructor(l,p,m,v,b,w){super(),this._watchers=Object.create(null);const E=P=>{this._watchers[P.uri.toString()]=new c(P,l,m,b,w)},I=(P,x)=>{x.dispose(),delete this._watchers[P.uri.toString()]},M=()=>{for(const P of p.getModels()){const x=this._watchers[P.uri.toString()];(0,u.isSemanticColoringEnabled)(P,m,v)?x||E(P):x&&I(P,x)}};this._register(p.onModelAdded(P=>{(0,u.isSemanticColoringEnabled)(P,m,v)&&E(P)})),this._register(p.onModelRemoved(P=>{const x=this._watchers[P.uri.toString()];x&&I(P,x)})),this._register(v.onDidChangeConfiguration(P=>{P.affectsConfiguration(u.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&M()})),this._register(m.onDidColorThemeChange(M))}dispose(){for(const l of Object.values(this._watchers))l.dispose();super.dispose()}};e.DocumentSemanticTokensFeature=r,e.DocumentSemanticTokensFeature=r=ke([fe(0,t.ISemanticTokensStylingService),fe(1,y.IModelService),fe(2,_.IThemeService),fe(3,D.IConfigurationService),fe(4,s.ILanguageFeatureDebounceService),fe(5,n.ILanguageFeaturesService)],r);let c=h=class extends L.Disposable{constructor(l,p,m,v,b){super(),this._semanticTokensStylingService=p,this._isDisposed=!1,this._model=l,this._provider=b.documentSemanticTokensProvider,this._debounceInformation=v.for(this._provider,"DocumentSemanticTokens",{min:h.REQUEST_MIN_DELAY,max:h.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new S.RunOnceScheduler(()=>this._fetchDocumentSemanticTokensNow(),h.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const w=()=>{(0,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const E of this._provider.all(l))typeof E.onDidChange=="function"&&this._documentProvidersChangeListeners.push(E.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};w(),this._register(this._provider.onDidChange(()=>{w(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(m.onDidColorThemeChange(E=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),(0,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!(0,C.hasDocumentSemanticTokensProvider)(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const l=new f.CancellationTokenSource,p=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,m=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,v=(0,C.getDocumentSemanticTokens)(this._provider,this._model,p,m,l.token);this._currentDocumentRequestCancellationTokenSource=l,this._providersChangedDuringRequest=!1;const b=[],w=this._model.onDidChangeContent(I=>{b.push(I)}),E=new i.StopWatch(!1);v.then(I=>{if(this._debounceInformation.update(this._model,E.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,w.dispose(),!I)this._setDocumentSemanticTokens(null,null,null,b);else{const{provider:M,tokens:P}=I,x=this._semanticTokensStylingService.getStyling(M);this._setDocumentSemanticTokens(M,P||null,x,b)}},I=>{I&&(k.isCancellationError(I)||typeof I.message=="string"&&I.message.indexOf("busy")!==-1)||k.onUnexpectedError(I),this._currentDocumentRequestCancellationTokenSource=null,w.dispose(),(b.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(l,p,m,v,b){b=Math.min(b,m.length-v,l.length-p);for(let w=0;w{(v.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){l&&p&&l.releaseDocumentSemanticTokens(p.resultId);return}if(!l||!m){this._model.tokenization.setSemanticTokens(null,!1);return}if(!p){this._model.tokenization.setSemanticTokens(null,!0),w();return}if((0,C.isSemanticTokensEdits)(p)){if(!b){this._model.tokenization.setSemanticTokens(null,!0);return}if(p.edits.length===0)p={resultId:p.resultId,data:b.data};else{let E=0;for(const T of p.edits)E+=(T.data?T.data.length:0)-T.deleteCount;const I=b.data,M=new Uint32Array(I.length+E);let P=I.length,x=M.length;for(let T=p.edits.length-1;T>=0;T--){const A=p.edits[T];if(A.start>I.length){m.warnInvalidEditStart(b.resultId,p.resultId,T,A.start,I.length),this._model.tokenization.setSemanticTokens(null,!0);return}const N=P-(A.start+A.deleteCount);N>0&&(h._copy(I,P-N,M,x-N,N),x-=N),A.data&&(h._copy(A.data,0,M,x-A.data.length,A.data.length),x-=A.data.length),P=A.start}P>0&&h._copy(I,0,M,0,P),p={resultId:p.resultId,data:M}}}if((0,C.isSemanticTokens)(p)){this._currentDocumentResponse=new o(l,p.resultId,p.data);const E=(0,g.toMultilineTokens2)(p,m,this._model.getLanguageId());if(v.length>0)for(const I of v)for(const M of E)for(const P of I.changes)M.applyEdit(P.range,P.text);this._model.tokenization.setSemanticTokens(E,!0)}else this._model.tokenization.setSemanticTokens(null,!0);w()}};c.REQUEST_MIN_DELAY=300,c.REQUEST_MAX_DELAY=2e3,c=h=ke([fe(1,t.ISemanticTokensStylingService),fe(2,_.IThemeService),fe(3,s.ILanguageFeatureDebounceService),fe(4,n.ILanguageFeaturesService)],c);class o{constructor(l,p,m){this.provider=l,this.resultId=p,this.data=m}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}(0,a.registerEditorFeature)(r)}),define(ne[860],se([1,0,13,2,16,333,297,252,28,23,76,58,18,234]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewportSemanticTokensContribution=void 0;let t=class extends k.Disposable{constructor(u,h,r,c,o,d){super(),this._semanticTokensStylingService=h,this._themeService=r,this._configurationService=c,this._editor=u,this._provider=d.documentRangeSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new L.RunOnceScheduler(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange(()=>{l()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelContent(p=>{this._cancelAll(),l()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),l()})),this._register(this._configurationService.onDidChangeConfiguration(p=>{p.affectsConfiguration(S.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&(this._cancelAll(),l())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),l()})),l()}_cancelAll(){for(const u of this._outstandingRequests)u.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(u){for(let h=0,r=this._outstandingRequests.length;hthis._requestRange(u,r)))}_requestRange(u,h){const r=u.getVersionId(),c=(0,L.createCancelablePromise)(d=>Promise.resolve((0,D.getDocumentRangeSemanticTokens)(this._provider,u,h,d))),o=new s.StopWatch(!1);return c.then(d=>{if(this._debounceInformation.update(u,o.elapsed()),!d||!d.tokens||u.isDisposed()||u.getVersionId()!==r)return;const{provider:l,tokens:p}=d,m=this._semanticTokensStylingService.getStyling(l);u.tokenization.setPartialSemanticTokens(h,(0,f.toMultilineTokens2)(p,m,u.getLanguageId()))}).then(()=>this._removeOutstandingRequest(c),()=>this._removeOutstandingRequest(c)),c}};e.ViewportSemanticTokensContribution=t,t.ID="editor.contrib.viewportSemanticTokens",e.ViewportSemanticTokensContribution=t=ke([fe(1,n.ISemanticTokensStylingService),fe(2,g.IThemeService),fe(3,_.IConfigurationService),fe(4,C.ILanguageFeatureDebounceService),fe(5,i.ILanguageFeaturesService)],t),(0,y.registerEditorContribution)(t.ID,t,1)}),define(ne[861],se([1,0,7,226,25,26,6,72,2,22,29,775,51,41,704,330,62,23,344]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.ItemRenderer=e.getAriaId=void 0;function o(v){return`suggest-aria-id:${v}`}e.getAriaId=o;const d=(0,u.registerIcon)("suggest-more-info",y.Codicon.chevronRight,t.localize(0,null)),l=new(c=class{extract(b,w){if(b.textLabel.match(c._regexStrict))return w[0]=b.textLabel,!0;if(b.completion.detail&&b.completion.detail.match(c._regexStrict))return w[0]=b.completion.detail,!0;if(typeof b.completion.documentation=="string"){const E=c._regexRelaxed.exec(b.completion.documentation);if(E&&(E.index===0||E.index+E[0].length===b.completion.documentation.length))return w[0]=E[0],!0}return!1}},c._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,c._regexStrict=new RegExp(`^${c._regexRelaxed.source}$`,"i"),c);let p=class{constructor(b,w,E,I){this._editor=b,this._modelService=w,this._languageService=E,this._themeService=I,this._onDidToggleDetails=new S.Emitter,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(b){const w=new _.DisposableStore,E=b;E.classList.add("show-file-icons");const I=(0,L.append)(b,(0,L.$)(".icon")),M=(0,L.append)(I,(0,L.$)("span.colorspan")),P=(0,L.append)(b,(0,L.$)(".contents")),x=(0,L.append)(P,(0,L.$)(".main")),T=(0,L.append)(x,(0,L.$)(".icon-label.codicon")),A=(0,L.append)(x,(0,L.$)("span.left")),N=(0,L.append)(x,(0,L.$)("span.right")),F=new k.IconLabel(A,{supportHighlights:!0,supportIcons:!0});w.add(F);const O=(0,L.append)(A,(0,L.$)("span.signature-label")),W=(0,L.append)(A,(0,L.$)("span.qualifier-label")),U=(0,L.append)(N,(0,L.$)("span.details-label")),j=(0,L.append)(N,(0,L.$)("span.readMore"+D.ThemeIcon.asCSSSelector(d)));j.title=t.localize(1,null);const R=()=>{const K=this._editor.getOptions(),G=K.get(49),Z=G.getMassagedFontFamily(),J=G.fontFeatureSettings,X=K.get(117)||G.fontSize,H=K.get(118)||G.lineHeight,B=G.fontWeight,V=G.letterSpacing,Y=`${X}px`,ie=`${H}px`,ae=`${V}px`;E.style.fontSize=Y,E.style.fontWeight=B,E.style.letterSpacing=ae,x.style.fontFamily=Z,x.style.fontFeatureSettings=J,x.style.lineHeight=ie,I.style.height=ie,I.style.width=ie,j.style.height=ie,j.style.width=ie};return R(),w.add(this._editor.onDidChangeConfiguration(K=>{(K.hasChanged(49)||K.hasChanged(117)||K.hasChanged(118))&&R()})),{root:E,left:A,right:N,icon:I,colorspan:M,iconLabel:F,iconContainer:T,parametersLabel:O,qualifierLabel:W,detailsLabel:U,readMore:j,disposables:w}}renderElement(b,w,E){const{completion:I}=b;E.root.id=o(w),E.colorspan.style.backgroundColor="";const M={labelEscapeNewLines:!0,matches:(0,f.createMatches)(b.score)},P=[];if(I.kind===19&&l.extract(b,P))E.icon.className="icon customcolor",E.iconContainer.className="icon hide",E.colorspan.style.backgroundColor=P[0];else if(I.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){E.icon.className="icon hide",E.iconContainer.className="icon hide";const x=(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:"fake",path:b.textLabel}),a.FileKind.FILE),T=(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:"fake",path:I.detail}),a.FileKind.FILE);M.extraClasses=x.length>T.length?x:T}else I.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(E.icon.className="icon hide",E.iconContainer.className="icon hide",M.extraClasses=[(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:"fake",path:b.textLabel}),a.FileKind.FOLDER),(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:"fake",path:I.detail}),a.FileKind.FOLDER)].flat()):(E.icon.className="icon hide",E.iconContainer.className="",E.iconContainer.classList.add("suggest-icon",...D.ThemeIcon.asClassNameArray(C.CompletionItemKinds.toIcon(I.kind))));I.tags&&I.tags.indexOf(1)>=0&&(M.extraClasses=(M.extraClasses||[]).concat(["deprecated"]),M.matches=[]),E.iconLabel.setLabel(b.textLabel,void 0,M),typeof I.label=="string"?(E.parametersLabel.textContent="",E.detailsLabel.textContent=m(I.detail||""),E.root.classList.add("string-label")):(E.parametersLabel.textContent=m(I.label.detail||""),E.detailsLabel.textContent=m(I.label.description||""),E.root.classList.remove("string-label")),this._editor.getOption(116).showInlineDetails?(0,L.show)(E.detailsLabel):(0,L.hide)(E.detailsLabel),(0,r.canExpandCompletionItem)(b)?(E.right.classList.add("can-expand-details"),(0,L.show)(E.readMore),E.readMore.onmousedown=x=>{x.stopPropagation(),x.preventDefault()},E.readMore.onclick=x=>{x.stopPropagation(),x.preventDefault(),this._onDidToggleDetails.fire()}):(E.right.classList.remove("can-expand-details"),(0,L.hide)(E.readMore),E.readMore.onmousedown=null,E.readMore.onclick=null)}disposeTemplate(b){b.disposables.dispose()}};e.ItemRenderer=p,e.ItemRenderer=p=ke([fe(1,i.IModelService),fe(2,n.ILanguageService),fe(3,h.IThemeService)],p);function m(v){return v.replace(/\r\n|\r|\n/g,"")}}),define(ne[862],se([1,0,855,37,136,33,94,6,16,21,71]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoLineAction=e.StandaloneGotoLineQuickAccessProvider=void 0;let s=class extends L.AbstractGotoLineQuickAccessProvider{constructor(t){super(),this.editorService=t,this.onDidActiveTextEditorControlChange=f.Event.None}get activeTextEditorControl(){var t;return(t=this.editorService.getFocusedCodeEditor())!==null&&t!==void 0?t:void 0}};e.StandaloneGotoLineQuickAccessProvider=s,e.StandaloneGotoLineQuickAccessProvider=s=ke([fe(0,D.ICodeEditorService)],s);class i extends _.EditorAction{constructor(){super({id:i.ID,label:S.GoToLineNLS.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})}run(t){t.get(C.IQuickInputService).quickAccess.show(s.PREFIX)}}e.GotoLineAction=i,i.ID="editor.action.gotoLine",(0,_.registerEditorAction)(i),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:s,prefix:s.PREFIX,helpEntries:[{description:S.GoToLineNLS.gotoLineActionLabel,commandId:i.ID}]})}),define(ne[863],se([1,0,856,37,136,33,94,6,16,21,71,188,18,172,249]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoSymbolAction=e.StandaloneGotoSymbolQuickAccessProvider=void 0;let n=class extends L.AbstractGotoSymbolQuickAccessProvider{constructor(u,h,r){super(h,r),this.editorService=u,this.onDidActiveTextEditorControlChange=f.Event.None}get activeTextEditorControl(){var u;return(u=this.editorService.getFocusedCodeEditor())!==null&&u!==void 0?u:void 0}};e.StandaloneGotoSymbolQuickAccessProvider=n,e.StandaloneGotoSymbolQuickAccessProvider=n=ke([fe(0,D.ICodeEditorService),fe(1,i.ILanguageFeaturesService),fe(2,s.IOutlineModelService)],n);class t extends _.EditorAction{constructor(){super({id:t.ID,label:S.QuickOutlineNLS.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:g.EditorContextKeys.hasDocumentSymbolProvider,kbOpts:{kbExpr:g.EditorContextKeys.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(u){u.get(C.IQuickInputService).quickAccess.show(L.AbstractGotoSymbolQuickAccessProvider.PREFIX,{itemActivation:C.ItemActivation.NONE})}}e.GotoSymbolAction=t,t.ID="editor.action.quickOutline",(0,_.registerEditorAction)(t),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:n,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,helpEntries:[{description:S.QuickOutlineNLS.quickOutlineActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,commandId:t.ID},{description:S.QuickOutlineNLS.quickOutlineByCategoryActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY}]})}),define(ne[360],se([1,0,7,54,841,33,15,50,23]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneCodeEditorService=void 0;let g=class extends y.AbstractCodeEditorService{constructor(s,i){super(i),this.onCodeEditorAdd(()=>this._checkContextKey()),this.onCodeEditorRemove(()=>this._checkContextKey()),this._editorIsOpen=s.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this.registerCodeEditorOpenHandler((n,t,a)=>we(this,void 0,void 0,function*(){return t?this.doOpenEditor(t,n):null}))}_checkContextKey(){let s=!1;for(const i of this.listCodeEditors())if(!i.isSimpleWidget){s=!0;break}this._editorIsOpen.set(s)}setActiveCodeEditor(s){this._activeCodeEditor=s}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(s,i){if(!this.findModel(s,i.resource)){if(i.resource){const a=i.resource.scheme;if(a===k.Schemas.http||a===k.Schemas.https)return(0,L.windowOpenNoOpener)(i.resource.toString()),s}return null}const t=i.options?i.options.selection:null;if(t)if(typeof t.endLineNumber=="number"&&typeof t.endColumn=="number")s.setSelection(t),s.revealRangeInCenter(t,1);else{const a={lineNumber:t.startLineNumber,column:t.startColumn};s.setPosition(a),s.revealPositionInCenter(a,1)}return s}findModel(s,i){const n=s.getModel();return n&&n.uri.toString()!==i.toString()?null:n}};e.StandaloneCodeEditorService=g,e.StandaloneCodeEditorService=g=ke([fe(0,S.IContextKeyService),fe(1,_.IThemeService)],g),(0,f.registerSingleton)(D.ICodeEditorService,g,0)}),define(ne[864],se([1,0,80,31]),function(Q,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hc_light=e.hc_black=e.vs_dark=e.vs=void 0,e.vs={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[k.editorBackground]:"#FFFFFE",[k.editorForeground]:"#000000",[k.editorInactiveSelection]:"#E5EBF1",[L.editorIndentGuide1]:"#D3D3D3",[L.editorActiveIndentGuide1]:"#939393",[k.editorSelectionHighlight]:"#ADD6FF4D"}},e.vs_dark={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[k.editorBackground]:"#1E1E1E",[k.editorForeground]:"#D4D4D4",[k.editorInactiveSelection]:"#3A3D41",[L.editorIndentGuide1]:"#404040",[L.editorActiveIndentGuide1]:"#707070",[k.editorSelectionHighlight]:"#ADD6FF26"}},e.hc_black={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[k.editorBackground]:"#000000",[k.editorForeground]:"#FFFFFF",[L.editorIndentGuide1]:"#FFFFFF",[L.editorActiveIndentGuide1]:"#FFFFFF"}},e.hc_light={base:"hc-light",inherit:!1,rules:[{token:"",foreground:"292929",background:"FFFFFF"},{token:"invalid",foreground:"B5200D"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"264F70"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"B5200D"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"264F78"},{token:"attribute.value",foreground:"0451A5"},{token:"string",foreground:"A31515"},{token:"string.sql",foreground:"B5200D"},{token:"keyword",foreground:"0000FF"},{token:"keyword.flow",foreground:"AF00DB"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[k.editorBackground]:"#FFFFFF",[k.editorForeground]:"#292929",[L.editorIndentGuide1]:"#292929",[L.editorActiveIndentGuide1]:"#292929"}}}),define(ne[361],se([1,0,7,52,38,6,29,124,504,864,37,31,23,2,88,835]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneThemeService=e.HC_LIGHT_THEME_NAME=e.HC_BLACK_THEME_NAME=e.VS_DARK_THEME_NAME=e.VS_LIGHT_THEME_NAME=void 0,e.VS_LIGHT_THEME_NAME="vs",e.VS_DARK_THEME_NAME="vs-dark",e.HC_BLACK_THEME_NAME="hc-black",e.HC_LIGHT_THEME_NAME="hc-light";const u=C.Registry.as(s.Extensions.ColorContribution),h=C.Registry.as(i.Extensions.ThemingContribution);class r{constructor(m,v){this.semanticHighlighting=!1,this.themeData=v;const b=v.base;m.length>0?(c(m)?this.id=m:this.id=b+" "+m,this.themeName=m):(this.id=b,this.themeName=b),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const m=new Map;for(const v in this.themeData.colors)m.set(v,y.Color.fromHex(this.themeData.colors[v]));if(this.themeData.inherit){const v=o(this.themeData.base);for(const b in v.colors)m.has(b)||m.set(b,y.Color.fromHex(v.colors[b]))}this.colors=m}return this.colors}getColor(m,v){const b=this.getColors().get(m);if(b)return b;if(v!==!1)return this.getDefault(m)}getDefault(m){let v=this.defaultColors[m];return v||(v=u.resolveDefaultColor(m,this),this.defaultColors[m]=v,v)}defines(m){return this.getColors().has(m)}get type(){switch(this.base){case e.VS_LIGHT_THEME_NAME:return t.ColorScheme.LIGHT;case e.HC_BLACK_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_DARK;case e.HC_LIGHT_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_LIGHT;default:return t.ColorScheme.DARK}}get tokenTheme(){if(!this._tokenTheme){let m=[],v=[];if(this.themeData.inherit){const E=o(this.themeData.base);m=E.rules,E.encodedTokensColors&&(v=E.encodedTokensColors)}const b=this.themeData.colors["editor.foreground"],w=this.themeData.colors["editor.background"];if(b||w){const E={token:""};b&&(E.foreground=b),w&&(E.background=w),m.push(E)}m=m.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(v=this.themeData.encodedTokensColors),this._tokenTheme=_.TokenTheme.createFromRawTokenTheme(m,v)}return this._tokenTheme}getTokenStyleMetadata(m,v,b){const E=this.tokenTheme._match([m].concat(v).join(".")).metadata,I=f.TokenMetadata.getForeground(E),M=f.TokenMetadata.getFontStyle(E);return{foreground:I,italic:!!(M&1),bold:!!(M&2),underline:!!(M&4),strikethrough:!!(M&8)}}}function c(p){return p===e.VS_LIGHT_THEME_NAME||p===e.VS_DARK_THEME_NAME||p===e.HC_BLACK_THEME_NAME||p===e.HC_LIGHT_THEME_NAME}function o(p){switch(p){case e.VS_LIGHT_THEME_NAME:return g.vs;case e.VS_DARK_THEME_NAME:return g.vs_dark;case e.HC_BLACK_THEME_NAME:return g.hc_black;case e.HC_LIGHT_THEME_NAME:return g.hc_light}}function d(p){const m=o(p);return new r(p,m)}class l extends n.Disposable{constructor(){super(),this._onColorThemeChange=this._register(new D.Emitter),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new D.Emitter),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new a.UnthemedProductIconTheme,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(e.VS_LIGHT_THEME_NAME,d(e.VS_LIGHT_THEME_NAME)),this._knownThemes.set(e.VS_DARK_THEME_NAME,d(e.VS_DARK_THEME_NAME)),this._knownThemes.set(e.HC_BLACK_THEME_NAME,d(e.HC_BLACK_THEME_NAME)),this._knownThemes.set(e.HC_LIGHT_THEME_NAME,d(e.HC_LIGHT_THEME_NAME));const m=(0,a.getIconsStyleSheet)(this);this._codiconCSS=m.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS} -${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(e.VS_LIGHT_THEME_NAME),this._onOSSchemeChanged(),m.onDidChange(()=>{this._codiconCSS=m.getCSS(),this._updateCSS()}),(0,k.addMatchMediaChangeListener)("(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(m){return L.isInShadowDOM(m)?this._registerShadowDomContainer(m):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=L.createStyleSheet(void 0,m=>{m.className="monaco-colors",m.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),n.Disposable.None}_registerShadowDomContainer(m){const v=L.createStyleSheet(m,b=>{b.className="monaco-colors",b.textContent=this._allCSS});return this._styleElements.push(v),{dispose:()=>{for(let b=0;b{b.base===m&&b.notifyBaseUpdated()}),this._theme.themeName===m&&this.setTheme(m)}getColorTheme(){return this._theme}setColorMapOverride(m){this._colorMapOverride=m,this._updateThemeOrColorMap()}setTheme(m){let v;this._knownThemes.has(m)?v=this._knownThemes.get(m):v=this._knownThemes.get(e.VS_LIGHT_THEME_NAME),this._updateActualTheme(v)}_updateActualTheme(m){!m||this._theme===m||(this._theme=m,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const m=window.matchMedia("(forced-colors: active)").matches;if(m!==(0,t.isHighContrast)(this._theme.type)){let v;(0,t.isDark)(this._theme.type)?v=m?e.HC_BLACK_THEME_NAME:e.VS_DARK_THEME_NAME:v=m?e.HC_LIGHT_THEME_NAME:e.VS_LIGHT_THEME_NAME,this._updateActualTheme(this._knownThemes.get(v))}}}setAutoDetectHighContrast(m){this._autoDetectHighContrast=m,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const m=[],v={},b={addRule:I=>{v[I]||(m.push(I),v[I]=!0)}};h.getThemingParticipants().forEach(I=>I(this._theme,b,this._environment));const w=[];for(const I of u.getColors()){const M=this._theme.getColor(I.id,!0);M&&w.push(`${(0,s.asCssVariableName)(I.id)}: ${M.toString()};`)}b.addRule(`.monaco-editor, .monaco-diff-editor { ${w.join(` -`)} }`);const E=this._colorMapOverride||this._theme.tokenTheme.getColorMap();b.addRule((0,_.generateTokensCSSForColorMap)(E)),this._themeCSS=m.join(` -`),this._updateCSS(),S.TokenizationRegistry.setColorMap(E),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS} -${this._themeCSS}`,this._styleElements.forEach(m=>m.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}e.StandaloneThemeService=l}),define(ne[865],se([1,0,16,133,94,88,361]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class f extends L.EditorAction{constructor(){super({id:"editor.action.toggleHighContrast",label:y.ToggleHighContrastNLS.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(g,C){const s=g.get(k.IStandaloneThemeService),i=s.getColorTheme();(0,D.isHighContrast)(i.type)?(s.setTheme(this._originalThemeName||((0,D.isDark)(i.type)?S.VS_DARK_THEME_NAME:S.VS_LIGHT_THEME_NAME)),this._originalThemeName=null):(s.setTheme((0,D.isDark)(i.type)?S.HC_BLACK_THEME_NAME:S.HC_LIGHT_THEME_NAME),this._originalThemeName=i.themeName)}}(0,L.registerEditorAction)(f)}),define(ne[160],se([1,0,7,44,131,315,39,216,2,17,717,30,740,15,57,8,34,43,87,23,26,88,20,31,105,84,472]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createActionViewItem=e.DropdownWithDefaultActionViewItem=e.SubmenuEntryActionViewItem=e.MenuEntryActionViewItem=e.createAndFillInActionBarActions=e.createAndFillInContextMenuActions=void 0;function b(A,N,F,O){const W=A.getActions(N),U=L.ModifierKeyEmitter.getInstance(),j=U.keyStatus.altKey||(g.isWindows||g.isLinux)&&U.keyStatus.shiftKey;E(W,F,j,O?R=>R===O:R=>R==="navigation")}e.createAndFillInContextMenuActions=b;function w(A,N,F,O,W,U){const j=A.getActions(N);E(j,F,!1,typeof O=="string"?K=>K===O:O,W,U)}e.createAndFillInActionBarActions=w;function E(A,N,F,O=j=>j==="navigation",W=()=>!1,U=!1){let j,R;Array.isArray(N)?(j=N,R=N):(j=N.primary,R=N.secondary);const K=new Set;for(const[G,Z]of A){let J;O(G)?(J=j,J.length>0&&U&&J.push(new S.Separator)):(J=R,J.length>0&&J.push(new S.Separator));for(let X of Z){F&&(X=X instanceof s.MenuItemAction&&X.alt?X.alt:X);const H=J.push(X);X instanceof S.SubmenuAction&&K.add({group:G,action:X,index:H-1})}}for(const{group:G,action:Z,index:J}of K){const X=O(G)?j:R,H=Z.actions;H.length<=1&&W(Z,G,X.length)&&X.splice(J,1,...H)}}let I=class extends y.ActionViewItem{constructor(N,F,O,W,U,j,R,K){super(void 0,N,{icon:!!(N.class||N.item.icon),label:!N.class&&!N.item.icon,draggable:F?.draggable,keybinding:F?.keybinding,hoverDelegate:F?.hoverDelegate}),this._keybindingService=O,this._notificationService=W,this._contextKeyService=U,this._themeService=j,this._contextMenuService=R,this._accessibilityService=K,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new _.MutableDisposable),this._altKey=L.ModifierKeyEmitter.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}onClick(N){return we(this,void 0,void 0,function*(){N.preventDefault(),N.stopPropagation();try{yield this.actionRunner.run(this._commandAction,this._context)}catch(F){this._notificationService.error(F)}})}render(N){if(super.render(N),N.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let F=!1;const O=()=>{var W;const U=!!(!((W=this._menuItemAction.alt)===null||W===void 0)&&W.enabled)&&(!this._accessibilityService.isMotionReduced()||F)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&F);U!==this._wantsAltCommand&&(this._wantsAltCommand=U,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(O)),this._register((0,L.addDisposableListener)(N,"mouseleave",W=>{F=!1,O()})),this._register((0,L.addDisposableListener)(N,"mouseenter",W=>{F=!0,O()})),O()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var N;const F=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),O=F&&F.getLabel(),W=this._commandAction.tooltip||this._commandAction.label;let U=O?(0,C.localize)(0,null,W,O):W;if(!this._wantsAltCommand&&(!((N=this._menuItemAction.alt)===null||N===void 0)&&N.enabled)){const j=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,R=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),K=R&&R.getLabel(),G=K?(0,C.localize)(1,null,j,K):j;U=(0,C.localize)(2,null,U,f.UILabelProvider.modifierLabels[g.OS].altKey,G)}return U}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(N){this._itemClassDispose.value=void 0;const{element:F,label:O}=this;if(!F||!O)return;const W=this._commandAction.checked&&(0,i.isICommandActionToggleInfo)(N.toggled)&&N.toggled.icon?N.toggled.icon:N.icon;if(W)if(o.ThemeIcon.isThemeIcon(W)){const U=o.ThemeIcon.asClassNameArray(W);O.classList.add(...U),this._itemClassDispose.value=(0,_.toDisposable)(()=>{O.classList.remove(...U)})}else O.style.backgroundImage=(0,d.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(W.dark):(0,L.asCSSUrl)(W.light),O.classList.add("icon"),this._itemClassDispose.value=(0,_.combinedDisposable)((0,_.toDisposable)(()=>{O.style.backgroundImage="",O.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};e.MenuEntryActionViewItem=I,e.MenuEntryActionViewItem=I=ke([fe(2,u.IKeybindingService),fe(3,h.INotificationService),fe(4,n.IContextKeyService),fe(5,c.IThemeService),fe(6,t.IContextMenuService),fe(7,v.IAccessibilityService)],I);let M=class extends D.DropdownMenuActionViewItem{constructor(N,F,O,W,U){var j,R,K;const G=Object.assign(Object.assign({},F),{menuAsChild:(j=F?.menuAsChild)!==null&&j!==void 0?j:!1,classNames:(R=F?.classNames)!==null&&R!==void 0?R:o.ThemeIcon.isThemeIcon(N.item.icon)?o.ThemeIcon.asClassName(N.item.icon):void 0,keybindingProvider:(K=F?.keybindingProvider)!==null&&K!==void 0?K:Z=>O.lookupKeybinding(Z.id)});super(N,{getActions:()=>N.actions},W,G),this._keybindingService=O,this._contextMenuService=W,this._themeService=U}render(N){super.render(N),(0,l.assertType)(this.element),N.classList.add("menu-entry");const F=this._action,{icon:O}=F.item;if(O&&!o.ThemeIcon.isThemeIcon(O)){this.element.classList.add("icon");const W=()=>{this.element&&(this.element.style.backgroundImage=(0,d.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(O.dark):(0,L.asCSSUrl)(O.light))};W(),this._register(this._themeService.onDidColorThemeChange(()=>{W()}))}}};e.SubmenuEntryActionViewItem=M,e.SubmenuEntryActionViewItem=M=ke([fe(2,u.IKeybindingService),fe(3,t.IContextMenuService),fe(4,c.IThemeService)],M);let P=class extends y.BaseActionViewItem{constructor(N,F,O,W,U,j,R,K){var G,Z,J;super(null,N),this._keybindingService=O,this._notificationService=W,this._contextMenuService=U,this._menuService=j,this._instaService=R,this._storageService=K,this._container=null,this._options=F,this._storageKey=`${N.item.submenu.id}_lastActionId`;let X;const H=F?.persistLastActionId?K.get(this._storageKey,1):void 0;H&&(X=N.actions.find(V=>H===V.id)),X||(X=N.actions[0]),this._defaultAction=this._instaService.createInstance(I,X,{keybinding:this._getDefaultActionKeybindingLabel(X)});const B=Object.assign(Object.assign({keybindingProvider:V=>this._keybindingService.lookupKeybinding(V.id)},F),{menuAsChild:(G=F?.menuAsChild)!==null&&G!==void 0?G:!0,classNames:(Z=F?.classNames)!==null&&Z!==void 0?Z:["codicon","codicon-chevron-down"],actionRunner:(J=F?.actionRunner)!==null&&J!==void 0?J:new S.ActionRunner});this._dropdown=new D.DropdownMenuActionViewItem(N,N.actions,this._contextMenuService,B),this._dropdown.actionRunner.onDidRun(V=>{V.action instanceof s.MenuItemAction&&this.update(V.action)})}update(N){var F;!((F=this._options)===null||F===void 0)&&F.persistLastActionId&&this._storageService.store(this._storageKey,N.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(I,N,{keybinding:this._getDefaultActionKeybindingLabel(N)}),this._defaultAction.actionRunner=new class extends S.ActionRunner{runAction(O,W){return we(this,void 0,void 0,function*(){yield O.run(void 0)})}},this._container&&this._defaultAction.render((0,L.prepend)(this._container,(0,L.$)(".action-container")))}_getDefaultActionKeybindingLabel(N){var F;let O;if(!((F=this._options)===null||F===void 0)&&F.renderKeybindingWithDefaultActionLabel){const W=this._keybindingService.lookupKeybinding(N.id);W&&(O=`(${W.getLabel()})`)}return O}setActionContext(N){super.setActionContext(N),this._defaultAction.setActionContext(N),this._dropdown.setActionContext(N)}render(N){this._container=N,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const F=(0,L.$)(".action-container");this._defaultAction.render((0,L.append)(this._container,F)),this._register((0,L.addDisposableListener)(F,L.EventType.KEY_DOWN,W=>{const U=new k.StandardKeyboardEvent(W);U.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),U.stopPropagation())}));const O=(0,L.$)(".dropdown-action-container");this._dropdown.render((0,L.append)(this._container,O)),this._register((0,L.addDisposableListener)(O,L.EventType.KEY_DOWN,W=>{var U;const j=new k.StandardKeyboardEvent(W);j.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(U=this._defaultAction.element)===null||U===void 0||U.focus(),j.stopPropagation())}))}focus(N){N?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(N){N?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};e.DropdownWithDefaultActionViewItem=P,e.DropdownWithDefaultActionViewItem=P=ke([fe(2,u.IKeybindingService),fe(3,h.INotificationService),fe(4,t.IContextMenuService),fe(5,s.IMenuService),fe(6,a.IInstantiationService),fe(7,r.IStorageService)],P);let x=class extends y.SelectActionViewItem{constructor(N,F){super(null,N,N.actions.map(O=>({text:O.id===S.Separator.ID?"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500":O.label,isDisabled:!O.enabled})),0,F,m.defaultSelectBoxStyles,{ariaLabel:N.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,N.actions.findIndex(O=>O.checked)))}render(N){super.render(N),N.style.borderColor=(0,p.asCssVariable)(p.selectBorder)}runAction(N,F){const O=this.action.actions[F];O&&this.actionRunner.run(O)}};x=ke([fe(1,t.IContextViewService)],x);function T(A,N,F){return N instanceof s.MenuItemAction?A.createInstance(I,N,F):N instanceof s.SubmenuItemAction?N.item.isSelection?A.createInstance(x,N):N.item.rememberDefaultAction?A.createInstance(P,N,Object.assign(Object.assign({},F),{persistLastActionId:!0})):A.createInstance(M,N,F):void 0}e.createActionViewItem=T}),define(ne[253],se([1,0,7,131,222,39,14,13,25,2,42,17,26,12,29,214,681,160,817,30,27,15,57,8,34,79,62,451]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b){"use strict";var w;Object.defineProperty(e,"__esModule",{value:!0}),e.CustomizedMenuWorkbenchToolBar=e.InlineSuggestionHintsContentWidget=e.InlineCompletionsHintsWidget=void 0;let E=class extends g.Disposable{constructor(F,O,W){super(),this.editor=F,this.model=O,this.instantiationService=W,this.alwaysShowToolbar=(0,C.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(61).showToolbar==="always"),this.sessionPosition=void 0,this.position=(0,C.derived)(U=>{var j,R,K;const G=(j=this.model.read(U))===null||j===void 0?void 0:j.ghostText.read(U);if(!this.alwaysShowToolbar.read(U)||!G||G.parts.length===0)return this.sessionPosition=void 0,null;const Z=G.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==G.lineNumber&&(this.sessionPosition=void 0);const J=new n.Position(G.lineNumber,Math.min(Z,(K=(R=this.sessionPosition)===null||R===void 0?void 0:R.column)!==null&&K!==void 0?K:Number.MAX_SAFE_INTEGER));return this.sessionPosition=J,J}),this._register((0,C.autorunWithStore)((U,j)=>{const R=this.model.read(U);if(!R||!this.alwaysShowToolbar.read(U))return;const K=j.add(this.instantiationService.createInstance(P,this.editor,!0,this.position,R.selectedInlineCompletionIndex,R.inlineCompletionsCount,R.selectedInlineCompletion.map(G=>{var Z;return(Z=G?.inlineCompletion.source.inlineCompletions.commands)!==null&&Z!==void 0?Z:[]})));F.addContentWidget(K),j.add((0,g.toDisposable)(()=>F.removeContentWidget(K))),j.add((0,C.autorun)(G=>{this.position.read(G)&&R.lastTriggerKind.read(G)!==t.InlineCompletionTriggerKind.Explicit&&R.triggerExplicitly()}))}))}};e.InlineCompletionsHintsWidget=E,e.InlineCompletionsHintsWidget=E=ke([fe(2,p.IInstantiationService)],E);const I=(0,b.registerIcon)("inline-suggestion-hints-next",_.Codicon.chevronRight,(0,u.localize)(0,null)),M=(0,b.registerIcon)("inline-suggestion-hints-previous",_.Codicon.chevronLeft,(0,u.localize)(1,null));let P=w=class extends g.Disposable{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(F,O,W){const U=new D.Action(F,O,W,!0,()=>this._commandService.executeCommand(F)),j=this.keybindingService.lookupKeybinding(F,this._contextKeyService);let R=O;return j&&(R=(0,u.localize)(2,null,O,j.getLabel())),U.tooltip=R,U}constructor(F,O,W,U,j,R,K,G,Z,J,X){super(),this.editor=F,this.withBorder=O,this._position=W,this._currentSuggestionIdx=U,this._suggestionCount=j,this._extraCommands=R,this._commandService=K,this.keybindingService=Z,this._contextKeyService=J,this._menuService=X,this.id=`InlineSuggestionHintsContentWidget${w.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,L.h)("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[(0,L.h)("div@toolBar")]),this.previousAction=this.createCommandAction(a.showPreviousInlineSuggestionActionId,(0,u.localize)(3,null),i.ThemeIcon.asClassName(M)),this.availableSuggestionCountAction=new D.Action("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(a.showNextInlineSuggestionActionId,(0,u.localize)(4,null),i.ThemeIcon.asClassName(I)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(c.MenuId.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new f.RunOnceScheduler(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new f.RunOnceScheduler(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.lastCommands=[],this.toolBar=this._register(G.createInstance(A,this.nodes.toolBar,c.MenuId.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:H=>H.startsWith("primary")},actionViewItemProvider:(H,B)=>{if(H instanceof c.MenuItemAction)return G.createInstance(T,H,void 0);if(H===this.availableSuggestionCountAction){const V=new x(void 0,H,{label:!0,icon:!1});return V.setClass("availableSuggestionCount"),V}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(H=>{w._dropDownVisible=H})),this._register((0,C.autorun)(H=>{this._position.read(H),this.editor.layoutContentWidget(this)})),this._register((0,C.autorun)(H=>{const B=this._suggestionCount.read(H),V=this._currentSuggestionIdx.read(H);B!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${V+1}/${B}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),B!==void 0&&B>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register((0,C.autorun)(H=>{const B=this._extraCommands.read(H);if((0,S.equals)(this.lastCommands,B))return;this.lastCommands=B;const V=B.map(Y=>({class:void 0,id:Y.id,enabled:!0,tooltip:Y.tooltip||"",label:Y.title,run:ie=>this._commandService.executeCommand(Y.id)}));for(const[Y,ie]of this.inlineCompletionsActionsMenus.getActions())for(const ae of ie)ae instanceof c.MenuItemAction&&V.push(ae);V.length>0&&V.unshift(new D.Separator),this.toolBar.setAdditionalSecondaryActions(V)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};e.InlineSuggestionHintsContentWidget=P,P._dropDownVisible=!1,P.id=0,e.InlineSuggestionHintsContentWidget=P=w=ke([fe(6,o.ICommandService),fe(7,p.IInstantiationService),fe(8,m.IKeybindingService),fe(9,d.IContextKeyService),fe(10,c.IMenuService)],P);class x extends k.ActionViewItem{constructor(){super(...arguments),this._className=void 0}setClass(F){this._className=F}render(F){super.render(F),this._className&&F.classList.add(this._className)}}class T extends h.MenuEntryActionViewItem{updateLabel(){const F=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!F)return super.updateLabel();if(this.label){const O=(0,L.h)("div.keybinding").root;new y.KeybindingLabel(O,s.OS,Object.assign({disableTitle:!0},y.unthemedKeybindingLabelOptions)).set(F),this.label.textContent=this._action.label,this.label.appendChild(O),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}}let A=class extends r.WorkbenchToolBar{constructor(F,O,W,U,j,R,K,G){super(F,Object.assign({resetMenu:O},W),U,j,R,K,G),this.menuId=O,this.options2=W,this.menuService=U,this.contextKeyService=j,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var F,O,W,U,j,R,K;const G=[],Z=[];(0,h.createAndFillInActionBarActions)(this.menu,(F=this.options2)===null||F===void 0?void 0:F.menuOptions,{primary:G,secondary:Z},(W=(O=this.options2)===null||O===void 0?void 0:O.toolbarOptions)===null||W===void 0?void 0:W.primaryGroup,(j=(U=this.options2)===null||U===void 0?void 0:U.toolbarOptions)===null||j===void 0?void 0:j.shouldInlineSubmenu,(K=(R=this.options2)===null||R===void 0?void 0:R.toolbarOptions)===null||K===void 0?void 0:K.useSeparatorsInPrimaryActions),Z.push(...this.additionalActions),G.unshift(...this.prependedPrimaryActions),this.setActions(G,Z)}setPrependedPrimaryActions(F){(0,S.equals)(this.prependedPrimaryActions,F,(O,W)=>O===W)||(this.prependedPrimaryActions=F,this.updateToolbar())}setAdditionalSecondaryActions(F){(0,S.equals)(this.additionalActions,F,(O,W)=>O===W)||(this.additionalActions=F,this.updateToolbar())}};e.CustomizedMenuWorkbenchToolBar=A,e.CustomizedMenuWorkbenchToolBar=A=ke([fe(3,c.IMenuService),fe(4,d.IContextKeyService),fe(5,l.IContextMenuService),fe(6,m.IKeybindingService),fe(7,v.ITelemetryService)],A)}),define(ne[866],se([1,0,7,68,2,705,160,30,15,8]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestWidgetStatus=void 0;class C extends S.MenuEntryActionViewItem{updateLabel(){const n=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!n)return super.updateLabel();this.label&&(this.label.textContent=(0,D.localize)(0,null,this._action.label,C.symbolPrintEnter(n)))}static symbolPrintEnter(n){var t;return(t=n.getLabel())===null||t===void 0?void 0:t.replace(/\benter\b/gi,"\u23CE")}}let s=class{constructor(n,t,a,u,h){this._menuId=t,this._menuService=u,this._contextKeyService=h,this._menuDisposables=new y.DisposableStore,this.element=L.append(n,L.$(".suggest-status-bar"));const r=c=>c instanceof f.MenuItemAction?a.createInstance(C,c,void 0):void 0;this._leftActions=new k.ActionBar(this.element,{actionViewItemProvider:r}),this._rightActions=new k.ActionBar(this.element,{actionViewItemProvider:r}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this.element.remove()}show(){const n=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const a=[],u=[];for(const[h,r]of n.getActions())h==="left"?a.push(...r):u.push(...r);this._leftActions.clear(),this._leftActions.push(a),this._rightActions.clear(),this._rightActions.push(u)};this._menuDisposables.add(n.onDidChange(()=>t())),this._menuDisposables.add(n)}hide(){this._menuDisposables.clear()}};e.SuggestWidgetStatus=s,e.SuggestWidgetStatus=s=ke([fe(2,g.IInstantiationService),fe(3,f.IMenuService),fe(4,_.IContextKeyService)],s)}),define(ne[867],se([1,0,7,39,6,2,160,30,15,34,43,79,829,57]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuMenuDelegate=e.ContextMenuService=void 0;let t=class extends D.Disposable{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new i.ContextMenuHandler(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(h,r,c,o,d,l){super(),this.telemetryService=h,this.notificationService=r,this.contextViewService=c,this.keybindingService=o,this.menuService=d,this.contextKeyService=l,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new y.Emitter),this._onDidHideContextMenu=this._store.add(new y.Emitter)}configure(h){this.contextMenuHandler.configure(h)}showContextMenu(h){h=a.transform(h,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu(Object.assign(Object.assign({},h),{onHide:r=>{var c;(c=h.onHide)===null||c===void 0||c.call(h,r),this._onDidHideContextMenu.fire()}})),L.ModifierKeyEmitter.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};e.ContextMenuService=t,e.ContextMenuService=t=ke([fe(0,s.ITelemetryService),fe(1,C.INotificationService),fe(2,n.IContextViewService),fe(3,g.IKeybindingService),fe(4,f.IMenuService),fe(5,_.IContextKeyService)],t);var a;(function(u){function h(c){return c&&c.menuId instanceof f.MenuId}function r(c,o,d){if(!h(c))return c;const{menuId:l,menuActionOptions:p,contextKeyService:m}=c;return Object.assign(Object.assign({},c),{getActions:()=>{const v=[];if(l){const b=o.createMenu(l,m??d);(0,S.createAndFillInContextMenuActions)(b,p,v),b.dispose()}return c.getActions?k.Separator.join(c.getActions(),v):v}})}u.transform=r})(a||(e.ContextMenuMenuDelegate=a={}))}),define(ne[868],se([1,0,19,6,15,8,134,191,56,788,105,31,23,840]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputService=void 0;let t=class extends i.Themable{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(g.QuickAccessController))),this._quickAccess}constructor(u,h,r,c){super(r),this.instantiationService=u,this.contextKeyService=h,this.layoutService=c,this._onShow=this._register(new k.Emitter),this._onHide=this._register(new k.Emitter),this.contexts=new Map}createController(u=this.layoutService,h){const r={idPrefix:"quickInput_",container:u.container,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:o=>this.setContextKey(o),linkOpenerDelegate:o=>{this.instantiationService.invokeFunction(d=>{d.get(_.IOpenerService).open(o,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>u.focus(),createList:(o,d,l,p,m)=>this.instantiationService.createInstance(f.WorkbenchList,o,d,l,p,m),styles:this.computeStyles()},c=this._register(new n.QuickInputController(Object.assign(Object.assign({},r),h),this.themeService));return c.layout(u.dimension,u.offset.quickPickTop),this._register(u.onDidLayout(o=>c.layout(o,u.offset.quickPickTop))),this._register(c.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(c.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),c}setContextKey(u){let h;u&&(h=this.contexts.get(u),h||(h=new y.RawContextKey(u,!1).bindTo(this.contextKeyService),this.contexts.set(u,h))),!(h&&h.get())&&(this.resetContextKeys(),h?.set(!0))}resetContextKeys(){this.contexts.forEach(u=>{u.get()&&u.reset()})}pick(u,h={},r=L.CancellationToken.None){return this.controller.pick(u,h,r)}createQuickPick(){return this.controller.createQuickPick()}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:(0,s.asCssVariable)(s.quickInputBackground),quickInputForeground:(0,s.asCssVariable)(s.quickInputForeground),quickInputTitleBackground:(0,s.asCssVariable)(s.quickInputTitleBackground),widgetBorder:(0,s.asCssVariable)(s.widgetBorder),widgetShadow:(0,s.asCssVariable)(s.widgetShadow)},inputBox:C.defaultInputBoxStyles,toggle:C.defaultToggleStyles,countBadge:C.defaultCountBadgeStyles,button:C.defaultButtonStyles,progressBar:C.defaultProgressBarStyles,keybindingLabel:C.defaultKeybindingLabelStyles,list:(0,C.getListStyles)({listBackground:s.quickInputBackground,listFocusBackground:s.quickInputListFocusBackground,listFocusForeground:s.quickInputListFocusForeground,listInactiveFocusForeground:s.quickInputListFocusForeground,listInactiveSelectionIconForeground:s.quickInputListFocusIconForeground,listInactiveFocusBackground:s.quickInputListFocusBackground,listFocusOutline:s.activeContrastBorder,listInactiveFocusOutline:s.activeContrastBorder}),pickerGroup:{pickerGroupBorder:(0,s.asCssVariable)(s.pickerGroupBorder),pickerGroupForeground:(0,s.asCssVariable)(s.pickerGroupForeground)}}}};e.QuickInputService=t,e.QuickInputService=t=ke([fe(0,D.IInstantiationService),fe(1,y.IContextKeyService),fe(2,i.IThemeService),fe(3,S.ILayoutService)],t)}),define(ne[869],se([1,0,16,23,19,8,15,338,33,868,99,470]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputEditorWidget=e.QuickInputEditorContribution=e.StandaloneQuickInputService=void 0;let s=class extends g.QuickInputService{constructor(u,h,r,c,o){super(h,r,c,new f.EditorScopedLayoutService(u.getContainerDomNode(),o)),this.host=void 0;const d=n.get(u);if(d){const l=d.widget;this.host={_serviceBrand:void 0,get hasContainer(){return!0},get container(){return l.getDomNode()},get dimension(){return u.getLayoutInfo()},get onDidLayout(){return u.onDidLayoutChange},focus:()=>u.focus(),offset:{top:0,quickPickTop:0}}}else this.host=void 0}createController(){return super.createController(this.host)}};s=ke([fe(1,D.IInstantiationService),fe(2,S.IContextKeyService),fe(3,k.IThemeService),fe(4,_.ICodeEditorService)],s);let i=class{get activeService(){const u=this.codeEditorService.getFocusedCodeEditor();if(!u)throw new Error("Quick input service needs a focused editor to work.");let h=this.mapEditorToService.get(u);if(!h){const r=h=this.instantiationService.createInstance(s,u);this.mapEditorToService.set(u,h),(0,C.once)(u.onDidDispose)(()=>{r.dispose(),this.mapEditorToService.delete(u)})}return h}get quickAccess(){return this.activeService.quickAccess}constructor(u,h){this.instantiationService=u,this.codeEditorService=h,this.mapEditorToService=new Map}pick(u,h={},r=y.CancellationToken.None){return this.activeService.pick(u,h,r)}createQuickPick(){return this.activeService.createQuickPick()}createInputBox(){return this.activeService.createInputBox()}};e.StandaloneQuickInputService=i,e.StandaloneQuickInputService=i=ke([fe(0,D.IInstantiationService),fe(1,_.ICodeEditorService)],i);class n{static get(u){return u.getContribution(n.ID)}constructor(u){this.editor=u,this.widget=new t(this.editor)}dispose(){this.widget.dispose()}}e.QuickInputEditorContribution=n,n.ID="editor.controller.quickInput";class t{constructor(u){this.codeEditor=u,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return t.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}e.QuickInputEditorWidget=t,t.ID="editor.contrib.quickInputWidget",(0,L.registerEditorContribution)(n.ID,n,4)}),define(ne[192],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UndoRedoSource=e.UndoRedoGroup=e.ResourceEditStackSnapshot=e.IUndoRedoService=void 0,e.IUndoRedoService=(0,L.createDecorator)("undoRedoService");class k{constructor(f,_){this.resource=f,this.elements=_}}e.ResourceEditStackSnapshot=k;class y{constructor(){this.id=y._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoGroup=y,y._ID=0,y.None=new y;class D{constructor(){this.id=D._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoSource=D,D._ID=0,D.None=new D}),define(ne[40],se([1,0,14,38,9,6,2,11,22,122,202,66,12,5,24,175,41,32,48,596,852,329,287,509,510,320,597,181,626,111,192]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){"use strict";var P;Object.defineProperty(e,"__esModule",{value:!0}),e.AttachedViews=e.ModelDecorationOptions=e.ModelDecorationInjectedTextOptions=e.ModelDecorationMinimapOptions=e.ModelDecorationGlyphMarginOptions=e.ModelDecorationOverviewRulerOptions=e.TextModel=e.createTextBuffer=e.createTextBufferFactoryFromSnapshot=e.createTextBufferFactory=void 0;function x(q){const z=new b.PieceTreeTextBufferBuilder;return z.acceptChunk(q),z.finish()}e.createTextBufferFactory=x;function T(q){const z=new b.PieceTreeTextBufferBuilder;let ee;for(;typeof(ee=q.read())=="string";)z.acceptChunk(ee);return z.finish()}e.createTextBufferFactoryFromSnapshot=T;function A(q,z){let ee;return typeof q=="string"?ee=x(q):r.isITextSnapshot(q)?ee=T(q):ee=q,ee.create(z)}e.createTextBuffer=A;let N=0;const F=999,O=1e4;class W{constructor(z){this._source=z,this._eos=!1}read(){if(this._eos)return null;const z=[];let ee=0,$=0;do{const re=this._source.read();if(re===null)return this._eos=!0,ee===0?null:z.join("");if(re.length>0&&(z[ee++]=re,$+=re.length),$>=64*1024)return z.join("")}while(!0)}}const U=()=>{throw new Error("Invalid change accessor")};let j=P=class extends S.Disposable{static resolveOptions(z,ee){if(ee.detectIndentation){const $=(0,p.guessIndentation)(z,ee.tabSize,ee.insertSpaces);return new r.TextModelResolvedOptions({tabSize:$.tabSize,indentSize:"tabSize",insertSpaces:$.insertSpaces,trimAutoWhitespace:ee.trimAutoWhitespace,defaultEOL:ee.defaultEOL,bracketPairColorizationOptions:ee.bracketPairColorizationOptions})}return new r.TextModelResolvedOptions(ee)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(z){return this._eventEmitter.slowEvent(ee=>z(ee.contentChangedEvent))}onDidChangeContentOrInjectedText(z){return(0,S.combinedDisposable)(this._eventEmitter.fastEvent(ee=>z(ee)),this._onDidChangeInjectedText.event(ee=>z(ee)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(z,ee,$,re=null,oe,ge,ve){super(),this._undoRedoService=oe,this._languageService=ge,this._languageConfigurationService=ve,this._onWillDispose=this._register(new D.Emitter),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new de(Me=>this.handleBeforeFireDecorationsChangedEvent(Me))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new D.Emitter),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new D.Emitter),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new D.Emitter),this._eventEmitter=this._register(new he),this._languageSelectionListener=this._register(new S.MutableDisposable),this._deltaDecorationCallCnt=0,this._attachedViews=new ue,N++,this.id="$model"+N,this.isForSimpleWidget=$.isForSimpleWidget,typeof re>"u"||re===null?this._associatedResource=_.URI.parse("inmemory://model/"+N):this._associatedResource=re,this._attachedEditorCount=0;const{textBuffer:Se,disposable:Le}=A(z,$.defaultEOL);this._buffer=Se,this._bufferDisposable=Le,this._options=P.resolveOptions(this._buffer,$);const De=typeof ee=="string"?ee:ee.languageId;typeof ee!="string"&&(this._languageSelectionListener.value=ee.onDidChange(()=>this._setLanguage(ee.languageId))),this._bracketPairs=this._register(new c.BracketPairsTextModelPart(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new l.GuidesTextModelPart(this,this._languageConfigurationService)),this._decorationProvider=this._register(new o.ColorizedBracketPairsDecorationProvider(this)),this._tokenizationTextModelPart=new E.TokenizationTextModelPart(this._languageService,this._languageConfigurationService,this,this._bracketPairs,De,this._attachedViews);const ye=this._buffer.getLineCount(),Ee=this._buffer.getValueLengthInRange(new n.Range(1,1,ye,this._buffer.getLineLength(ye)+1),0);$.largeFileOptimizations?this._isTooLargeForTokenization=Ee>P.LARGE_FILE_SIZE_THRESHOLD||ye>P.LARGE_FILE_LINE_COUNT_THRESHOLD:this._isTooLargeForTokenization=!1,this._isTooLargeForSyncing=Ee>P._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=f.singleLetterHash(N),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Z,this._commandManager=new d.EditStack(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange(()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()})),this._languageService.requestRichLanguageFeatures(De)}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const z=new v.PieceTreeTextBuffer([],"",` -`,!1,!1,!0,!0);z.dispose(),this._buffer=z,this._bufferDisposable=S.Disposable.None}_assertNotDisposed(){if(this._isDisposed)throw new Error("Model is disposed!")}_emitContentChangedEvent(z,ee){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(ee),this._bracketPairs.handleDidChangeContent(ee),this._eventEmitter.fire(new I.InternalModelContentChangeEvent(z,ee)))}setValue(z){if(this._assertNotDisposed(),z==null)throw(0,y.illegalArgument)();const{textBuffer:ee,disposable:$}=A(z,this._options.defaultEOL);this._setValueFromTextBuffer(ee,$)}_createContentChanged2(z,ee,$,re,oe,ge,ve,Se){return{changes:[{range:z,rangeOffset:ee,rangeLength:$,text:re}],eol:this._buffer.getEOL(),isEolChange:Se,versionId:this.getVersionId(),isUndoing:oe,isRedoing:ge,isFlush:ve}}_setValueFromTextBuffer(z,ee){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueLengthInRange($),oe=this.getLineCount(),ge=this.getLineMaxColumn(oe);this._buffer=z,this._bufferDisposable.dispose(),this._bufferDisposable=ee,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Z,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawFlush],this._versionId,!1,!1),this._createContentChanged2(new n.Range(1,1,oe,ge),0,re,this.getValue(),!1,!1,!0,!1))}setEOL(z){this._assertNotDisposed();const ee=z===1?`\r -`:` -`;if(this._buffer.getEOL()===ee)return;const $=this.getFullModelRange(),re=this.getValueLengthInRange($),oe=this.getLineCount(),ge=this.getLineMaxColumn(oe);this._onBeforeEOLChange(),this._buffer.setEOL(ee),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawEOLChanged],this._versionId,!1,!1),this._createContentChanged2(new n.Range(1,1,oe,ge),0,re,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const z=this.getVersionId(),ee=this._decorationsTree.collectNodesPostOrder();for(let $=0,re=ee.length;$0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let z=0,ee=0;const $=this._buffer.getLineCount();for(let re=1;re<=$;re++){const oe=this._buffer.getLineLength(re);oe>=O?ee+=oe:z+=oe}return ee>z}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(z){this._assertNotDisposed();const ee=typeof z.tabSize<"u"?z.tabSize:this._options.tabSize,$=typeof z.indentSize<"u"?z.indentSize:this._options.originalIndentSize,re=typeof z.insertSpaces<"u"?z.insertSpaces:this._options.insertSpaces,oe=typeof z.trimAutoWhitespace<"u"?z.trimAutoWhitespace:this._options.trimAutoWhitespace,ge=typeof z.bracketColorizationOptions<"u"?z.bracketColorizationOptions:this._options.bracketPairColorizationOptions,ve=new r.TextModelResolvedOptions({tabSize:ee,indentSize:$,insertSpaces:re,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:oe,bracketPairColorizationOptions:ge});if(this._options.equals(ve))return;const Se=this._options.createChangeEvent(ve);this._options=ve,this._bracketPairs.handleDidChangeOptions(Se),this._decorationProvider.handleDidChangeOptions(Se),this._onDidChangeOptions.fire(Se)}detectIndentation(z,ee){this._assertNotDisposed();const $=(0,p.guessIndentation)(this._buffer,ee,z);this.updateOptions({insertSpaces:$.insertSpaces,tabSize:$.tabSize,indentSize:$.tabSize})}normalizeIndentation(z){return this._assertNotDisposed(),(0,C.normalizeIndentation)(z,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(z=null){const ee=this.findMatches(f.UNUSUAL_LINE_TERMINATORS.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(z,ee.map($=>({range:$.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(z){this._assertNotDisposed();const ee=this._validatePosition(z.lineNumber,z.column,0);return this._buffer.getOffsetAt(ee.lineNumber,ee.column)}getPositionAt(z){this._assertNotDisposed();const ee=Math.min(this._buffer.getLength(),Math.max(0,z));return this._buffer.getPositionAt(ee)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(z){this._versionId=z}_overwriteAlternativeVersionId(z){this._alternativeVersionId=z}_overwriteInitialUndoRedoSnapshot(z){this._initialUndoRedoSnapshot=z}getValue(z,ee=!1){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueInRange($,z);return ee?this._buffer.getBOM()+re:re}createSnapshot(z=!1){return new W(this._buffer.createSnapshot(z))}getValueLength(z,ee=!1){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueLengthInRange($,z);return ee?this._buffer.getBOM().length+re:re}getValueInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(z),ee)}getValueLengthInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(z),ee)}getCharacterCountInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(z),ee)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineContent(z)}getLineLength(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLength(z)}getLinesContent(){return this._assertNotDisposed(),this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===` -`?0:1}getLineMinColumn(z){return this._assertNotDisposed(),1}getLineMaxColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLength(z)+1}getLineFirstNonWhitespaceColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(z)}getLineLastNonWhitespaceColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(z)}_validateRangeRelaxedNoAllocations(z){const ee=this._buffer.getLineCount(),$=z.startLineNumber,re=z.startColumn;let oe=Math.floor(typeof $=="number"&&!isNaN($)?$:1),ge=Math.floor(typeof re=="number"&&!isNaN(re)?re:1);if(oe<1)oe=1,ge=1;else if(oe>ee)oe=ee,ge=this.getLineMaxColumn(oe);else if(ge<=1)ge=1;else{const ye=this.getLineMaxColumn(oe);ge>=ye&&(ge=ye)}const ve=z.endLineNumber,Se=z.endColumn;let Le=Math.floor(typeof ve=="number"&&!isNaN(ve)?ve:1),De=Math.floor(typeof Se=="number"&&!isNaN(Se)?Se:1);if(Le<1)Le=1,De=1;else if(Le>ee)Le=ee,De=this.getLineMaxColumn(Le);else if(De<=1)De=1;else{const ye=this.getLineMaxColumn(Le);De>=ye&&(De=ye)}return $===oe&&re===ge&&ve===Le&&Se===De&&z instanceof n.Range&&!(z instanceof t.Selection)?z:new n.Range(oe,ge,Le,De)}_isValidPosition(z,ee,$){if(typeof z!="number"||typeof ee!="number"||isNaN(z)||isNaN(ee)||z<1||ee<1||(z|0)!==z||(ee|0)!==ee)return!1;const re=this._buffer.getLineCount();if(z>re)return!1;if(ee===1)return!0;const oe=this.getLineMaxColumn(z);if(ee>oe)return!1;if($===1){const ge=this._buffer.getLineCharCode(z,ee-2);if(f.isHighSurrogate(ge))return!1}return!0}_validatePosition(z,ee,$){const re=Math.floor(typeof z=="number"&&!isNaN(z)?z:1),oe=Math.floor(typeof ee=="number"&&!isNaN(ee)?ee:1),ge=this._buffer.getLineCount();if(re<1)return new i.Position(1,1);if(re>ge)return new i.Position(ge,this.getLineMaxColumn(ge));if(oe<=1)return new i.Position(re,1);const ve=this.getLineMaxColumn(re);if(oe>=ve)return new i.Position(re,ve);if($===1){const Se=this._buffer.getLineCharCode(re,oe-2);if(f.isHighSurrogate(Se))return new i.Position(re,oe-1)}return new i.Position(re,oe)}validatePosition(z){return this._assertNotDisposed(),z instanceof i.Position&&this._isValidPosition(z.lineNumber,z.column,1)?z:this._validatePosition(z.lineNumber,z.column,1)}_isValidRange(z,ee){const $=z.startLineNumber,re=z.startColumn,oe=z.endLineNumber,ge=z.endColumn;if(!this._isValidPosition($,re,0)||!this._isValidPosition(oe,ge,0))return!1;if(ee===1){const ve=re>1?this._buffer.getLineCharCode($,re-2):0,Se=ge>1&&ge<=this._buffer.getLineLength(oe)?this._buffer.getLineCharCode(oe,ge-2):0,Le=f.isHighSurrogate(ve),De=f.isHighSurrogate(Se);return!Le&&!De}return!0}validateRange(z){if(this._assertNotDisposed(),z instanceof n.Range&&!(z instanceof t.Selection)&&this._isValidRange(z,1))return z;const $=this._validatePosition(z.startLineNumber,z.startColumn,0),re=this._validatePosition(z.endLineNumber,z.endColumn,0),oe=$.lineNumber,ge=$.column,ve=re.lineNumber,Se=re.column;{const Le=ge>1?this._buffer.getLineCharCode(oe,ge-2):0,De=Se>1&&Se<=this._buffer.getLineLength(ve)?this._buffer.getLineCharCode(ve,Se-2):0,ye=f.isHighSurrogate(Le),Ee=f.isHighSurrogate(De);return!ye&&!Ee?new n.Range(oe,ge,ve,Se):oe===ve&&ge===Se?new n.Range(oe,ge-1,ve,Se-1):ye&&Ee?new n.Range(oe,ge-1,ve,Se+1):ye?new n.Range(oe,ge-1,ve,Se):new n.Range(oe,ge,ve,Se+1)}return new n.Range(oe,ge,ve,Se)}modifyPosition(z,ee){this._assertNotDisposed();const $=this.getOffsetAt(z)+ee;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,$)))}getFullModelRange(){this._assertNotDisposed();const z=this.getLineCount();return new n.Range(1,1,z,this.getLineMaxColumn(z))}findMatchesLineByLine(z,ee,$,re){return this._buffer.findMatchesLineByLine(z,ee,$,re)}findMatches(z,ee,$,re,oe,ge,ve=F){this._assertNotDisposed();let Se=null;ee!==null&&(Array.isArray(ee)||(ee=[ee]),ee.every(ye=>n.Range.isIRange(ye))&&(Se=ee.map(ye=>this.validateRange(ye)))),Se===null&&(Se=[this.getFullModelRange()]),Se=Se.sort((ye,Ee)=>ye.startLineNumber-Ee.startLineNumber||ye.startColumn-Ee.startColumn);const Le=[];Le.push(Se.reduce((ye,Ee)=>n.Range.areIntersecting(ye,Ee)?ye.plusRange(Ee):(Le.push(ye),Ee)));let De;if(!$&&z.indexOf(` -`)<0){const Ee=new w.SearchParams(z,$,re,oe).parseSearchRequest();if(!Ee)return[];De=Me=>this.findMatchesLineByLine(Me,Ee,ge,ve)}else De=ye=>w.TextModelSearch.findMatches(this,new w.SearchParams(z,$,re,oe),ye,ge,ve);return Le.map(De).reduce((ye,Ee)=>ye.concat(Ee),[])}findNextMatch(z,ee,$,re,oe,ge){this._assertNotDisposed();const ve=this.validatePosition(ee);if(!$&&z.indexOf(` -`)<0){const Le=new w.SearchParams(z,$,re,oe).parseSearchRequest();if(!Le)return null;const De=this.getLineCount();let ye=new n.Range(ve.lineNumber,ve.column,De,this.getLineMaxColumn(De)),Ee=this.findMatchesLineByLine(ye,Le,ge,1);return w.TextModelSearch.findNextMatch(this,new w.SearchParams(z,$,re,oe),ve,ge),Ee.length>0||(ye=new n.Range(1,1,ve.lineNumber,this.getLineMaxColumn(ve.lineNumber)),Ee=this.findMatchesLineByLine(ye,Le,ge,1),Ee.length>0)?Ee[0]:null}return w.TextModelSearch.findNextMatch(this,new w.SearchParams(z,$,re,oe),ve,ge)}findPreviousMatch(z,ee,$,re,oe,ge){this._assertNotDisposed();const ve=this.validatePosition(ee);return w.TextModelSearch.findPreviousMatch(this,new w.SearchParams(z,$,re,oe),ve,ge)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(z){if((this.getEOL()===` -`?0:1)!==z)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(z)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(z){return z instanceof r.ValidAnnotatedEditOperation?z:new r.ValidAnnotatedEditOperation(z.identifier||null,this.validateRange(z.range),z.text,z.forceMoveMarkers||!1,z.isAutoWhitespaceEdit||!1,z._isTracked||!1)}_validateEditOperations(z){const ee=[];for(let $=0,re=z.length;$({range:this.validateRange(ve.range),text:ve.text}));let ge=!0;if(z)for(let ve=0,Se=z.length;veLe.endLineNumber,Fe=Le.startLineNumber>Me.endLineNumber;if(!Pe&&!Fe){De=!0;break}}if(!De){ge=!1;break}}if(ge)for(let ve=0,Se=this._trimAutoWhitespaceLines.length;vePe.endLineNumber)&&!(Le===Pe.startLineNumber&&Pe.startColumn===De&&Pe.isEmpty()&&Fe&&Fe.length>0&&Fe.charAt(0)===` -`)&&!(Le===Pe.startLineNumber&&Pe.startColumn===1&&Pe.isEmpty()&&Fe&&Fe.length>0&&Fe.charAt(Fe.length-1)===` -`)){ye=!1;break}}if(ye){const Ee=new n.Range(Le,1,Le,De);ee.push(new r.ValidAnnotatedEditOperation(null,Ee,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(z,ee,$,re)}_applyUndo(z,ee,$,re){const oe=z.map(ge=>{const ve=this.getPositionAt(ge.newPosition),Se=this.getPositionAt(ge.newEnd);return{range:new n.Range(ve.lineNumber,ve.column,Se.lineNumber,Se.column),text:ge.oldText}});this._applyUndoRedoEdits(oe,ee,!0,!1,$,re)}_applyRedo(z,ee,$,re){const oe=z.map(ge=>{const ve=this.getPositionAt(ge.oldPosition),Se=this.getPositionAt(ge.oldEnd);return{range:new n.Range(ve.lineNumber,ve.column,Se.lineNumber,Se.column),text:ge.newText}});this._applyUndoRedoEdits(oe,ee,!1,!0,$,re)}_applyUndoRedoEdits(z,ee,$,re,oe,ge){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=$,this._isRedoing=re,this.applyEdits(z,!1),this.setEOL(ee),this._overwriteAlternativeVersionId(oe)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(ge),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(z,ee=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const $=this._validateEditOperations(z);return this._doApplyEdits($,ee)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(z,ee){const $=this._buffer.getLineCount(),re=this._buffer.applyEdits(z,this._options.trimAutoWhitespace,ee),oe=this._buffer.getLineCount(),ge=re.changes;if(this._trimAutoWhitespaceLines=re.trimAutoWhitespaceLineNumbers,ge.length!==0){for(let Le=0,De=ge.length;Le=0;Ve--){const ze=Me+Ve,We=pe+Ve;Re.takeFromEndWhile(Oe=>Oe.lineNumber>We);const qe=Re.takeFromEndWhile(Oe=>Oe.lineNumber===We);ve.push(new I.ModelRawLineChanged(ze,this.getLineContent(We),qe))}if(ment.lineNumbernt.lineNumber===st)}ve.push(new I.ModelRawLinesInserted(ze+1,Me+_e,Ge,Oe))}Se+=le}this._emitContentChangedEvent(new I.ModelRawContentChangedEvent(ve,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:ge,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return re.reverseEdits===null?void 0:re.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(z){if(z===null||z.size===0)return;const $=Array.from(z).map(re=>new I.ModelRawLineChanged(re,this.getLineContent(re),this._getInjectedTextInLine(re)));this._onDidChangeInjectedText.fire(new I.ModelInjectedTextChangedEvent($))}changeDecorations(z,ee=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(ee,z)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(z,ee){const $={addDecoration:(oe,ge)=>this._deltaDecorationsImpl(z,[],[{range:oe,options:ge}])[0],changeDecoration:(oe,ge)=>{this._changeDecorationImpl(oe,ge)},changeDecorationOptions:(oe,ge)=>{this._changeDecorationOptionsImpl(oe,ce(ge))},removeDecoration:oe=>{this._deltaDecorationsImpl(z,[oe],[])},deltaDecorations:(oe,ge)=>oe.length===0&&ge.length===0?[]:this._deltaDecorationsImpl(z,oe,ge)};let re=null;try{re=ee($)}catch(oe){(0,y.onUnexpectedError)(oe)}return $.addDecoration=U,$.changeDecoration=U,$.changeDecorationOptions=U,$.removeDecoration=U,$.deltaDecorations=U,re}deltaDecorations(z,ee,$=0){if(this._assertNotDisposed(),z||(z=[]),z.length===0&&ee.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),(0,y.onUnexpectedError)(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl($,z,ee)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(z){return this.getDecorationRange(z)}_setTrackedRange(z,ee,$){const re=z?this._decorations[z]:null;if(!re)return ee?this._deltaDecorationsImpl(0,[],[{range:ee,options:ae[$]}],!0)[0]:null;if(!ee)return this._decorationsTree.delete(re),delete this._decorations[re.id],null;const oe=this._validateRangeRelaxedNoAllocations(ee),ge=this._buffer.getOffsetAt(oe.startLineNumber,oe.startColumn),ve=this._buffer.getOffsetAt(oe.endLineNumber,oe.endColumn);return this._decorationsTree.delete(re),re.reset(this.getVersionId(),ge,ve,oe),re.setOptions(ae[$]),this._decorationsTree.insert(re),re.id}removeAllDecorationsWithOwnerId(z){if(this._isDisposed)return;const ee=this._decorationsTree.collectNodesFromOwner(z);for(let $=0,re=ee.length;$this.getLineCount()?[]:this.getLinesDecorations(z,z,ee,$)}getLinesDecorations(z,ee,$=0,re=!1,oe=!1){const ge=this.getLineCount(),ve=Math.min(ge,Math.max(1,z)),Se=Math.min(ge,Math.max(1,ee)),Le=this.getLineMaxColumn(Se),De=new n.Range(ve,1,Se,Le),ye=this._getDecorationsInRange(De,$,re,oe);return(0,L.pushMany)(ye,this._decorationProvider.getDecorationsInRange(De,$,re)),ye}getDecorationsInRange(z,ee=0,$=!1,re=!1,oe=!1){const ge=this.validateRange(z),ve=this._getDecorationsInRange(ge,ee,$,oe);return(0,L.pushMany)(ve,this._decorationProvider.getDecorationsInRange(ge,ee,$,re)),ve}getOverviewRulerDecorations(z=0,ee=!1){return this._decorationsTree.getAll(this,z,ee,!0,!1)}getInjectedTextDecorations(z=0){return this._decorationsTree.getAllInjectedText(this,z)}_getInjectedTextInLine(z){const ee=this._buffer.getOffsetAt(z,1),$=ee+this._buffer.getLineLength(z),re=this._decorationsTree.getInjectedTextInInterval(this,ee,$,0);return I.LineInjectedText.fromDecorations(re).filter(oe=>oe.lineNumber===z)}getAllDecorations(z=0,ee=!1){let $=this._decorationsTree.getAll(this,z,ee,!1,!1);return $=$.concat(this._decorationProvider.getAllDecorations(z,ee)),$}getAllMarginDecorations(z=0){return this._decorationsTree.getAll(this,z,!1,!1,!0)}_getDecorationsInRange(z,ee,$,re){const oe=this._buffer.getOffsetAt(z.startLineNumber,z.startColumn),ge=this._buffer.getOffsetAt(z.endLineNumber,z.endColumn);return this._decorationsTree.getAllInInterval(this,oe,ge,ee,$,re)}getRangeAt(z,ee){return this._buffer.getRangeAt(z,ee-z)}_changeDecorationImpl(z,ee){const $=this._decorations[z];if(!$)return;if($.options.after){const ve=this.getDecorationRange(z);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.endLineNumber)}if($.options.before){const ve=this.getDecorationRange(z);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.startLineNumber)}const re=this._validateRangeRelaxedNoAllocations(ee),oe=this._buffer.getOffsetAt(re.startLineNumber,re.startColumn),ge=this._buffer.getOffsetAt(re.endLineNumber,re.endColumn);this._decorationsTree.delete($),$.reset(this.getVersionId(),oe,ge,re),this._decorationsTree.insert($),this._onDidChangeDecorations.checkAffectedAndFire($.options),$.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(re.endLineNumber),$.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(re.startLineNumber)}_changeDecorationOptionsImpl(z,ee){const $=this._decorations[z];if(!$)return;const re=!!($.options.overviewRuler&&$.options.overviewRuler.color),oe=!!(ee.overviewRuler&&ee.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire($.options),this._onDidChangeDecorations.checkAffectedAndFire(ee),$.options.after||ee.after){const ge=this._decorationsTree.getNodeRange(this,$);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ge.endLineNumber)}if($.options.before||ee.before){const ge=this._decorationsTree.getNodeRange(this,$);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ge.startLineNumber)}re!==oe?(this._decorationsTree.delete($),$.setOptions(ee),this._decorationsTree.insert($)):$.setOptions(ee)}_deltaDecorationsImpl(z,ee,$,re=!1){const oe=this.getVersionId(),ge=ee.length;let ve=0;const Se=$.length;let Le=0;this._onDidChangeDecorations.beginDeferredEmit();try{const De=new Array(Se);for(;vethis._setLanguage(z.languageId,ee)),this._setLanguage(z.languageId,ee))}_setLanguage(z,ee){this.tokenization.setLanguageId(z,ee),this._languageService.requestRichLanguageFeatures(z)}getLanguageIdAtPosition(z,ee){return this.tokenization.getLanguageIdAtPosition(z,ee)}getWordAtPosition(z){return this._tokenizationTextModelPart.getWordAtPosition(z)}getWordUntilPosition(z){return this._tokenizationTextModelPart.getWordUntilPosition(z)}normalizePosition(z,ee){return z}getLineIndentColumn(z){return R(this.getLineContent(z))+1}};e.TextModel=j,j._MODEL_SYNC_LIMIT=50*1024*1024,j.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024,j.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3,j.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:a.EDITOR_MODEL_DEFAULTS.tabSize,indentSize:a.EDITOR_MODEL_DEFAULTS.indentSize,insertSpaces:a.EDITOR_MODEL_DEFAULTS.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:a.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,largeFileOptimizations:a.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,bracketPairColorizationOptions:a.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions},e.TextModel=j=P=ke([fe(4,M.IUndoRedoService),fe(5,u.ILanguageService),fe(6,h.ILanguageConfigurationService)],j);function R(q){let z=0;for(const ee of q)if(ee===" "||ee===" ")z++;else break;return z}function K(q){return!!(q.options.overviewRuler&&q.options.overviewRuler.color)}function G(q){return!!q.options.after||!!q.options.before}class Z{constructor(){this._decorationsTree0=new m.IntervalTree,this._decorationsTree1=new m.IntervalTree,this._injectedTextDecorationsTree=new m.IntervalTree}ensureAllNodesHaveRanges(z){this.getAll(z,0,!1,!1,!1)}_ensureNodesHaveRanges(z,ee){for(const $ of ee)$.range===null&&($.range=z.getRangeAt($.cachedAbsoluteStart,$.cachedAbsoluteEnd));return ee}getAllInInterval(z,ee,$,re,oe,ge){const ve=z.getVersionId(),Se=this._intervalSearch(ee,$,re,oe,ve,ge);return this._ensureNodesHaveRanges(z,Se)}_intervalSearch(z,ee,$,re,oe,ge){const ve=this._decorationsTree0.intervalSearch(z,ee,$,re,oe,ge),Se=this._decorationsTree1.intervalSearch(z,ee,$,re,oe,ge),Le=this._injectedTextDecorationsTree.intervalSearch(z,ee,$,re,oe,ge);return ve.concat(Se).concat(Le)}getInjectedTextInInterval(z,ee,$,re){const oe=z.getVersionId(),ge=this._injectedTextDecorationsTree.intervalSearch(ee,$,re,!1,oe,!1);return this._ensureNodesHaveRanges(z,ge).filter(ve=>ve.options.showIfCollapsed||!ve.range.isEmpty())}getAllInjectedText(z,ee){const $=z.getVersionId(),re=this._injectedTextDecorationsTree.search(ee,!1,$,!1);return this._ensureNodesHaveRanges(z,re).filter(oe=>oe.options.showIfCollapsed||!oe.range.isEmpty())}getAll(z,ee,$,re,oe){const ge=z.getVersionId(),ve=this._search(ee,$,re,ge,oe);return this._ensureNodesHaveRanges(z,ve)}_search(z,ee,$,re,oe){if($)return this._decorationsTree1.search(z,ee,re,oe);{const ge=this._decorationsTree0.search(z,ee,re,oe),ve=this._decorationsTree1.search(z,ee,re,oe),Se=this._injectedTextDecorationsTree.search(z,ee,re,oe);return ge.concat(ve).concat(Se)}}collectNodesFromOwner(z){const ee=this._decorationsTree0.collectNodesFromOwner(z),$=this._decorationsTree1.collectNodesFromOwner(z),re=this._injectedTextDecorationsTree.collectNodesFromOwner(z);return ee.concat($).concat(re)}collectNodesPostOrder(){const z=this._decorationsTree0.collectNodesPostOrder(),ee=this._decorationsTree1.collectNodesPostOrder(),$=this._injectedTextDecorationsTree.collectNodesPostOrder();return z.concat(ee).concat($)}insert(z){G(z)?this._injectedTextDecorationsTree.insert(z):K(z)?this._decorationsTree1.insert(z):this._decorationsTree0.insert(z)}delete(z){G(z)?this._injectedTextDecorationsTree.delete(z):K(z)?this._decorationsTree1.delete(z):this._decorationsTree0.delete(z)}getNodeRange(z,ee){const $=z.getVersionId();return ee.cachedVersionId!==$&&this._resolveNode(ee,$),ee.range===null&&(ee.range=z.getRangeAt(ee.cachedAbsoluteStart,ee.cachedAbsoluteEnd)),ee.range}_resolveNode(z,ee){G(z)?this._injectedTextDecorationsTree.resolveNode(z,ee):K(z)?this._decorationsTree1.resolveNode(z,ee):this._decorationsTree0.resolveNode(z,ee)}acceptReplace(z,ee,$,re){this._decorationsTree0.acceptReplace(z,ee,$,re),this._decorationsTree1.acceptReplace(z,ee,$,re),this._injectedTextDecorationsTree.acceptReplace(z,ee,$,re)}}function J(q){return q.replace(/[^a-z0-9\-_]/gi," ")}class X{constructor(z){this.color=z.color||"",this.darkColor=z.darkColor||""}}class H extends X{constructor(z){super(z),this._resolvedColor=null,this.position=typeof z.position=="number"?z.position:r.OverviewRulerLane.Center}getColor(z){return this._resolvedColor||(z.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,z):this._resolvedColor=this._resolveColor(this.color,z)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(z,ee){if(typeof z=="string")return z;const $=z?ee.getColor(z.id):null;return $?$.toString():""}}e.ModelDecorationOverviewRulerOptions=H;class B{constructor(z){var ee;this.position=(ee=z?.position)!==null&&ee!==void 0?ee:r.GlyphMarginLane.Left}}e.ModelDecorationGlyphMarginOptions=B;class V extends X{constructor(z){super(z),this.position=z.position}getColor(z){return this._resolvedColor||(z.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,z):this._resolvedColor=this._resolveColor(this.color,z)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(z,ee){return typeof z=="string"?k.Color.fromHex(z):ee.getColor(z.id)}}e.ModelDecorationMinimapOptions=V;class Y{static from(z){return z instanceof Y?z:new Y(z)}constructor(z){this.content=z.content||"",this.inlineClassName=z.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=z.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=z.attachedData||null,this.cursorStops=z.cursorStops||null}}e.ModelDecorationInjectedTextOptions=Y;class ie{static register(z){return new ie(z)}static createDynamic(z){return new ie(z)}constructor(z){var ee,$,re,oe,ge,ve;this.description=z.description,this.blockClassName=z.blockClassName?J(z.blockClassName):null,this.blockDoesNotCollapse=(ee=z.blockDoesNotCollapse)!==null&&ee!==void 0?ee:null,this.blockIsAfterEnd=($=z.blockIsAfterEnd)!==null&&$!==void 0?$:null,this.blockPadding=(re=z.blockPadding)!==null&&re!==void 0?re:null,this.stickiness=z.stickiness||0,this.zIndex=z.zIndex||0,this.className=z.className?J(z.className):null,this.shouldFillLineOnLineBreak=(oe=z.shouldFillLineOnLineBreak)!==null&&oe!==void 0?oe:null,this.hoverMessage=z.hoverMessage||null,this.glyphMarginHoverMessage=z.glyphMarginHoverMessage||null,this.isWholeLine=z.isWholeLine||!1,this.showIfCollapsed=z.showIfCollapsed||!1,this.collapseOnReplaceEdit=z.collapseOnReplaceEdit||!1,this.overviewRuler=z.overviewRuler?new H(z.overviewRuler):null,this.minimap=z.minimap?new V(z.minimap):null,this.glyphMargin=z.glyphMarginClassName?new B(z.glyphMargin):null,this.glyphMarginClassName=z.glyphMarginClassName?J(z.glyphMarginClassName):null,this.linesDecorationsClassName=z.linesDecorationsClassName?J(z.linesDecorationsClassName):null,this.firstLineDecorationClassName=z.firstLineDecorationClassName?J(z.firstLineDecorationClassName):null,this.marginClassName=z.marginClassName?J(z.marginClassName):null,this.inlineClassName=z.inlineClassName?J(z.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=z.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=z.beforeContentClassName?J(z.beforeContentClassName):null,this.afterContentClassName=z.afterContentClassName?J(z.afterContentClassName):null,this.after=z.after?Y.from(z.after):null,this.before=z.before?Y.from(z.before):null,this.hideInCommentTokens=(ge=z.hideInCommentTokens)!==null&&ge!==void 0?ge:!1,this.hideInStringTokens=(ve=z.hideInStringTokens)!==null&&ve!==void 0?ve:!1}}e.ModelDecorationOptions=ie,ie.EMPTY=ie.register({description:"empty"});const ae=[ie.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),ie.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),ie.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),ie.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function ce(q){return q instanceof ie?q:ie.createDynamic(q)}class de extends S.Disposable{constructor(z){super(),this.handleBeforeFire=z,this._actual=this._register(new D.Emitter),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var z;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(z=this._affectedInjectedTextLines)===null||z===void 0||z.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(z){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(z)}checkAffectedAndFire(z){this._affectsMinimap||(this._affectsMinimap=!!(z.minimap&&z.minimap.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!(z.overviewRuler&&z.overviewRuler.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!z.glyphMarginClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const z={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(z)}}class he extends S.Disposable{constructor(){super(),this._fastEmitter=this._register(new D.Emitter),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new D.Emitter),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(z=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=z;const ee=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(ee),this._slowEmitter.fire(ee)}}fire(z){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(z):this._deferredEvent=z;return}this._fastEmitter.fire(z),this._slowEmitter.fire(z)}}class ue{constructor(){this._onDidChangeVisibleRanges=new D.Emitter,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const z=new te(ee=>{this._onDidChangeVisibleRanges.fire({view:z,state:ee})});return this._views.add(z),z}detachView(z){this._views.delete(z),this._onDidChangeVisibleRanges.fire({view:z,state:void 0})}}e.AttachedViews=ue;class te{constructor(z){this.handleStateChange=z}setVisibleLines(z,ee){const $=z.map(re=>new s.LineRange(re.startLineNumber,re.endLineNumber+1));this.handleStateChange({visibleLineRanges:$,stabilized:ee})}}}),define(ne[362],se([1,0,25,55,26,40,609,62]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.arrowRevertChange=e.diffDeleteDecorationEmpty=e.diffWholeLineDeleteDecoration=e.diffDeleteDecoration=e.diffAddDecorationEmpty=e.diffWholeLineAddDecoration=e.diffAddDecoration=e.diffLineDeleteDecorationBackground=e.diffLineAddDecorationBackground=e.diffLineDeleteDecorationBackgroundWithIndicator=e.diffLineAddDecorationBackgroundWithIndicator=e.diffRemoveIcon=e.diffInsertIcon=void 0,e.diffInsertIcon=(0,f.registerIcon)("diff-insert",L.Codicon.add,(0,S.localize)(0,null)),e.diffRemoveIcon=(0,f.registerIcon)("diff-remove",L.Codicon.remove,(0,S.localize)(1,null)),e.diffLineAddDecorationBackgroundWithIndicator=D.ModelDecorationOptions.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+y.ThemeIcon.asClassName(e.diffInsertIcon),marginClassName:"gutter-insert"}),e.diffLineDeleteDecorationBackgroundWithIndicator=D.ModelDecorationOptions.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+y.ThemeIcon.asClassName(e.diffRemoveIcon),marginClassName:"gutter-delete"}),e.diffLineAddDecorationBackground=D.ModelDecorationOptions.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),e.diffLineDeleteDecorationBackground=D.ModelDecorationOptions.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),e.diffAddDecoration=D.ModelDecorationOptions.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),e.diffWholeLineAddDecoration=D.ModelDecorationOptions.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),e.diffAddDecorationEmpty=D.ModelDecorationOptions.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),e.diffDeleteDecoration=D.ModelDecorationOptions.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),e.diffWholeLineDeleteDecoration=D.ModelDecorationOptions.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),e.diffDeleteDecorationEmpty=D.ModelDecorationOptions.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"}),e.arrowRevertChange=D.ModelDecorationOptions.register({description:"diff-editor-arrow-revert-change",glyphMarginHoverMessage:new k.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,S.localize)(2,null)),glyphMarginClassName:"arrow-revert-change "+y.ThemeIcon.asClassName(L.Codicon.arrowRight),zIndex:10001})}),define(ne[870],se([1,0,2,42,362,323,102,12,5]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorDecorations=void 0;class g extends L.Disposable{constructor(s,i,n){super(),this._editors=s,this._diffModel=i,this._options=n,this._decorations=(0,k.derived)(t=>{var a;const u=(a=this._diffModel.read(t))===null||a===void 0?void 0:a.diff.read(t);if(!u)return null;const h=this._diffModel.read(t).movedTextToCompare.read(t),r=this._options.renderIndicators.read(t),c=this._options.showEmptyDecorations.read(t),o=[],d=[];if(!h)for(const p of u.mappings){if(p.lineRangeMapping.originalRange.isEmpty||o.push({range:p.lineRangeMapping.originalRange.toInclusiveRange(),options:r?y.diffLineDeleteDecorationBackgroundWithIndicator:y.diffLineDeleteDecorationBackground}),p.lineRangeMapping.modifiedRange.isEmpty||d.push({range:p.lineRangeMapping.modifiedRange.toInclusiveRange(),options:r?y.diffLineAddDecorationBackgroundWithIndicator:y.diffLineAddDecorationBackground}),p.lineRangeMapping.modifiedRange.isEmpty||p.lineRangeMapping.originalRange.isEmpty)p.lineRangeMapping.originalRange.isEmpty||o.push({range:p.lineRangeMapping.originalRange.toInclusiveRange(),options:y.diffWholeLineDeleteDecoration}),p.lineRangeMapping.modifiedRange.isEmpty||d.push({range:p.lineRangeMapping.modifiedRange.toInclusiveRange(),options:y.diffWholeLineAddDecoration});else for(const m of p.lineRangeMapping.innerChanges||[])p.lineRangeMapping.originalRange.contains(m.originalRange.startLineNumber)&&o.push({range:m.originalRange,options:m.originalRange.isEmpty()&&c?y.diffDeleteDecorationEmpty:y.diffDeleteDecoration}),p.lineRangeMapping.modifiedRange.contains(m.modifiedRange.startLineNumber)&&d.push({range:m.modifiedRange,options:m.modifiedRange.isEmpty()&&c?y.diffAddDecorationEmpty:y.diffAddDecoration});!p.lineRangeMapping.modifiedRange.isEmpty&&this._options.shouldRenderRevertArrows.read(t)&&!h&&d.push({range:_.Range.fromPositions(new f.Position(p.lineRangeMapping.modifiedRange.startLineNumber,1)),options:y.arrowRevertChange})}if(h)for(const p of h.changes){const m=p.originalRange.toInclusiveRange();m&&o.push({range:m,options:r?y.diffLineDeleteDecorationBackgroundWithIndicator:y.diffLineDeleteDecorationBackground});const v=p.modifiedRange.toInclusiveRange();v&&d.push({range:v,options:r?y.diffLineAddDecorationBackgroundWithIndicator:y.diffLineAddDecorationBackground});for(const b of p.innerChanges||[])o.push({range:b.originalRange,options:y.diffDeleteDecoration}),d.push({range:b.modifiedRange,options:y.diffAddDecoration})}const l=this._diffModel.read(t).activeMovedText.read(t);for(const p of u.movedTexts)o.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(p===l?" currentMove":""),blockPadding:[D.MovedBlocksLinesPart.movedCodeBlockPadding,0,D.MovedBlocksLinesPart.movedCodeBlockPadding,D.MovedBlocksLinesPart.movedCodeBlockPadding]}}),d.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(p===l?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:o,modifiedDecorations:d}}),this._register((0,S.applyObservableDecorations)(this._editors.original,this._decorations.map(t=>t?.originalDecorations||[]))),this._register((0,S.applyObservableDecorations)(this._editors.modified,this._decorations.map(t=>t?.modifiedDecorations||[])))}}e.DiffEditorDecorations=g}),define(ne[871],se([1,0,6,2,17,40,175,78,41,187,28,192,143,329,54,47,32]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.ModelService=void 0;function r(m){return m.toString()}function c(m){const v=new i.StringSHA1,b=m.createSnapshot();let w;for(;w=b.read();)v.update(w);return v.digest()}class o{constructor(v,b,w){this.model=v,this._modelEventListeners=new k.DisposableStore,this.model=v,this._modelEventListeners.add(v.onWillDispose(()=>b(v))),this._modelEventListeners.add(v.onDidChangeLanguage(E=>w(v,E)))}dispose(){this._modelEventListeners.dispose()}}const d=y.isLinux||y.isMacintosh?1:2;class l{constructor(v,b,w,E,I,M,P,x){this.uri=v,this.initialUndoRedoSnapshot=b,this.time=w,this.sharesUndoRedoStack=E,this.heapSize=I,this.sha1=M,this.versionId=P,this.alternativeVersionId=x}}let p=h=class extends k.Disposable{constructor(v,b,w,E,I){super(),this._configurationService=v,this._resourcePropertiesService=b,this._undoRedoService=w,this._languageService=E,this._languageConfigurationService=I,this._onModelAdded=this._register(new L.Emitter),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new L.Emitter),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new L.Emitter),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(M=>this._updateModelOptions(M))),this._updateModelOptions(void 0)}static _readModelOptions(v,b){var w;let E=S.EDITOR_MODEL_DEFAULTS.tabSize;if(v.editor&&typeof v.editor.tabSize<"u"){const O=parseInt(v.editor.tabSize,10);isNaN(O)||(E=O),E<1&&(E=1)}let I="tabSize";if(v.editor&&typeof v.editor.indentSize<"u"&&v.editor.indentSize!=="tabSize"){const O=parseInt(v.editor.indentSize,10);isNaN(O)||(I=Math.max(O,1))}let M=S.EDITOR_MODEL_DEFAULTS.insertSpaces;v.editor&&typeof v.editor.insertSpaces<"u"&&(M=v.editor.insertSpaces==="false"?!1:!!v.editor.insertSpaces);let P=d;const x=v.eol;x===`\r -`?P=2:x===` -`&&(P=1);let T=S.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace;v.editor&&typeof v.editor.trimAutoWhitespace<"u"&&(T=v.editor.trimAutoWhitespace==="false"?!1:!!v.editor.trimAutoWhitespace);let A=S.EDITOR_MODEL_DEFAULTS.detectIndentation;v.editor&&typeof v.editor.detectIndentation<"u"&&(A=v.editor.detectIndentation==="false"?!1:!!v.editor.detectIndentation);let N=S.EDITOR_MODEL_DEFAULTS.largeFileOptimizations;v.editor&&typeof v.editor.largeFileOptimizations<"u"&&(N=v.editor.largeFileOptimizations==="false"?!1:!!v.editor.largeFileOptimizations);let F=S.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions;return!((w=v.editor)===null||w===void 0)&&w.bracketPairColorization&&typeof v.editor.bracketPairColorization=="object"&&(F={enabled:!!v.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!v.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:b,tabSize:E,indentSize:I,insertSpaces:M,detectIndentation:A,defaultEOL:P,trimAutoWhitespace:T,largeFileOptimizations:N,bracketPairColorizationOptions:F}}_getEOL(v,b){if(v)return this._resourcePropertiesService.getEOL(v,b);const w=this._configurationService.getValue("files.eol",{overrideIdentifier:b});return w&&typeof w=="string"&&w!=="auto"?w:y.OS===3||y.OS===2?` -`:`\r -`}_shouldRestoreUndoStack(){const v=this._configurationService.getValue("files.restoreUndoStack");return typeof v=="boolean"?v:!0}getCreationOptions(v,b,w){const E=typeof v=="string"?v:v.languageId;let I=this._modelCreationOptionsByLanguageAndResource[E+b];if(!I){const M=this._configurationService.getValue("editor",{overrideIdentifier:E,resource:b}),P=this._getEOL(b,E);I=h._readModelOptions({editor:M,eol:P},w),this._modelCreationOptionsByLanguageAndResource[E+b]=I}return I}_updateModelOptions(v){const b=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const w=Object.keys(this._models);for(let E=0,I=w.length;Ev){const b=[];for(this._disposedModels.forEach(w=>{w.sharesUndoRedoStack||b.push(w)}),b.sort((w,E)=>w.time-E.time);b.length>0&&this._disposedModelsHeapSize>v;){const w=b.shift();this._removeDisposedModel(w.uri),w.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(w.initialUndoRedoSnapshot)}}}_createModelData(v,b,w,E){const I=this.getCreationOptions(b,w,E),M=new D.TextModel(v,b,I,w,this._undoRedoService,this._languageService,this._languageConfigurationService);if(w&&this._disposedModels.has(r(w))){const T=this._removeDisposedModel(w),A=this._undoRedoService.getElements(w),N=c(M)===T.sha1;if(N||T.sharesUndoRedoStack){for(const F of A.past)(0,n.isEditStackElement)(F)&&F.matchesResource(w)&&F.setModel(M);for(const F of A.future)(0,n.isEditStackElement)(F)&&F.matchesResource(w)&&F.setModel(M);this._undoRedoService.setElementsValidFlag(w,!0,F=>(0,n.isEditStackElement)(F)&&F.matchesResource(w)),N&&(M._overwriteVersionId(T.versionId),M._overwriteAlternativeVersionId(T.alternativeVersionId),M._overwriteInitialUndoRedoSnapshot(T.initialUndoRedoSnapshot))}else T.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(T.initialUndoRedoSnapshot)}const P=r(M.uri);if(this._models[P])throw new Error("ModelService: Cannot add model because it already exists!");const x=new o(M,T=>this._onWillDispose(T),(T,A)=>this._onDidChangeLanguage(T,A));return this._models[P]=x,x}createModel(v,b,w,E=!1){let I;return b?I=this._createModelData(v,b,w,E):I=this._createModelData(v,f.PLAINTEXT_LANGUAGE_ID,w,E),this._onModelAdded.fire(I.model),I.model}getModels(){const v=[],b=Object.keys(this._models);for(let w=0,E=b.length;w0||x.future.length>0){for(const T of x.past)(0,n.isEditStackElement)(T)&&T.matchesResource(v.uri)&&(I=!0,M+=T.heapSize(v.uri),T.setModel(v.uri));for(const T of x.future)(0,n.isEditStackElement)(T)&&T.matchesResource(v.uri)&&(I=!0,M+=T.heapSize(v.uri),T.setModel(v.uri))}}const P=h.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK;if(I)if(!E&&M>P){const x=w.model.getInitialUndoRedoSnapshot();x!==null&&this._undoRedoService.restoreSnapshot(x)}else this._ensureDisposedModelsHeapSize(P-M),this._undoRedoService.setElementsValidFlag(v.uri,!1,x=>(0,n.isEditStackElement)(x)&&x.matchesResource(v.uri)),this._insertDisposedModel(new l(v.uri,w.model.getInitialUndoRedoSnapshot(),Date.now(),E,M,c(v),v.getVersionId(),v.getAlternativeVersionId()));else if(!E){const x=w.model.getInitialUndoRedoSnapshot();x!==null&&this._undoRedoService.restoreSnapshot(x)}delete this._models[b],w.dispose(),delete this._modelCreationOptionsByLanguageAndResource[v.getLanguageId()+v.uri],this._onModelRemoved.fire(v)}_onDidChangeLanguage(v,b){const w=b.oldLanguage,E=v.getLanguageId(),I=this.getCreationOptions(w,v.uri,v.isForSimpleWidget),M=this.getCreationOptions(E,v.uri,v.isForSimpleWidget);h._setModelOptionsForModel(v,M,I),this._onModelModeChanged.fire({model:v,oldLanguageId:w})}};e.ModelService=p,p.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,e.ModelService=p=h=ke([fe(0,C.IConfigurationService),fe(1,g.ITextResourcePropertiesService),fe(2,s.IUndoRedoService),fe(3,_.ILanguageService),fe(4,u.ILanguageConfigurationService)],p)}),define(ne[872],se([1,0,14,12,5,209,40,111,211,532,281,67]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewModelLinesFromModelAsIs=e.ViewModelLinesFromProjectedModel=void 0;class i{constructor(o,d,l,p,m,v,b,w,E,I){this._editorId=o,this.model=d,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=l,this._monospaceLineBreaksComputerFactory=p,this.fontInfo=m,this.tabSize=v,this.wrappingStrategy=b,this.wrappingColumn=w,this.wrappingIndent=E,this.wordBreak=I,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new u(this)}_constructLines(o,d){this.modelLineProjections=[],o&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const l=this.model.getLinesContent(),p=this.model.getInjectedTextDecorations(this._editorId),m=l.length,v=this.createLineBreaksComputer(),b=new L.ArrayQueue(f.LineInjectedText.fromDecorations(p));for(let A=0;AF.lineNumber===A+1);v.addRequest(l[A],N,d?d[A]:null)}const w=v.finalize(),E=[],I=this.hiddenAreasDecorationIds.map(A=>this.model.getDecorationRange(A)).sort(y.Range.compareRangesUsingStarts);let M=1,P=0,x=-1,T=x+1=M&&N<=P,O=(0,g.createModelLineProjection)(w[A],!F);E[A]=O.getViewLineCount(),this.modelLineProjections[A]=O}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new C.ConstantTimePrefixSumComputer(E)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(o=>this.model.getDecorationRange(o))}setHiddenAreas(o){const d=o.map(P=>this.model.validateRange(P)),l=n(d),p=this.hiddenAreasDecorationIds.map(P=>this.model.getDecorationRange(P)).sort(y.Range.compareRangesUsingStarts);if(l.length===p.length){let P=!1;for(let x=0;x({range:P,options:S.ModelDecorationOptions.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,m);const v=l;let b=1,w=0,E=-1,I=E+1=b&&x<=w?this.modelLineProjections[P].isVisible()&&(this.modelLineProjections[P]=this.modelLineProjections[P].setVisible(!1),T=!0):(M=!0,this.modelLineProjections[P].isVisible()||(this.modelLineProjections[P]=this.modelLineProjections[P].setVisible(!0),T=!0)),T){const A=this.modelLineProjections[P].getViewLineCount();this.projectedModelLineLineCounts.setValue(P,A)}}return M||this.setHiddenAreas([]),!0}modelPositionIsVisible(o,d){return o<1||o>this.modelLineProjections.length?!1:this.modelLineProjections[o-1].isVisible()}getModelLineViewLineCount(o){return o<1||o>this.modelLineProjections.length?1:this.modelLineProjections[o-1].getViewLineCount()}setTabSize(o){return this.tabSize===o?!1:(this.tabSize=o,this._constructLines(!1,null),!0)}setWrappingSettings(o,d,l,p,m){const v=this.fontInfo.equals(o),b=this.wrappingStrategy===d,w=this.wrappingColumn===l,E=this.wrappingIndent===p,I=this.wordBreak===m;if(v&&b&&w&&E&&I)return!1;const M=v&&b&&!w&&E&&I;this.fontInfo=o,this.wrappingStrategy=d,this.wrappingColumn=l,this.wrappingIndent=p,this.wordBreak=m;let P=null;if(M){P=[];for(let x=0,T=this.modelLineProjections.length;x2&&!this.modelLineProjections[d-2].isVisible(),v=d===1?1:this.projectedModelLineLineCounts.getPrefixSum(d-1)+1;let b=0;const w=[],E=[];for(let I=0,M=p.length;Iw?(I=this.projectedModelLineLineCounts.getPrefixSum(d-1)+1,M=I+w-1,T=M+1,A=T+(m-w)-1,E=!0):md?d:o|0}getActiveIndentGuide(o,d,l){o=this._toValidViewLineNumber(o),d=this._toValidViewLineNumber(d),l=this._toValidViewLineNumber(l);const p=this.convertViewPositionToModelPosition(o,this.getViewLineMinColumn(o)),m=this.convertViewPositionToModelPosition(d,this.getViewLineMinColumn(d)),v=this.convertViewPositionToModelPosition(l,this.getViewLineMinColumn(l)),b=this.model.guides.getActiveIndentGuide(p.lineNumber,m.lineNumber,v.lineNumber),w=this.convertModelPositionToViewPosition(b.startLineNumber,1),E=this.convertModelPositionToViewPosition(b.endLineNumber,this.model.getLineMaxColumn(b.endLineNumber));return{startLineNumber:w.lineNumber,endLineNumber:E.lineNumber,indent:b.indent}}getViewLineInfo(o){o=this._toValidViewLineNumber(o);const d=this.projectedModelLineLineCounts.getIndexOf(o-1),l=d.index,p=d.remainder;return new t(l+1,p)}getMinColumnOfViewLine(o){return this.modelLineProjections[o.modelLineNumber-1].getViewLineMinColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(o){return this.modelLineProjections[o.modelLineNumber-1].getViewLineMaxColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(o){const d=this.modelLineProjections[o.modelLineNumber-1],l=d.getViewLineMinColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx),p=d.getModelColumnOfViewPosition(o.modelLineWrappedLineIdx,l);return new k.Position(o.modelLineNumber,p)}getModelEndPositionOfViewLine(o){const d=this.modelLineProjections[o.modelLineNumber-1],l=d.getViewLineMaxColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx),p=d.getModelColumnOfViewPosition(o.modelLineWrappedLineIdx,l);return new k.Position(o.modelLineNumber,p)}getViewLineInfosGroupedByModelRanges(o,d){const l=this.getViewLineInfo(o),p=this.getViewLineInfo(d),m=new Array;let v=this.getModelStartPositionOfViewLine(l),b=new Array;for(let w=l.modelLineNumber;w<=p.modelLineNumber;w++){const E=this.modelLineProjections[w-1];if(E.isVisible()){const I=w===l.modelLineNumber?l.modelLineWrappedLineIdx:0,M=w===p.modelLineNumber?p.modelLineWrappedLineIdx+1:E.getViewLineCount();for(let P=I;P{if(x.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.forWrappedLinesAfterColumn).lineNumber>=I.modelLineWrappedLineIdx||x.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.forWrappedLinesBeforeOrAtColumn).lineNumberI.modelLineWrappedLineIdx)return}const A=this.convertModelPositionToViewPosition(I.modelLineNumber,x.horizontalLine.endColumn),N=this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.horizontalLine.endColumn);return N.lineNumber===I.modelLineWrappedLineIdx?new D.IndentGuide(x.visibleColumn,T,x.className,new D.IndentGuideHorizontalLine(x.horizontalLine.top,A.column),-1,-1):N.lineNumber!!x))}}return v}getViewLinesIndentGuides(o,d){o=this._toValidViewLineNumber(o),d=this._toValidViewLineNumber(d);const l=this.convertViewPositionToModelPosition(o,this.getViewLineMinColumn(o)),p=this.convertViewPositionToModelPosition(d,this.getViewLineMaxColumn(d));let m=[];const v=[],b=[],w=l.lineNumber-1,E=p.lineNumber-1;let I=null;for(let T=w;T<=E;T++){const A=this.modelLineProjections[T];if(A.isVisible()){const N=A.getViewLineNumberOfModelPosition(0,T===w?l.column:1),F=A.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(T+1)),O=F-N+1;let W=0;O>1&&A.getViewLineMinColumn(this.model,T+1,F)===1&&(W=N===0?1:2),v.push(O),b.push(W),I===null&&(I=new k.Position(T+1,0))}else I!==null&&(m=m.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,T)),I=null)}I!==null&&(m=m.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,p.lineNumber)),I=null);const M=d-o+1,P=new Array(M);let x=0;for(let T=0,A=m.length;Td&&(T=!0,x=d-m+1),M.getViewLinesData(this.model,E+1,P,x,m-o,l,w),m+=x,T)break}return w}validateViewPosition(o,d,l){o=this._toValidViewLineNumber(o);const p=this.projectedModelLineLineCounts.getIndexOf(o-1),m=p.index,v=p.remainder,b=this.modelLineProjections[m],w=b.getViewLineMinColumn(this.model,m+1,v),E=b.getViewLineMaxColumn(this.model,m+1,v);dE&&(d=E);const I=b.getModelColumnOfViewPosition(v,d);return this.model.validatePosition(new k.Position(m+1,I)).equals(l)?new k.Position(o,d):this.convertModelPositionToViewPosition(l.lineNumber,l.column)}validateViewRange(o,d){const l=this.validateViewPosition(o.startLineNumber,o.startColumn,d.getStartPosition()),p=this.validateViewPosition(o.endLineNumber,o.endColumn,d.getEndPosition());return new y.Range(l.lineNumber,l.column,p.lineNumber,p.column)}convertViewPositionToModelPosition(o,d){const l=this.getViewLineInfo(o),p=this.modelLineProjections[l.modelLineNumber-1].getModelColumnOfViewPosition(l.modelLineWrappedLineIdx,d);return this.model.validatePosition(new k.Position(l.modelLineNumber,p))}convertViewRangeToModelRange(o){const d=this.convertViewPositionToModelPosition(o.startLineNumber,o.startColumn),l=this.convertViewPositionToModelPosition(o.endLineNumber,o.endColumn);return new y.Range(d.lineNumber,d.column,l.lineNumber,l.column)}convertModelPositionToViewPosition(o,d,l=2,p=!1,m=!1){const v=this.model.validatePosition(new k.Position(o,d)),b=v.lineNumber,w=v.column;let E=b-1,I=!1;if(m)for(;E0&&!this.modelLineProjections[E].isVisible();)E--,I=!0;if(E===0&&!this.modelLineProjections[E].isVisible())return new k.Position(p?0:1,1);const M=1+this.projectedModelLineLineCounts.getPrefixSum(E);let P;return I?m?P=this.modelLineProjections[E].getViewPositionOfModelPosition(M,1,l):P=this.modelLineProjections[E].getViewPositionOfModelPosition(M,this.model.getLineMaxColumn(E+1),l):P=this.modelLineProjections[b-1].getViewPositionOfModelPosition(M,w,l),P}convertModelRangeToViewRange(o,d=0){if(o.isEmpty()){const l=this.convertModelPositionToViewPosition(o.startLineNumber,o.startColumn,d);return y.Range.fromPositions(l)}else{const l=this.convertModelPositionToViewPosition(o.startLineNumber,o.startColumn,1),p=this.convertModelPositionToViewPosition(o.endLineNumber,o.endColumn,0);return new y.Range(l.lineNumber,l.column,p.lineNumber,p.column)}}getViewLineNumberOfModelPosition(o,d){let l=o-1;if(this.modelLineProjections[l].isVisible()){const m=1+this.projectedModelLineLineCounts.getPrefixSum(l);return this.modelLineProjections[l].getViewLineNumberOfModelPosition(m,d)}for(;l>0&&!this.modelLineProjections[l].isVisible();)l--;if(l===0&&!this.modelLineProjections[l].isVisible())return 1;const p=1+this.projectedModelLineLineCounts.getPrefixSum(l);return this.modelLineProjections[l].getViewLineNumberOfModelPosition(p,this.model.getLineMaxColumn(l+1))}getDecorationsInRange(o,d,l,p,m){const v=this.convertViewPositionToModelPosition(o.startLineNumber,o.startColumn),b=this.convertViewPositionToModelPosition(o.endLineNumber,o.endColumn);if(b.lineNumber-v.lineNumber<=o.endLineNumber-o.startLineNumber)return this.model.getDecorationsInRange(new y.Range(v.lineNumber,1,b.lineNumber,b.column),d,l,p,m);let w=[];const E=v.lineNumber-1,I=b.lineNumber-1;let M=null;for(let A=E;A<=I;A++)if(this.modelLineProjections[A].isVisible())M===null&&(M=new k.Position(A+1,A===E?v.column:1));else if(M!==null){const F=this.model.getLineMaxColumn(A);w=w.concat(this.model.getDecorationsInRange(new y.Range(M.lineNumber,M.column,A,F),d,l,p)),M=null}M!==null&&(w=w.concat(this.model.getDecorationsInRange(new y.Range(M.lineNumber,M.column,b.lineNumber,b.column),d,l,p)),M=null),w.sort((A,N)=>{const F=y.Range.compareRangesUsingStarts(A.range,N.range);return F===0?A.idN.id?1:0:F});const P=[];let x=0,T=null;for(const A of w){const N=A.id;T!==N&&(T=N,P[x++]=A)}return P}getInjectedTextAt(o){const d=this.getViewLineInfo(o.lineNumber);return this.modelLineProjections[d.modelLineNumber-1].getInjectedTextAt(d.modelLineWrappedLineIdx,o.column)}normalizePosition(o,d){const l=this.getViewLineInfo(o.lineNumber);return this.modelLineProjections[l.modelLineNumber-1].normalizePosition(l.modelLineWrappedLineIdx,o,d)}getLineIndentColumn(o){const d=this.getViewLineInfo(o);return d.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(d.modelLineNumber):0}}e.ViewModelLinesFromProjectedModel=i;function n(c){if(c.length===0)return[];const o=c.slice();o.sort(y.Range.compareRangesUsingStarts);const d=[];let l=o[0].startLineNumber,p=o[0].endLineNumber;for(let m=1,v=o.length;mp+1?(d.push(new y.Range(l,1,p,1)),l=b.startLineNumber,p=b.endLineNumber):b.endLineNumber>p&&(p=b.endLineNumber)}return d.push(new y.Range(l,1,p,1)),d}class t{constructor(o,d){this.modelLineNumber=o,this.modelLineWrappedLineIdx=d}}class a{constructor(o,d){this.modelRange=o,this.viewLines=d}}class u{constructor(o){this._lines=o}convertViewPositionToModelPosition(o){return this._lines.convertViewPositionToModelPosition(o.lineNumber,o.column)}convertViewRangeToModelRange(o){return this._lines.convertViewRangeToModelRange(o)}validateViewPosition(o,d){return this._lines.validateViewPosition(o.lineNumber,o.column,d)}validateViewRange(o,d){return this._lines.validateViewRange(o,d)}convertModelPositionToViewPosition(o,d,l,p){return this._lines.convertModelPositionToViewPosition(o.lineNumber,o.column,d,l,p)}convertModelRangeToViewRange(o,d){return this._lines.convertModelRangeToViewRange(o,d)}modelPositionIsVisible(o){return this._lines.modelPositionIsVisible(o.lineNumber,o.column)}getModelLineViewLineCount(o){return this._lines.getModelLineViewLineCount(o)}getViewLineNumberOfModelPosition(o,d){return this._lines.getViewLineNumberOfModelPosition(o,d)}}class h{constructor(o){this.model=o}dispose(){}createCoordinatesConverter(){return new r(this)}getHiddenAreas(){return[]}setHiddenAreas(o){return!1}setTabSize(o){return!1}setWrappingSettings(o,d,l,p){return!1}createLineBreaksComputer(){const o=[];return{addRequest:(d,l,p)=>{o.push(null)},finalize:()=>o}}onModelFlushed(){}onModelLinesDeleted(o,d,l){return new _.ViewLinesDeletedEvent(d,l)}onModelLinesInserted(o,d,l,p){return new _.ViewLinesInsertedEvent(d,l)}onModelLineChanged(o,d,l){return[!1,new _.ViewLinesChangedEvent(d,1),null,null]}acceptVersionId(o){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(o,d,l){return{startLineNumber:o,endLineNumber:o,indent:0}}getViewLinesBracketGuides(o,d,l){return new Array(d-o+1).fill([])}getViewLinesIndentGuides(o,d){const l=d-o+1,p=new Array(l);for(let m=0;md)}getModelLineViewLineCount(o){return 1}getViewLineNumberOfModelPosition(o,d){return o}}}),define(ne[873],se([1,0,14,13,38,2,17,11,36,774,74,12,5,111,29,78,326,211,536,328,67,325,213,872]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewModel=void 0;const m=!0;class v extends D.Disposable{constructor(T,A,N,F,O,W,U,j,R){if(super(),this.languageConfigurationService=U,this._themeService=j,this._attachedView=R,this.hiddenAreasModel=new E,this.previousHiddenAreas=[],this._editorId=T,this._configuration=A,this.model=N,this._eventDispatcher=new l.ViewModelEventDispatcher,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new k.RunOnceScheduler(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=b.create(this.model),m&&this.model.isTooLargeForTokenization())this._lines=new p.ViewModelLinesFromModelAsIs(this.model);else{const K=this._configuration.options,G=K.get(49),Z=K.get(136),J=K.get(143),X=K.get(135),H=K.get(127);this._lines=new p.ViewModelLinesFromProjectedModel(this._editorId,this.model,F,O,G,this.model.getOptions().tabSize,Z,J.wrappingColumn,X,H)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new g.CursorsController(N,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new r.ViewLayout(this._configuration,this.getLineCount(),W)),this._register(this.viewLayout.onDidScroll(K=>{K.scrollTopChanged&&this._handleVisibleLinesChanged(),K.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new h.ViewScrollChangedEvent(K)),this._eventDispatcher.emitOutgoingEvent(new l.ScrollChangedEvent(K.oldScrollWidth,K.oldScrollLeft,K.oldScrollHeight,K.oldScrollTop,K.scrollWidth,K.scrollLeft,K.scrollHeight,K.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(K=>{this._eventDispatcher.emitOutgoingEvent(K)})),this._decorations=new d.ViewModelDecorations(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(K=>{try{const G=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(G,K)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(c.MinimapTokensColorTracker.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new h.ViewTokensColorsChangedEvent)})),this._register(this._themeService.onDidColorThemeChange(K=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new h.ViewThemeChangedEvent(K))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(T){this._eventDispatcher.addViewEventHandler(T)}removeViewEventHandler(T){this._eventDispatcher.removeViewEventHandler(T)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const T=this.viewLayout.getLinesViewportData(),A=new i.Range(T.startLineNumber,this.getLineMinColumn(T.startLineNumber),T.endLineNumber,this.getLineMaxColumn(T.endLineNumber));return this._toModelVisibleRanges(A)}visibleLinesStabilized(){const T=this.getModelVisibleRanges();this._attachedView.setVisibleLines(T,!0)}_handleVisibleLinesChanged(){const T=this.getModelVisibleRanges();this._attachedView.setVisibleLines(T,!1)}setHasFocus(T){this._hasFocus=T,this._cursor.setHasFocus(T),this._eventDispatcher.emitSingleViewEvent(new h.ViewFocusChangedEvent(T)),this._eventDispatcher.emitOutgoingEvent(new l.FocusChangedEvent(!T,T))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new h.ViewCompositionStartEvent)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new h.ViewCompositionEndEvent)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const T=new s.Position(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),A=this.coordinatesConverter.convertViewPositionToModelPosition(T);return new P(A,this._viewportStart.startLineDelta)}return new P(null,0)}_onConfigurationChanged(T,A){const N=this._captureStableViewport(),F=this._configuration.options,O=F.get(49),W=F.get(136),U=F.get(143),j=F.get(135),R=F.get(127);this._lines.setWrappingSettings(O,W,U.wrappingColumn,j,R)&&(T.emitViewEvent(new h.ViewFlushedEvent),T.emitViewEvent(new h.ViewLineMappingChangedEvent),T.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(T),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),A.hasChanged(89)&&(this._decorations.reset(),T.emitViewEvent(new h.ViewDecorationsChangedEvent(null))),T.emitViewEvent(new h.ViewConfigurationChangedEvent(A)),this.viewLayout.onConfigurationChanged(A),N.recoverViewportStart(this.coordinatesConverter,this.viewLayout),C.CursorConfiguration.shouldRecreate(A)&&(this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(T=>{try{const N=this._eventDispatcher.beginEmitViewEvents();let F=!1,O=!1;const W=T instanceof n.InternalModelContentChangeEvent?T.rawContentChangedEvent.changes:T.changes,U=T instanceof n.InternalModelContentChangeEvent?T.rawContentChangedEvent.versionId:null,j=this._lines.createLineBreaksComputer();for(const G of W)switch(G.changeType){case 4:{for(let Z=0;Z!H.ownerId||H.ownerId===this._editorId)),j.addRequest(J,X,null)}break}case 2:{let Z=null;G.injectedText&&(Z=G.injectedText.filter(J=>!J.ownerId||J.ownerId===this._editorId)),j.addRequest(G.detail,Z,null);break}}const R=j.finalize(),K=new L.ArrayQueue(R);for(const G of W)switch(G.changeType){case 1:{this._lines.onModelFlushed(),N.emitViewEvent(new h.ViewFlushedEvent),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),F=!0;break}case 3:{const Z=this._lines.onModelLinesDeleted(U,G.fromLineNumber,G.toLineNumber);Z!==null&&(N.emitViewEvent(Z),this.viewLayout.onLinesDeleted(Z.fromLineNumber,Z.toLineNumber)),F=!0;break}case 4:{const Z=K.takeCount(G.detail.length),J=this._lines.onModelLinesInserted(U,G.fromLineNumber,G.toLineNumber,Z);J!==null&&(N.emitViewEvent(J),this.viewLayout.onLinesInserted(J.fromLineNumber,J.toLineNumber)),F=!0;break}case 2:{const Z=K.dequeue(),[J,X,H,B]=this._lines.onModelLineChanged(U,G.lineNumber,Z);O=J,X&&N.emitViewEvent(X),H&&(N.emitViewEvent(H),this.viewLayout.onLinesInserted(H.fromLineNumber,H.toLineNumber)),B&&(N.emitViewEvent(B),this.viewLayout.onLinesDeleted(B.fromLineNumber,B.toLineNumber));break}case 5:break}U!==null&&this._lines.acceptVersionId(U),this.viewLayout.onHeightMaybeChanged(),!F&&O&&(N.emitViewEvent(new h.ViewLineMappingChangedEvent),N.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(N),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const A=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&A){const N=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(N){const F=this.coordinatesConverter.convertModelPositionToViewPosition(N.getStartPosition()),O=this.viewLayout.getVerticalOffsetForLineNumber(F.lineNumber);this.viewLayout.setScrollPosition({scrollTop:O+this._viewportStart.startLineDelta},1)}}try{const N=this._eventDispatcher.beginEmitViewEvents();T instanceof n.InternalModelContentChangeEvent&&N.emitOutgoingEvent(new l.ModelContentChangedEvent(T.contentChangedEvent)),this._cursor.onModelContentChanged(N,T)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(T=>{const A=[];for(let N=0,F=T.ranges.length;N{this._eventDispatcher.emitSingleViewEvent(new h.ViewLanguageConfigurationEvent),this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelLanguageConfigurationChangedEvent(T))})),this._register(this.model.onDidChangeLanguage(T=>{this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelLanguageChangedEvent(T))})),this._register(this.model.onDidChangeOptions(T=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const A=this._eventDispatcher.beginEmitViewEvents();A.emitViewEvent(new h.ViewFlushedEvent),A.emitViewEvent(new h.ViewLineMappingChangedEvent),A.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(A),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelOptionsChangedEvent(T))})),this._register(this.model.onDidChangeDecorations(T=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new h.ViewDecorationsChangedEvent(T)),this._eventDispatcher.emitOutgoingEvent(new l.ModelDecorationsChangedEvent(T))}))}setHiddenAreas(T,A){this.hiddenAreasModel.setHiddenAreas(A,T);const N=this.hiddenAreasModel.getMergedRanges();if(N===this.previousHiddenAreas)return;this.previousHiddenAreas=N;const F=this._captureStableViewport();let O=!1;try{const W=this._eventDispatcher.beginEmitViewEvents();O=this._lines.setHiddenAreas(N),O&&(W.emitViewEvent(new h.ViewFlushedEvent),W.emitViewEvent(new h.ViewLineMappingChangedEvent),W.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(W),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged()),F.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),O&&this._eventDispatcher.emitOutgoingEvent(new l.HiddenAreasChangedEvent)}getVisibleRangesPlusViewportAboveBelow(){const T=this._configuration.options.get(142),A=this._configuration.options.get(65),N=Math.max(20,Math.round(T.height/A)),F=this.viewLayout.getLinesViewportData(),O=Math.max(1,F.completelyVisibleStartLineNumber-N),W=Math.min(this.getLineCount(),F.completelyVisibleEndLineNumber+N);return this._toModelVisibleRanges(new i.Range(O,this.getLineMinColumn(O),W,this.getLineMaxColumn(W)))}getVisibleRanges(){const T=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(T)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(T){const A=this.coordinatesConverter.convertViewRangeToModelRange(T),N=this._lines.getHiddenAreas();if(N.length===0)return[A];const F=[];let O=0,W=A.startLineNumber,U=A.startColumn;const j=A.endLineNumber,R=A.endColumn;for(let K=0,G=N.length;Kj||(W"u")return this._reduceRestoreStateCompatibility(T);const A=this.model.validatePosition(T.firstPosition),N=this.coordinatesConverter.convertModelPositionToViewPosition(A),F=this.viewLayout.getVerticalOffsetForLineNumber(N.lineNumber)-T.firstPositionDeltaTop;return{scrollLeft:T.scrollLeft,scrollTop:F}}_reduceRestoreStateCompatibility(T){return{scrollLeft:T.scrollLeft,scrollTop:T.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(T,A,N){this._viewportStart.update(this,T)}getActiveIndentGuide(T,A,N){return this._lines.getActiveIndentGuide(T,A,N)}getLinesIndentGuides(T,A){return this._lines.getViewLinesIndentGuides(T,A)}getBracketGuidesInRangeByLine(T,A,N,F){return this._lines.getViewLinesBracketGuides(T,A,N,F)}getLineContent(T){return this._lines.getViewLineContent(T)}getLineLength(T){return this._lines.getViewLineLength(T)}getLineMinColumn(T){return this._lines.getViewLineMinColumn(T)}getLineMaxColumn(T){return this._lines.getViewLineMaxColumn(T)}getLineFirstNonWhitespaceColumn(T){const A=f.firstNonWhitespaceIndex(this.getLineContent(T));return A===-1?0:A+1}getLineLastNonWhitespaceColumn(T){const A=f.lastNonWhitespaceIndex(this.getLineContent(T));return A===-1?0:A+2}getMinimapDecorationsInRange(T){return this._decorations.getMinimapDecorationsInRange(T)}getDecorationsInViewport(T){return this._decorations.getDecorationsViewportData(T).decorations}getInjectedTextAt(T){return this._lines.getInjectedTextAt(T)}getViewportViewLineRenderingData(T,A){const F=this._decorations.getDecorationsViewportData(T).inlineDecorations[A-T.startLineNumber];return this._getViewLineRenderingData(A,F)}getViewLineRenderingData(T){const A=this._decorations.getInlineDecorationsOnLine(T);return this._getViewLineRenderingData(T,A)}_getViewLineRenderingData(T,A){const N=this.model.mightContainRTL(),F=this.model.mightContainNonBasicASCII(),O=this.getTabSize(),W=this._lines.getViewLineData(T);return W.inlineDecorations&&(A=[...A,...W.inlineDecorations.map(U=>U.toInlineDecoration(T))]),new o.ViewLineRenderingData(W.minColumn,W.maxColumn,W.content,W.continuesWithWrappedLine,N,F,W.tokens,A,O,W.startVisibleColumn)}getViewLineData(T){return this._lines.getViewLineData(T)}getMinimapLinesRenderingData(T,A,N){const F=this._lines.getViewLinesData(T,A,N);return new o.MinimapLinesRenderingData(this.getTabSize(),F)}getAllOverviewRulerDecorations(T){const A=this.model.getOverviewRulerDecorations(this._editorId,(0,_.filterValidationDecorations)(this._configuration.options)),N=new w;for(const F of A){const O=F.options,W=O.overviewRuler;if(!W)continue;const U=W.position;if(U===0)continue;const j=W.getColor(T.value),R=this.coordinatesConverter.getViewLineNumberOfModelPosition(F.range.startLineNumber,F.range.startColumn),K=this.coordinatesConverter.getViewLineNumberOfModelPosition(F.range.endLineNumber,F.range.endColumn);N.accept(j,O.zIndex,R,K,U)}return N.asArray}_invalidateDecorationsColorCache(){const T=this.model.getOverviewRulerDecorations();for(const A of T){const N=A.options.overviewRuler;N?.invalidateCachedColor();const F=A.options.minimap;F?.invalidateCachedColor()}}getValueInRange(T,A){const N=this.coordinatesConverter.convertViewRangeToModelRange(T);return this.model.getValueInRange(N,A)}getValueLengthInRange(T,A){const N=this.coordinatesConverter.convertViewRangeToModelRange(T);return this.model.getValueLengthInRange(N,A)}modifyPosition(T,A){const N=this.coordinatesConverter.convertViewPositionToModelPosition(T);return this.model.modifyPosition(N,A)}deduceModelPositionRelativeToViewPosition(T,A,N){const F=this.coordinatesConverter.convertViewPositionToModelPosition(T);this.model.getEOL().length===2&&(A<0?A-=N:A+=N);const W=this.model.getOffsetAt(F)+A;return this.model.getPositionAt(W)}getPlainTextToCopy(T,A,N){const F=N?`\r -`:this.model.getEOL();T=T.slice(0),T.sort(i.Range.compareRangesUsingStarts);let O=!1,W=!1;for(const j of T)j.isEmpty()?O=!0:W=!0;if(!W){if(!A)return"";const j=T.map(K=>K.startLineNumber);let R="";for(let K=0;K0&&j[K-1]===j[K]||(R+=this.model.getLineContent(j[K])+F);return R}if(O&&A){const j=[];let R=0;for(const K of T){const G=K.startLineNumber;K.isEmpty()?G!==R&&j.push(this.model.getLineContent(G)):j.push(this.model.getValueInRange(K,N?2:0)),R=G}return j.length===1?j[0]:j}const U=[];for(const j of T)j.isEmpty()||U.push(this.model.getValueInRange(j,N?2:0));return U.length===1?U[0]:U}getRichTextToCopy(T,A){const N=this.model.getLanguageId();if(N===a.PLAINTEXT_LANGUAGE_ID||T.length!==1)return null;let F=T[0];if(F.isEmpty()){if(!A)return null;const K=F.startLineNumber;F=new i.Range(K,this.model.getLineMinColumn(K),K,this.model.getLineMaxColumn(K))}const O=this._configuration.options.get(49),W=this._getColorMap(),j=/[:;\\\/<>]/.test(O.fontFamily)||O.fontFamily===_.EDITOR_FONT_DEFAULTS.fontFamily;let R;return j?R=_.EDITOR_FONT_DEFAULTS.fontFamily:(R=O.fontFamily,R=R.replace(/"/g,"'"),/[,']/.test(R)||/[+ ]/.test(R)&&(R=`'${R}'`),R=`${R}, ${_.EDITOR_FONT_DEFAULTS.fontFamily}`),{mode:N,html:`
    `+this._getHTMLToCopy(F,W)+"
    "}}_getHTMLToCopy(T,A){const N=T.startLineNumber,F=T.startColumn,O=T.endLineNumber,W=T.endColumn,U=this.getTabSize();let j="";for(let R=N;R<=O;R++){const K=this.model.tokenization.getLineTokens(R),G=K.getLineContent(),Z=R===N?F-1:0,J=R===O?W-1:G.length;G===""?j+="
    ":j+=(0,u.tokenizeLineToHTML)(G,K.inflate(),A,Z,J,U,S.isWindows)}return j}_getColorMap(){const T=t.TokenizationRegistry.getColorMap(),A=["#000000"];if(T)for(let N=1,F=T.length;Nthis._cursor.setStates(F,T,A,N))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(T){this._cursor.setCursorColumnSelectData(T)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(T){this._cursor.setPrevEditOperationType(T)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(T,A,N=0){this._withViewEventsCollector(F=>this._cursor.setSelections(F,T,A,N))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(T){this._withViewEventsCollector(A=>this._cursor.restoreState(A,T))}_executeCursorEdit(T){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new l.ReadOnlyEditAttemptEvent);return}this._withViewEventsCollector(T)}executeEdits(T,A,N){this._executeCursorEdit(F=>this._cursor.executeEdits(F,T,A,N))}startComposition(){this._executeCursorEdit(T=>this._cursor.startComposition(T))}endComposition(T){this._executeCursorEdit(A=>this._cursor.endComposition(A,T))}type(T,A){this._executeCursorEdit(N=>this._cursor.type(N,T,A))}compositionType(T,A,N,F,O){this._executeCursorEdit(W=>this._cursor.compositionType(W,T,A,N,F,O))}paste(T,A,N,F){this._executeCursorEdit(O=>this._cursor.paste(O,T,A,N,F))}cut(T){this._executeCursorEdit(A=>this._cursor.cut(A,T))}executeCommand(T,A){this._executeCursorEdit(N=>this._cursor.executeCommand(N,T,A))}executeCommands(T,A){this._executeCursorEdit(N=>this._cursor.executeCommands(N,T,A))}revealPrimaryCursor(T,A,N=!1){this._withViewEventsCollector(F=>this._cursor.revealPrimary(F,T,N,0,A,0))}revealTopMostCursor(T){const A=this._cursor.getTopMostViewPosition(),N=new i.Range(A.lineNumber,A.column,A.lineNumber,A.column);this._withViewEventsCollector(F=>F.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,0,!0,0)))}revealBottomMostCursor(T){const A=this._cursor.getBottomMostViewPosition(),N=new i.Range(A.lineNumber,A.column,A.lineNumber,A.column);this._withViewEventsCollector(F=>F.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,0,!0,0)))}revealRange(T,A,N,F,O){this._withViewEventsCollector(W=>W.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,F,A,O)))}changeWhitespace(T){this.viewLayout.changeWhitespace(T)&&(this._eventDispatcher.emitSingleViewEvent(new h.ViewZonesChangedEvent),this._eventDispatcher.emitOutgoingEvent(new l.ViewZonesChangedEvent))}_withViewEventsCollector(T){try{const A=this._eventDispatcher.beginEmitViewEvents();return T(A)}finally{this._eventDispatcher.endEmitViewEvents()}}normalizePosition(T,A){return this._lines.normalizePosition(T,A)}getLineIndentColumn(T){return this._lines.getLineIndentColumn(T)}}e.ViewModel=v;class b{static create(T){const A=T._setTrackedRange(null,new i.Range(1,1,1,1),1);return new b(T,1,!1,A,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(T,A,N,F,O){this._model=T,this._viewLineNumber=A,this._isValid=N,this._modelTrackedRange=F,this._startLineDelta=O}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(T,A){const N=T.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(A,T.getLineMinColumn(A))),F=T.model._setTrackedRange(this._modelTrackedRange,new i.Range(N.lineNumber,N.column,N.lineNumber,N.column),1),O=T.viewLayout.getVerticalOffsetForLineNumber(A),W=T.viewLayout.getCurrentScrollTop();this._viewLineNumber=A,this._isValid=!0,this._modelTrackedRange=F,this._startLineDelta=W-O}invalidate(){this._isValid=!1}}class w{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(T,A,N,F,O){const W=this._asMap[T];if(W){const U=W.data,j=U[U.length-3],R=U[U.length-1];if(j===O&&R+1>=N){F>R&&(U[U.length-1]=F);return}U.push(O,N,F)}else{const U=new o.OverviewRulerDecorationsGroup(T,A,[O,N,F]);this._asMap[T]=U,this.asArray.push(U)}}}class E{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(T,A){const N=this.hiddenAreas.get(T);N&&M(N,A)||(this.hiddenAreas.set(T,A),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const T=Array.from(this.hiddenAreas.values()).reduce((A,N)=>I(A,N),[]);return M(this.ranges,T)?this.ranges:(this.ranges=T,this.ranges)}}function I(x,T){const A=[];let N=0,F=0;for(;N{this._onDidChangeConfiguration.fire(Fe);const _e=this._configuration.options;if(Fe.hasChanged(142)){const me=_e.get(142);this._onDidLayoutChange.fire(me)}})),this._contextKeyService=this._register(oe.createScoped(this._domElement)),this._notificationService=ve,this._codeEditorService=$,this._commandService=re,this._themeService=ge,this._register(new X(this,this._contextKeyService)),this._register(new H(this,this._contextKeyService,De)),this._instantiationService=ee.createChild(new E.ServiceCollection([b.IContextKeyService,this._contextKeyService])),this._modelData=null,this._focusTracker=new B(te),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let Me;Array.isArray(z.contributions)?Me=z.contributions:Me=g.EditorExtensionsRegistry.getEditorContributions(),this._contributions.initialize(this,Me,this._instantiationService);for(const Fe of g.EditorExtensionsRegistry.getEditorActions()){if(this._actions.has(Fe.id)){(0,y.onUnexpectedError)(new Error(`Cannot have two actions with the same id ${Fe.id}`));continue}const _e=new r.InternalEditorAction(Fe.id,Fe.label,Fe.alias,(ye=Fe.precondition)!==null&&ye!==void 0?ye:void 0,()=>this._instantiationService.invokeFunction(me=>Promise.resolve(Fe.runEditorCommand(me,this,null))),this._contextKeyService);this._actions.set(_e.id,_e)}const Pe=()=>!this._configuration.options.get(89)&&this._configuration.options.get(35).enabled;this._register(new k.DragAndDropObserver(this._domElement,{onDragEnter:()=>{},onDragOver:Fe=>{if(!Pe())return;const _e=this.getTargetAtClientPoint(Fe.clientX,Fe.clientY);_e?.position&&this.showDropIndicatorAt(_e.position)},onDrop:Fe=>we(this,void 0,void 0,function*(){if(!Pe()||(this.removeDropIndicator(),!Fe.dataTransfer))return;const _e=this.getTargetAtClientPoint(Fe.clientX,Fe.clientY);_e?.position&&this._onDropIntoEditor.fire({position:_e.position,event:Fe})}),onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(te){var q;(q=this._modelData)===null||q===void 0||q.view.writeScreenReaderContent(te)}_createConfiguration(te,q,z){return new _.EditorConfiguration(te,q,this._domElement,z)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return c.EditorType.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(te){return this._instantiationService.invokeFunction(te)}updateOptions(te){this._configuration.updateOptions(te||{})}getOptions(){return this._configuration.options}getOption(te){return this._configuration.options.get(te)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(te){return this._modelData?A.WordOperations.getWordAtPosition(this._modelData.model,this._configuration.options.get(128),te):null}getValue(te=null){if(!this._modelData)return"";const q=!!(te&&te.preserveBOM);let z=0;return te&&te.lineEnding&&te.lineEnding===` -`?z=1:te&&te.lineEnding&&te.lineEnding===`\r -`&&(z=2),this._modelData.model.getValue(z,q)}setValue(te){this._modelData&&this._modelData.model.setValue(te)}getModel(){return this._modelData?this._modelData.model:null}setModel(te=null){const q=te;if(this._modelData===null&&q===null||this._modelData&&this._modelData.model===q)return;const z=this.hasTextFocus(),ee=this._detachModel();this._attachModel(q),z&&this.hasModel()&&this.focus();const $={oldModelUrl:ee?ee.uri:null,newModelUrl:q?q.uri:null};this._removeDecorationTypes(),this._onDidChangeModel.fire($),this._postDetachModelCleanup(ee),this._contributions.onAfterModelAttached()}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const te in this._decorationTypeSubtypes){const q=this._decorationTypeSubtypes[te];for(const z in q)this._removeDecorationType(te+"-"+z)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(te,q,z,ee){const $=te.model.validatePosition({lineNumber:q,column:z}),re=te.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return te.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(re.lineNumber,ee)}getTopForLineNumber(te,q=!1){return this._modelData?j._getVerticalOffsetForPosition(this._modelData,te,1,q):-1}getTopForPosition(te,q){return this._modelData?j._getVerticalOffsetForPosition(this._modelData,te,q,!1):-1}static _getVerticalOffsetForPosition(te,q,z,ee=!1){const $=te.model.validatePosition({lineNumber:q,column:z}),re=te.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return te.viewModel.viewLayout.getVerticalOffsetForLineNumber(re.lineNumber,ee)}getBottomForLineNumber(te,q=!1){return this._modelData?j._getVerticalOffsetAfterPosition(this._modelData,te,1,q):-1}setHiddenAreas(te,q){var z;(z=this._modelData)===null||z===void 0||z.viewModel.setHiddenAreas(te.map(ee=>u.Range.lift(ee)),q)}getVisibleColumnFromPosition(te){if(!this._modelData)return te.column;const q=this._modelData.model.validatePosition(te),z=this._modelData.model.getOptions().tabSize;return t.CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(q.lineNumber),q.column,z)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(te,q="api"){if(this._modelData){if(!a.Position.isIPosition(te))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(q,[{selectionStartLineNumber:te.lineNumber,selectionStartColumn:te.column,positionLineNumber:te.lineNumber,positionColumn:te.column}])}}_sendRevealRange(te,q,z,ee){if(!this._modelData)return;if(!u.Range.isIRange(te))throw new Error("Invalid arguments");const $=this._modelData.model.validateRange(te),re=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange($);this._modelData.viewModel.revealRange("api",z,re,q,ee)}revealLine(te,q=0){this._revealLine(te,0,q)}revealLineInCenter(te,q=0){this._revealLine(te,1,q)}revealLineInCenterIfOutsideViewport(te,q=0){this._revealLine(te,2,q)}revealLineNearTop(te,q=0){this._revealLine(te,5,q)}_revealLine(te,q,z){if(typeof te!="number")throw new Error("Invalid arguments");this._sendRevealRange(new u.Range(te,1,te,1),q,!1,z)}revealPosition(te,q=0){this._revealPosition(te,0,!0,q)}revealPositionInCenter(te,q=0){this._revealPosition(te,1,!0,q)}revealPositionInCenterIfOutsideViewport(te,q=0){this._revealPosition(te,2,!0,q)}revealPositionNearTop(te,q=0){this._revealPosition(te,5,!0,q)}_revealPosition(te,q,z,ee){if(!a.Position.isIPosition(te))throw new Error("Invalid arguments");this._sendRevealRange(new u.Range(te.lineNumber,te.column,te.lineNumber,te.column),q,z,ee)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(te,q="api"){const z=h.Selection.isISelection(te),ee=u.Range.isIRange(te);if(!z&&!ee)throw new Error("Invalid arguments");if(z)this._setSelectionImpl(te,q);else if(ee){const $={selectionStartLineNumber:te.startLineNumber,selectionStartColumn:te.startColumn,positionLineNumber:te.endLineNumber,positionColumn:te.endColumn};this._setSelectionImpl($,q)}}_setSelectionImpl(te,q){if(!this._modelData)return;const z=new h.Selection(te.selectionStartLineNumber,te.selectionStartColumn,te.positionLineNumber,te.positionColumn);this._modelData.viewModel.setSelections(q,[z])}revealLines(te,q,z=0){this._revealLines(te,q,0,z)}revealLinesInCenter(te,q,z=0){this._revealLines(te,q,1,z)}revealLinesInCenterIfOutsideViewport(te,q,z=0){this._revealLines(te,q,2,z)}revealLinesNearTop(te,q,z=0){this._revealLines(te,q,5,z)}_revealLines(te,q,z,ee){if(typeof te!="number"||typeof q!="number")throw new Error("Invalid arguments");this._sendRevealRange(new u.Range(te,1,q,1),z,!1,ee)}revealRange(te,q=0,z=!1,ee=!0){this._revealRange(te,z?1:0,ee,q)}revealRangeInCenter(te,q=0){this._revealRange(te,1,!0,q)}revealRangeInCenterIfOutsideViewport(te,q=0){this._revealRange(te,2,!0,q)}revealRangeNearTop(te,q=0){this._revealRange(te,5,!0,q)}revealRangeNearTopIfOutsideViewport(te,q=0){this._revealRange(te,6,!0,q)}revealRangeAtTop(te,q=0){this._revealRange(te,3,!0,q)}_revealRange(te,q,z,ee){if(!u.Range.isIRange(te))throw new Error("Invalid arguments");this._sendRevealRange(u.Range.lift(te),q,z,ee)}setSelections(te,q="api",z=0){if(this._modelData){if(!te||te.length===0)throw new Error("Invalid arguments");for(let ee=0,$=te.length;ee<$;ee++)if(!h.Selection.isISelection(te[ee]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(q,te,z)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(te,q=1){if(this._modelData){if(typeof te!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:te},q)}}setScrollTop(te,q=1){if(this._modelData){if(typeof te!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:te},q)}}setScrollPosition(te,q=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(te,q)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const te=this._contributions.saveViewState(),q=this._modelData.viewModel.saveCursorState(),z=this._modelData.viewModel.saveState();return{cursorState:q,viewState:z,contributionsState:te}}restoreViewState(te){if(!this._modelData||!this._modelData.hasRealView)return;const q=te;if(q&&q.cursorState&&q.viewState){const z=q.cursorState;Array.isArray(z)?z.length>0&&this._modelData.viewModel.restoreCursorState(z):this._modelData.viewModel.restoreCursorState([z]),this._contributions.restoreViewState(q.contributionsState||{});const ee=this._modelData.viewModel.reduceRestoreState(q.viewState);this._modelData.view.restoreState(ee)}}handleInitialized(){var te;(te=this._getViewModel())===null||te===void 0||te.visibleLinesStabilized()}getContribution(te){return this._contributions.get(te)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let te=this.getActions();return te=te.filter(q=>q.isSupported()),te}getAction(te){return this._actions.get(te)||null}trigger(te,q,z){switch(z=z||{},q){case"compositionStart":this._startComposition();return;case"compositionEnd":this._endComposition(te);return;case"type":{const $=z;this._type(te,$.text||"");return}case"replacePreviousChar":{const $=z;this._compositionType(te,$.text||"",$.replaceCharCnt||0,0,0);return}case"compositionType":{const $=z;this._compositionType(te,$.text||"",$.replacePrevCharCnt||0,$.replaceNextCharCnt||0,$.positionDelta||0);return}case"paste":{const $=z;this._paste(te,$.text||"",$.pasteOnNewLine||!1,$.multicursorText||null,$.mode||null);return}case"cut":this._cut(te);return}const ee=this.getAction(q);if(ee){Promise.resolve(ee.run(z)).then(void 0,y.onUnexpectedError);return}this._modelData&&(this._triggerEditorCommand(te,q,z)||this._triggerCommand(q,z))}_triggerCommand(te,q){this._commandService.executeCommand(te,q)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(te){this._modelData&&(this._modelData.viewModel.endComposition(te),this._onDidCompositionEnd.fire())}_type(te,q){!this._modelData||q.length===0||(te==="keyboard"&&this._onWillType.fire(q),this._modelData.viewModel.type(q,te),te==="keyboard"&&this._onDidType.fire(q))}_compositionType(te,q,z,ee,$){this._modelData&&this._modelData.viewModel.compositionType(q,z,ee,$,te)}_paste(te,q,z,ee,$){if(!this._modelData||q.length===0)return;const re=this._modelData.viewModel,oe=re.getSelection().getStartPosition();re.paste(q,z,ee,te);const ge=re.getSelection().getStartPosition();te==="keyboard"&&this._onDidPaste.fire({range:new u.Range(oe.lineNumber,oe.column,ge.lineNumber,ge.column),languageId:$})}_cut(te){this._modelData&&this._modelData.viewModel.cut(te)}_triggerEditorCommand(te,q,z){const ee=g.EditorExtensionsRegistry.getEditorCommand(q);return ee?(z=z||{},z.source=te,this._instantiationService.invokeFunction($=>{Promise.resolve(ee.runEditorCommand($,this,z)).then(void 0,y.onUnexpectedError)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(89)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(89)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(te,q,z){if(!this._modelData||this._configuration.options.get(89))return!1;let ee;return z?Array.isArray(z)?ee=()=>z:ee=z:ee=()=>null,this._modelData.viewModel.executeEdits(te,q,ee),!0}executeCommand(te,q){this._modelData&&this._modelData.viewModel.executeCommand(q,te)}executeCommands(te,q){this._modelData&&this._modelData.viewModel.executeCommands(q,te)}createDecorationsCollection(te){return new V(this,te)}changeDecorations(te){return this._modelData?this._modelData.model.changeDecorations(te,this._id):null}getLineDecorations(te){return this._modelData?this._modelData.model.getLineDecorations(te,this._id,(0,n.filterValidationDecorations)(this._configuration.options)):null}getDecorationsInRange(te){return this._modelData?this._modelData.model.getDecorationsInRange(te,this._id,(0,n.filterValidationDecorations)(this._configuration.options)):null}deltaDecorations(te,q){return this._modelData?te.length===0&&q.length===0?te:this._modelData.model.deltaDecorations(te,q,this._id):[]}removeDecorations(te){!this._modelData||te.length===0||this._modelData.model.changeDecorations(q=>{q.deltaDecorations(te,[])})}removeDecorationsByType(te){const q=this._decorationTypeKeysToIds[te];q&&this.deltaDecorations(q,[]),this._decorationTypeKeysToIds.hasOwnProperty(te)&&delete this._decorationTypeKeysToIds[te],this._decorationTypeSubtypes.hasOwnProperty(te)&&delete this._decorationTypeSubtypes[te]}getLayoutInfo(){return this._configuration.options.get(142)}createOverviewRuler(te){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(te)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(te)}delegateScrollFromMouseWheelEvent(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(te)}layout(te){this._configuration.observeContainer(te),this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(te){const q={widget:te,position:te.getPosition()};this._contentWidgets.hasOwnProperty(te.getId())&&console.warn("Overwriting a content widget with the same id."),this._contentWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(q)}layoutContentWidget(te){const q=te.getId();if(this._contentWidgets.hasOwnProperty(q)){const z=this._contentWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(z)}}removeContentWidget(te){const q=te.getId();if(this._contentWidgets.hasOwnProperty(q)){const z=this._contentWidgets[q];delete this._contentWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(z)}}addOverlayWidget(te){const q={widget:te,position:te.getPosition()};this._overlayWidgets.hasOwnProperty(te.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(q)}layoutOverlayWidget(te){const q=te.getId();if(this._overlayWidgets.hasOwnProperty(q)){const z=this._overlayWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(z)}}removeOverlayWidget(te){const q=te.getId();if(this._overlayWidgets.hasOwnProperty(q)){const z=this._overlayWidgets[q];delete this._overlayWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(z)}}addGlyphMarginWidget(te){const q={widget:te,position:te.getPosition()};this._glyphMarginWidgets.hasOwnProperty(te.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(q)}layoutGlyphMarginWidget(te){const q=te.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const z=this._glyphMarginWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(z)}}removeGlyphMarginWidget(te){const q=te.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const z=this._glyphMarginWidgets[q];delete this._glyphMarginWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(z)}}changeViewZones(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(te)}getTargetAtClientPoint(te,q){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(te,q)}getScrolledVisiblePosition(te){if(!this._modelData||!this._modelData.hasRealView)return null;const q=this._modelData.model.validatePosition(te),z=this._configuration.options,ee=z.get(142),$=j._getVerticalOffsetForPosition(this._modelData,q.lineNumber,q.column)-this.getScrollTop(),re=this._modelData.view.getOffsetForColumn(q.lineNumber,q.column)+ee.glyphMarginWidth+ee.lineNumbersWidth+ee.decorationsWidth-this.getScrollLeft();return{top:$,left:re,height:z.get(65)}}getOffsetForColumn(te,q){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(te,q)}render(te=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.view.render(!0,te)}setAriaOptions(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(te)}applyFontInfo(te){(0,F.applyFontInfo)(te,this._configuration.options.get(49))}setBanner(te,q){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),this._bannerDomNode=te,this._configuration.setReservedHeight(te?q:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(te){if(!te){this._modelData=null;return}const q=[];this._domElement.setAttribute("data-mode-id",te.getLanguageId()),this._configuration.setIsDominatedByLongLines(te.isDominatedByLongLines()),this._configuration.setModelLineCount(te.getLineCount());const z=te.onBeforeAttached(),ee=new m.ViewModel(this._id,this._configuration,te,T.DOMLineBreaksComputerFactory.create(),x.MonospaceLineBreaksComputerFactory.create(this._configuration.options),oe=>k.scheduleAtNextAnimationFrame(oe),this.languageConfigurationService,this._themeService,z);q.push(te.onWillDispose(()=>this.setModel(null))),q.push(ee.onEvent(oe=>{switch(oe.kind){case 0:this._onDidContentSizeChange.fire(oe);break;case 1:this._editorTextFocus.setValue(oe.hasFocus);break;case 2:this._onDidScrollChange.fire(oe);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(oe.reachedMaxCursorCount){const Le=this.getOption(78),De=L.localize(0,null,Le);this._notificationService.prompt(I.Severity.Warning,De,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:L.localize(1,null),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const ge=[];for(let Le=0,De=oe.selections.length;Le{this._paste("keyboard",$,re,oe,ge)},type:$=>{this._type("keyboard",$)},compositionType:($,re,oe,ge)=>{this._compositionType("keyboard",$,re,oe,ge)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:q={paste:($,re,oe,ge)=>{const ve={text:$,pasteOnNewLine:re,multicursorText:oe,mode:ge};this._commandService.executeCommand("paste",ve)},type:$=>{const re={text:$};this._commandService.executeCommand("type",re)},compositionType:($,re,oe,ge)=>{if(oe||ge){const ve={text:$,replacePrevCharCnt:re,replaceNextCharCnt:oe,positionDelta:ge};this._commandService.executeCommand("compositionType",ve)}else{const ve={text:$,replaceCharCnt:re};this._commandService.executeCommand("replacePreviousChar",ve)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const z=new i.ViewUserInputEvents(te.coordinatesConverter);return z.onKeyDown=$=>this._onKeyDown.fire($),z.onKeyUp=$=>this._onKeyUp.fire($),z.onContextMenu=$=>this._onContextMenu.fire($),z.onMouseMove=$=>this._onMouseMove.fire($),z.onMouseLeave=$=>this._onMouseLeave.fire($),z.onMouseDown=$=>this._onMouseDown.fire($),z.onMouseUp=$=>this._onMouseUp.fire($),z.onMouseDrag=$=>this._onMouseDrag.fire($),z.onMouseDrop=$=>this._onMouseDrop.fire($),z.onMouseDropCanceled=$=>this._onMouseDropCanceled.fire($),z.onMouseWheel=$=>this._onMouseWheel.fire($),[new s.View(q,this._configuration,this._themeService.getColorTheme(),te,z,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(te){te?.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){if(!this._modelData)return null;const te=this._modelData.model,q=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),q&&this._domElement.contains(q)&&this._domElement.removeChild(q),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),te}_removeDecorationType(te){this._codeEditorService.removeDecorationType(te)}hasModel(){return this._modelData!==null}showDropIndicatorAt(te){const q=[{range:new u.Range(te.lineNumber,te.column,te.lineNumber,te.column),options:j.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(q),this.revealPosition(te,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(te,q){this._contextKeyService.createKey(te,q)}};e.CodeEditorWidget=G,G.dropIntoEditorDecorationOptions=d.ModelDecorationOptions.register({description:"workbench-dnd-target",className:"dnd-target"}),e.CodeEditorWidget=G=j=ke([fe(3,w.IInstantiationService),fe(4,C.ICodeEditorService),fe(5,v.ICommandService),fe(6,b.IContextKeyService),fe(7,M.IThemeService),fe(8,I.INotificationService),fe(9,P.IAccessibilityService),fe(10,N.ILanguageConfigurationService),fe(11,O.ILanguageFeaturesService)],G);class Z extends S.Disposable{constructor(te){super(),this._emitterOptions=te,this._onDidChangeToTrue=this._register(new D.Emitter(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new D.Emitter(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(te){const q=te?2:1;this._value!==q&&(this._value=q,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}e.BooleanEventEmitter=Z;class J extends D.Emitter{constructor(te,q){super({deliveryQueue:q}),this._contributions=te}fire(te){this._contributions.onBeforeInteractionEvent(),super.fire(te)}}class X extends S.Disposable{constructor(te,q){super(),this._editor=te,q.createKey("editorId",te.getId()),this._editorSimpleInput=o.EditorContextKeys.editorSimpleInput.bindTo(q),this._editorFocus=o.EditorContextKeys.focus.bindTo(q),this._textInputFocus=o.EditorContextKeys.textInputFocus.bindTo(q),this._editorTextFocus=o.EditorContextKeys.editorTextFocus.bindTo(q),this._editorTabMovesFocus=o.EditorContextKeys.tabMovesFocus.bindTo(q),this._editorReadonly=o.EditorContextKeys.readOnly.bindTo(q),this._inDiffEditor=o.EditorContextKeys.inDiffEditor.bindTo(q),this._editorColumnSelection=o.EditorContextKeys.columnSelection.bindTo(q),this._hasMultipleSelections=o.EditorContextKeys.hasMultipleSelections.bindTo(q),this._hasNonEmptySelection=o.EditorContextKeys.hasNonEmptySelection.bindTo(q),this._canUndo=o.EditorContextKeys.canUndo.bindTo(q),this._canRedo=o.EditorContextKeys.canRedo.bindTo(q),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromConfig())),this._register(this._editor.onDidChangeCursorSelection(()=>this._updateFromSelection())),this._register(this._editor.onDidFocusEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidFocusEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidChangeModel(()=>this._updateFromModel())),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromModel())),this._register(U.TabFocus.onDidChangeTabFocus(()=>this._editorTabMovesFocus.set(U.TabFocus.getTabFocusMode("editorFocus")))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const te=this._editor.getOptions();this._editorTabMovesFocus.set(U.TabFocus.getTabFocusMode("editorFocus")),this._editorReadonly.set(te.get(89)),this._inDiffEditor.set(te.get(60)),this._editorColumnSelection.set(te.get(21))}_updateFromSelection(){const te=this._editor.getSelections();te?(this._hasMultipleSelections.set(te.length>1),this._hasNonEmptySelection.set(te.some(q=>!q.isEmpty()))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const te=this._editor.getModel();this._canUndo.set(!!(te&&te.canUndo())),this._canRedo.set(!!(te&&te.canRedo()))}}class H extends S.Disposable{constructor(te,q,z){super(),this._editor=te,this._contextKeyService=q,this._languageFeaturesService=z,this._langId=o.EditorContextKeys.languageId.bindTo(q),this._hasCompletionItemProvider=o.EditorContextKeys.hasCompletionItemProvider.bindTo(q),this._hasCodeActionsProvider=o.EditorContextKeys.hasCodeActionsProvider.bindTo(q),this._hasCodeLensProvider=o.EditorContextKeys.hasCodeLensProvider.bindTo(q),this._hasDefinitionProvider=o.EditorContextKeys.hasDefinitionProvider.bindTo(q),this._hasDeclarationProvider=o.EditorContextKeys.hasDeclarationProvider.bindTo(q),this._hasImplementationProvider=o.EditorContextKeys.hasImplementationProvider.bindTo(q),this._hasTypeDefinitionProvider=o.EditorContextKeys.hasTypeDefinitionProvider.bindTo(q),this._hasHoverProvider=o.EditorContextKeys.hasHoverProvider.bindTo(q),this._hasDocumentHighlightProvider=o.EditorContextKeys.hasDocumentHighlightProvider.bindTo(q),this._hasDocumentSymbolProvider=o.EditorContextKeys.hasDocumentSymbolProvider.bindTo(q),this._hasReferenceProvider=o.EditorContextKeys.hasReferenceProvider.bindTo(q),this._hasRenameProvider=o.EditorContextKeys.hasRenameProvider.bindTo(q),this._hasSignatureHelpProvider=o.EditorContextKeys.hasSignatureHelpProvider.bindTo(q),this._hasInlayHintsProvider=o.EditorContextKeys.hasInlayHintsProvider.bindTo(q),this._hasDocumentFormattingProvider=o.EditorContextKeys.hasDocumentFormattingProvider.bindTo(q),this._hasDocumentSelectionFormattingProvider=o.EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(q),this._hasMultipleDocumentFormattingProvider=o.EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(q),this._hasMultipleDocumentSelectionFormattingProvider=o.EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(q),this._isInWalkThrough=o.EditorContextKeys.isInWalkThroughSnippet.bindTo(q);const ee=()=>this._update();this._register(te.onDidChangeModel(ee)),this._register(te.onDidChangeModelLanguage(ee)),this._register(z.completionProvider.onDidChange(ee)),this._register(z.codeActionProvider.onDidChange(ee)),this._register(z.codeLensProvider.onDidChange(ee)),this._register(z.definitionProvider.onDidChange(ee)),this._register(z.declarationProvider.onDidChange(ee)),this._register(z.implementationProvider.onDidChange(ee)),this._register(z.typeDefinitionProvider.onDidChange(ee)),this._register(z.hoverProvider.onDidChange(ee)),this._register(z.documentHighlightProvider.onDidChange(ee)),this._register(z.documentSymbolProvider.onDidChange(ee)),this._register(z.referenceProvider.onDidChange(ee)),this._register(z.renameProvider.onDidChange(ee)),this._register(z.documentFormattingEditProvider.onDidChange(ee)),this._register(z.documentRangeFormattingEditProvider.onDidChange(ee)),this._register(z.signatureHelpProvider.onDidChange(ee)),this._register(z.inlayHintsProvider.onDidChange(ee)),ee()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents(()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInWalkThrough.reset()})}_update(){const te=this._editor.getModel();if(!te){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(te.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(te)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(te)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(te)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(te)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(te)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(te)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(te)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(te)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(te)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(te)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(te)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(te)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(te)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(te)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(te)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(te)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(te)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(te).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(te).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(te).length>1),this._isInWalkThrough.set(te.uri.scheme===f.Schemas.walkThroughSnippet)})}}e.EditorModeContext=H;class B extends S.Disposable{constructor(te){super(),this._onChange=this._register(new D.Emitter),this.onChange=this._onChange.event,this._hasFocus=!1,this._domFocusTracker=this._register(k.trackFocus(te)),this._register(this._domFocusTracker.onDidFocus(()=>{this._hasFocus=!0,this._onChange.fire(void 0)})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasFocus=!1,this._onChange.fire(void 0)}))}hasFocus(){return this._hasFocus}}class V{get length(){return this._decorationIds.length}constructor(te,q){this._editor=te,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(q)&&q.length>0&&this.set(q)}onDidChange(te,q,z){return this._editor.onDidChangeModelDecorations(ee=>{this._isChangingDecorations||te.call(q,ee)},z)}getRange(te){return!this._editor.hasModel()||te>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[te])}getRanges(){if(!this._editor.hasModel())return[];const te=this._editor.getModel(),q=[];for(const z of this._decorationIds){const ee=te.getDecorationRange(z);ee&&q.push(ee)}return q}has(te){return this._decorationIds.includes(te.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(te){try{this._isChangingDecorations=!0,this._editor.changeDecorations(q=>{this._decorationIds=q.deltaDecorations(this._decorationIds,te)})}finally{this._isChangingDecorations=!1}return this._decorationIds}}const Y=encodeURIComponent("");function ae(ue){return Y+encodeURIComponent(ue.toString())+ie}const ce=encodeURIComponent('');function he(ue){return ce+encodeURIComponent(ue.toString())+de}(0,M.registerThemingParticipant)((ue,te)=>{const q=ue.getColor(p.editorErrorForeground);q&&te.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${ae(q)}") repeat-x bottom left; }`);const z=ue.getColor(p.editorWarningForeground);z&&te.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${ae(z)}") repeat-x bottom left; }`);const ee=ue.getColor(p.editorInfoForeground);ee&&te.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${ae(ee)}") repeat-x bottom left; }`);const $=ue.getColor(p.editorHintForeground);$&&te.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${he($)}") no-repeat bottom left; }`);const re=ue.getColor(l.editorUnnecessaryCodeOpacity);re&&te.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${re.rgba.a}; }`)})}),define(ne[254],se([1,0,7,35,89,173,130,85,13,19,25,9,6,55,2,26,59,200,16,33,108,161,237,354,617,348,36,12,5,93,148,21,40,127,95,67,212,606,96,15,57,8,157,43,77,31,62,23,433]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J,X,H){"use strict";var B;Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorWidget=e.diffEditorWidgetTtPolicy=void 0;class V{constructor(me,le){this._contextMenuService=me,this._clipboardService=le,this._zones=[],this._inlineDiffMargins=[],this._zonesMap={},this._decorations=[]}getForeignViewZones(me){return me.filter(le=>!this._zonesMap[String(le.id)])}clean(me){this._zones.length>0&&me.changeViewZones(le=>{for(const pe of this._zones)le.removeZone(pe)}),this._zones=[],this._zonesMap={},me.changeDecorations(le=>{this._decorations=le.deltaDecorations(this._decorations,[])})}apply(me,le,pe,Ce){const be=Ce?o.StableEditorScrollState.capture(me):null;me.changeViewZones(Ie=>{var Ne;for(const Re of this._zones)Ie.removeZone(Re);for(const Re of this._inlineDiffMargins)Re.dispose();this._zones=[],this._zonesMap={},this._inlineDiffMargins=[];for(let Re=0,Ve=pe.zones.length;Re{this._decorations=Ie.deltaDecorations(this._decorations,pe.decorations)}),le?.setZones(pe.overviewZones)}}let Y=0;const ie=(0,X.registerIcon)("diff-insert",C.Codicon.add,O.localize(0,null)),ae=(0,X.registerIcon)("diff-remove",C.Codicon.remove,O.localize(1,null));e.diffEditorWidgetTtPolicy=(0,y.createTrustedTypesPolicy)("diffEditorWidget",{createHTML:_e=>_e});const ce=O.localize(2,null);let de=B=class extends t.Disposable{constructor(me,le,pe,Ce,be,Ie,Ne,Re,Ve,ze,We){super(),this._editorProgressService=We,this._onDidDispose=this._register(new i.Emitter),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModel=this._register(new i.Emitter),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidUpdateDiff=this._register(new i.Emitter),this.onDidUpdateDiff=this._onDidUpdateDiff.event,this._onDidContentSizeChange=this._register(new i.Emitter),this._lastOriginalWarning=null,this._lastModifiedWarning=null,Ne.willCreateDiffEditor(),this._documentDiffProvider=this._register(Ie.createInstance(v.WorkerBasedDocumentDiffProvider,le)),this._register(this._documentDiffProvider.onDidChange(Oe=>this._beginUpdateDecorationsSoon())),this._codeEditorService=Ne,this._contextKeyService=this._register(be.createScoped(me)),this._instantiationService=Ie.createChild(new K.ServiceCollection([U.IContextKeyService,this._contextKeyService])),this._contextKeyService.createKey("isInDiffEditor",!0),this._themeService=Re,this._notificationService=Ve,this._id=++Y,this._state=0,this._updatingDiffProgress=null,this._domElement=me,le=le||{},this._options=Pe(le,{enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showEmptyDecorations:!1,showMoves:!1},hideUnchangedRegions:{enabled:!1,contextLineCount:0,minimumLineCount:0,revealLineCount:0},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:0,useInlineViewWhenSpaceIsLimited:!1}),this.isEmbeddedDiffEditorKey=P.EditorContextKeys.isEmbeddedDiffEditor.bindTo(this._contextKeyService),this.isEmbeddedDiffEditorKey.set(typeof le.isInEmbeddedEditor<"u"?le.isInEmbeddedEditor:!1),this._updateDecorationsRunner=this._register(new _.RunOnceScheduler(()=>this._updateDecorations(),0)),this._containerDomElement=document.createElement("div"),this._containerDomElement.className=B._getClassName(this._themeService.getColorTheme(),this._options.renderSideBySide),this._containerDomElement.style.position="relative",this._containerDomElement.style.height="100%",this._domElement.appendChild(this._containerDomElement),this._overviewViewportDomElement=(0,k.createFastDomNode)(document.createElement("div")),this._overviewViewportDomElement.setClassName("diffViewport"),this._overviewViewportDomElement.setPosition("absolute"),this._overviewDomElement=document.createElement("div"),this._overviewDomElement.className="diffOverview",this._overviewDomElement.style.position="absolute",this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode),this._register(L.addStandardDisposableListener(this._overviewDomElement,L.EventType.POINTER_DOWN,Oe=>{this._modifiedEditor.delegateVerticalScrollbarPointerDown(Oe)})),this._register(L.addDisposableListener(this._overviewDomElement,L.EventType.MOUSE_WHEEL,Oe=>{this._modifiedEditor.delegateScrollFromMouseWheelEvent(Oe)},{passive:!1})),this._options.renderOverviewRuler&&this._containerDomElement.appendChild(this._overviewDomElement),this._originalDomNode=document.createElement("div"),this._originalDomNode.className="editor original",this._originalDomNode.style.position="absolute",this._originalDomNode.style.height="100%",this._containerDomElement.appendChild(this._originalDomNode),this._modifiedDomNode=document.createElement("div"),this._modifiedDomNode.className="editor modified",this._modifiedDomNode.style.position="absolute",this._modifiedDomNode.style.height="100%",this._containerDomElement.appendChild(this._modifiedDomNode),this._beginUpdateDecorationsTimeout=-1,this._currentlyChangingViewZones=!1,this._diffComputationToken=0,this._originalEditorState=new V(ze,Ce),this._modifiedEditorState=new V(ze,Ce),this._isVisible=!0,this._isHandlingScrollEvent=!1,this._elementSizeObserver=this._register(new h.ElementSizeObserver(this._containerDomElement,le.dimension)),this._register(this._elementSizeObserver.onDidChange(()=>this._onDidContainerSizeChanged())),le.automaticLayout&&this._elementSizeObserver.startObserving(),this._diffComputationResult=null,this._originalEditor=this._createLeftHandSideEditor(le,pe.originalEditor||{}),this._modifiedEditor=this._createRightHandSideEditor(le,pe.modifiedEditor||{}),this._originalOverviewRuler=null,this._modifiedOverviewRuler=null,this._reviewPane=Ie.createInstance(p.DiffReview,this),this._containerDomElement.appendChild(this._reviewPane.domNode.domNode),this._containerDomElement.appendChild(this._reviewPane.shadow.domNode),this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode),this._options.renderSideBySide?this._setStrategy(new ee(this._createDataSource(),this._options.enableSplitViewResizing,this._options.splitViewDefaultRatio)):this._setStrategy(new re(this._createDataSource(),this._options.enableSplitViewResizing)),this._register(Re.onDidColorThemeChange(Oe=>{this._strategy&&this._strategy.applyColors(Oe)&&this._updateDecorationsRunner.schedule(),this._containerDomElement.className=B._getClassName(this._themeService.getColorTheme(),this._options.renderSideBySide)}));const qe=r.EditorExtensionsRegistry.getDiffEditorContributions();for(const Oe of qe)try{this._register(Ie.createInstance(Oe.ctor,this))}catch(Ge){(0,s.onUnexpectedError)(Ge)}this._codeEditorService.addDiffEditor(this)}_setState(me){this._state!==me&&(this._state=me,this._updatingDiffProgress&&(this._updatingDiffProgress.done(),this._updatingDiffProgress=null),this._state===1&&(this._updatingDiffProgress=this._editorProgressService.show(!0,1e3)))}accessibleDiffViewerNext(){this._reviewPane.next()}accessibleDiffViewerPrev(){this._reviewPane.prev()}static _getClassName(me,le){let pe="monaco-diff-editor monaco-editor-background ";return le&&(pe+="side-by-side "),pe+=(0,H.getThemeTypeSelector)(me.type),pe}_disposeOverviewRulers(){this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose(),this._originalOverviewRuler=null),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose(),this._modifiedOverviewRuler=null)}_createOverviewRulers(){this._options.renderOverviewRuler&&(f.ok(!this._originalOverviewRuler&&!this._modifiedOverviewRuler),this._originalEditor.hasModel()&&(this._originalOverviewRuler=this._originalEditor.createOverviewRuler("original diffOverviewRuler"),this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode())),this._modifiedEditor.hasModel()&&(this._modifiedOverviewRuler=this._modifiedEditor.createOverviewRuler("modified diffOverviewRuler"),this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode())),this._layoutOverviewRulers())}_createLeftHandSideEditor(me,le){const pe=this._createInnerEditor(this._instantiationService,this._originalDomNode,this._adjustOptionsForLeftHandSide(me),le);this._register(pe.onDidScrollChange(be=>{this._isHandlingScrollEvent||!be.scrollTopChanged&&!be.scrollLeftChanged&&!be.scrollHeightChanged||(this._isHandlingScrollEvent=!0,this._modifiedEditor.setScrollPosition({scrollLeft:be.scrollLeft,scrollTop:be.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())})),this._register(pe.onDidChangeViewZones(()=>{this._onViewZonesChanged()})),this._register(pe.onDidChangeConfiguration(be=>{pe.getModel()&&(be.hasChanged(49)&&this._updateDecorationsRunner.schedule(),be.hasChanged(143)&&(this._updateDecorationsRunner.cancel(),this._updateDecorations()))})),this._register(pe.onDidChangeHiddenAreas(()=>{this._updateDecorationsRunner.cancel(),this._updateDecorations()})),this._register(pe.onDidChangeModelContent(()=>{this._isVisible&&this._beginUpdateDecorationsSoon()}));const Ce=this._contextKeyService.createKey("isInDiffLeftEditor",pe.hasWidgetFocus());return this._register(pe.onDidFocusEditorWidget(()=>Ce.set(!0))),this._register(pe.onDidBlurEditorWidget(()=>Ce.set(!1))),this._register(pe.onDidContentSizeChange(be=>{const Ie=this._originalEditor.getContentWidth()+this._modifiedEditor.getContentWidth()+B.ONE_OVERVIEW_WIDTH,Ne=Math.max(this._modifiedEditor.getContentHeight(),this._originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:Ne,contentWidth:Ie,contentHeightChanged:be.contentHeightChanged,contentWidthChanged:be.contentWidthChanged})})),pe}_createRightHandSideEditor(me,le){const pe=this._createInnerEditor(this._instantiationService,this._modifiedDomNode,this._adjustOptionsForRightHandSide(me),le);this._register(pe.onDidScrollChange(be=>{this._isHandlingScrollEvent||!be.scrollTopChanged&&!be.scrollLeftChanged&&!be.scrollHeightChanged||(this._isHandlingScrollEvent=!0,this._originalEditor.setScrollPosition({scrollLeft:be.scrollLeft,scrollTop:be.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())})),this._register(pe.onDidChangeViewZones(()=>{this._onViewZonesChanged()})),this._register(pe.onDidChangeConfiguration(be=>{pe.getModel()&&(be.hasChanged(49)&&this._updateDecorationsRunner.schedule(),be.hasChanged(143)&&(this._updateDecorationsRunner.cancel(),this._updateDecorations()))})),this._register(pe.onDidChangeHiddenAreas(()=>{this._updateDecorationsRunner.cancel(),this._updateDecorations()})),this._register(pe.onDidChangeModelContent(()=>{this._isVisible&&this._beginUpdateDecorationsSoon()})),this._register(pe.onDidChangeModelOptions(be=>{be.tabSize&&this._updateDecorationsRunner.schedule()}));const Ce=this._contextKeyService.createKey("isInDiffRightEditor",pe.hasWidgetFocus());return this._register(pe.onDidFocusEditorWidget(()=>Ce.set(!0))),this._register(pe.onDidBlurEditorWidget(()=>Ce.set(!1))),this._register(pe.onDidContentSizeChange(be=>{const Ie=this._originalEditor.getContentWidth()+this._modifiedEditor.getContentWidth()+B.ONE_OVERVIEW_WIDTH,Ne=Math.max(this._modifiedEditor.getContentHeight(),this._originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:Ne,contentWidth:Ie,contentHeightChanged:be.contentHeightChanged,contentWidthChanged:be.contentWidthChanged})})),this._register(pe.onMouseDown(be=>{var Ie,Ne;if(!be.event.rightButton&&be.target.position&&(!((Ie=be.target.element)===null||Ie===void 0)&&Ie.className.includes("arrow-revert-change"))){const Re=be.target.position.lineNumber,Ve=be.target,ze=(Ne=this._diffComputationResult)===null||Ne===void 0?void 0:Ne.changes.find(We=>Ve?.detail.afterLineNumber===We.modifiedStartLineNumber||We.modifiedEndLineNumber>0&&We.modifiedStartLineNumber===Re);ze&&this.revertChange(ze),be.event.stopPropagation(),this._updateDecorations();return}})),pe}revertChange(me){const le=this._modifiedEditor,pe=this._originalEditor.getModel(),Ce=this._modifiedEditor.getModel();if(!pe||!Ce||!le)return;const be=me.originalEndLineNumber>0?new E.Range(me.originalStartLineNumber,1,me.originalEndLineNumber,pe.getLineMaxColumn(me.originalEndLineNumber)):null,Ie=be?pe.getValueInRange(be):null,Ne=me.modifiedEndLineNumber>0?new E.Range(me.modifiedStartLineNumber,1,me.modifiedEndLineNumber,Ce.getLineMaxColumn(me.modifiedEndLineNumber)):null,Re=Ce.getEOL();if(me.originalEndLineNumber===0&&Ne){let Ve=Ne;me.modifiedStartLineNumber>1?Ve=Ne.setStartPosition(me.modifiedStartLineNumber-1,Ce.getLineMaxColumn(me.modifiedStartLineNumber-1)):me.modifiedEndLineNumberthis._beginUpdateDecorations(),B.UPDATE_DIFF_DECORATIONS_DELAY)}static _equals(me,le){return!me&&!le?!0:!me||!le?!1:me.toString()===le.toString()}_beginUpdateDecorations(){this._beginUpdateDecorationsTimeout!==-1&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1);const me=this._originalEditor.getModel(),le=this._modifiedEditor.getModel();if(!me||!le)return;this._diffComputationToken++;const pe=this._diffComputationToken,Ce=this._options.maxFileSize*1024*1024,be=Ie=>{const Ne=Ie.getValueLength();return Ce===0||Ne<=Ce};if(!be(me)||!be(le)){(!B._equals(me.uri,this._lastOriginalWarning)||!B._equals(le.uri,this._lastModifiedWarning))&&(this._lastOriginalWarning=me.uri,this._lastModifiedWarning=le.uri,this._notificationService.warn(O.localize(3,null)));return}this._setState(1),this._documentDiffProvider.computeDiff(me,le,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace,maxComputationTimeMs:this._options.maxComputationTime,computeMoves:!1},g.CancellationToken.None).then(Ie=>{pe===this._diffComputationToken&&me===this._originalEditor.getModel()&&le===this._modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult={identical:Ie.identical,quitEarly:Ie.quitEarly,changes2:Ie.changes,changes:Ie.changes.map(Ne=>{let Re,Ve,ze,We,qe=Ne.innerChanges;return Ne.originalRange.isEmpty?(Re=Ne.originalRange.startLineNumber-1,Ve=0,qe=void 0):(Re=Ne.originalRange.startLineNumber,Ve=Ne.originalRange.endLineNumberExclusive-1),Ne.modifiedRange.isEmpty?(ze=Ne.modifiedRange.startLineNumber-1,We=0,qe=void 0):(ze=Ne.modifiedRange.startLineNumber,We=Ne.modifiedRange.endLineNumberExclusive-1),{originalStartLineNumber:Re,originalEndLineNumber:Ve,modifiedStartLineNumber:ze,modifiedEndLineNumber:We,charChanges:qe?.map(Oe=>({originalStartLineNumber:Oe.originalRange.startLineNumber,originalStartColumn:Oe.originalRange.startColumn,originalEndLineNumber:Oe.originalRange.endLineNumber,originalEndColumn:Oe.originalRange.endColumn,modifiedStartLineNumber:Oe.modifiedRange.startLineNumber,modifiedStartColumn:Oe.modifiedRange.startColumn,modifiedEndLineNumber:Oe.modifiedRange.endLineNumber,modifiedEndColumn:Oe.modifiedRange.endColumn}))}})},this._updateDecorationsRunner.schedule(),this._onDidUpdateDiff.fire())},Ie=>{pe===this._diffComputationToken&&me===this._originalEditor.getModel()&&le===this._modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult=null,this._updateDecorationsRunner.schedule())})}_cleanViewZonesAndDecorations(){this._originalEditorState.clean(this._originalEditor),this._modifiedEditorState.clean(this._modifiedEditor)}_updateDecorations(){if(!this._originalEditor.getModel()||!this._modifiedEditor.getModel())return;const me=this._diffComputationResult?this._diffComputationResult.changes:[],le=this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces()),pe=this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces()),Ce=this._options.renderMarginRevertIcon&&!this._modifiedEditor.getOption(89),be=this._strategy.getEditorsDiffDecorations(me,this._options.ignoreTrimWhitespace,this._options.renderIndicators,Ce,le,pe);try{this._currentlyChangingViewZones=!0,this._originalEditorState.apply(this._originalEditor,this._originalOverviewRuler,be.original,!1),this._modifiedEditorState.apply(this._modifiedEditor,this._modifiedOverviewRuler,be.modified,!0)}finally{this._currentlyChangingViewZones=!1}}_adjustOptionsForSubEditor(me){const le=Object.assign({},me);return le.inDiffEditor=!0,le.automaticLayout=!1,le.scrollbar=Object.assign({},le.scrollbar||{}),le.scrollbar.vertical="visible",le.folding=!1,le.codeLens=this._options.diffCodeLens,le.fixedOverflowWidgets=!0,le.minimap=Object.assign({},le.minimap||{}),le.minimap.enabled=!1,le}_adjustOptionsForLeftHandSide(me){const le=this._adjustOptionsForSubEditor(me);return this._options.renderSideBySide?le.wordWrapOverride1=this._options.diffWordWrap:(le.wordWrapOverride1="off",le.wordWrapOverride2="off",le.stickyScroll={enabled:!1}),me.originalAriaLabel&&(le.ariaLabel=me.originalAriaLabel),this._updateAriaLabel(le),le.readOnly=!this._options.originalEditable,le.dropIntoEditor={enabled:!le.readOnly},le.extraEditorClassName="original-in-monaco-diff-editor",Object.assign(Object.assign({},le),{dimension:{height:0,width:0}})}_updateAriaLabel(me){var le;let pe=(le=me.ariaLabel)!==null&&le!==void 0?le:"";this._options.accessibilityVerbose?pe+=ce:pe&&(pe=pe.replaceAll(ce,"")),me.ariaLabel=pe}_adjustOptionsForRightHandSide(me){const le=this._adjustOptionsForSubEditor(me);return me.modifiedAriaLabel&&(le.ariaLabel=me.modifiedAriaLabel),this._updateAriaLabel(le),le.wordWrapOverride1=this._options.diffWordWrap,le.revealHorizontalRightPadding=b.EditorOptions.revealHorizontalRightPadding.defaultValue+B.ENTIRE_DIFF_OVERVIEW_WIDTH,le.scrollbar.verticalHasArrows=!1,le.extraEditorClassName="modified-in-monaco-diff-editor",Object.assign(Object.assign({},le),{dimension:{height:0,width:0}})}doLayout(){this._elementSizeObserver.observe(),this._doLayout()}_doLayout(){const me=this._elementSizeObserver.getWidth(),le=this._elementSizeObserver.getHeight(),pe=this._getReviewHeight(),Ce=this._strategy.layout();this._originalDomNode.style.width=Ce+"px",this._originalDomNode.style.left="0px",this._modifiedDomNode.style.width=me-Ce-B.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._modifiedDomNode.style.left=Ce+"px",this._overviewDomElement.style.top="0px",this._overviewDomElement.style.height=le-pe+"px",this._overviewDomElement.style.width=B.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewDomElement.style.left=me-B.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewViewportDomElement.setWidth(B.ENTIRE_DIFF_OVERVIEW_WIDTH),this._overviewViewportDomElement.setHeight(30),this._originalEditor.layout({width:Ce,height:le-pe}),this._modifiedEditor.layout({width:me-Ce-(this._options.renderOverviewRuler?B.ENTIRE_DIFF_OVERVIEW_WIDTH:0),height:le-pe}),(this._originalOverviewRuler||this._modifiedOverviewRuler)&&this._layoutOverviewRulers(),this._reviewPane.layout(le-pe,me,pe),this._layoutOverviewViewport()}_layoutOverviewViewport(){const me=this._computeOverviewViewport();me?(this._overviewViewportDomElement.setTop(me.top),this._overviewViewportDomElement.setHeight(me.height)):(this._overviewViewportDomElement.setTop(0),this._overviewViewportDomElement.setHeight(0))}_computeOverviewViewport(){const me=this._modifiedEditor.getLayoutInfo();if(!me)return null;const le=this._modifiedEditor.getScrollTop(),pe=this._modifiedEditor.getScrollHeight(),Ce=Math.max(0,me.height),be=Math.max(0,Ce-2*0),Ie=pe>0?be/pe:0,Ne=Math.max(0,Math.floor(me.height*Ie)),Re=Math.floor(le*Ie);return{height:Ne,top:Re}}_createDataSource(){return{getWidth:()=>this._elementSizeObserver.getWidth(),getHeight:()=>this._elementSizeObserver.getHeight()-this._getReviewHeight(),getOptions:()=>({renderOverviewRuler:this._options.renderOverviewRuler}),getContainerDomNode:()=>this._containerDomElement,relayoutEditors:()=>{this._doLayout()},getOriginalEditor:()=>this._originalEditor,getModifiedEditor:()=>this._modifiedEditor}}_setStrategy(me){var le;(le=this._strategy)===null||le===void 0||le.dispose(),this._strategy=me,this._boundarySashes&&me.setBoundarySashes(this._boundarySashes),me.applyColors(this._themeService.getColorTheme()),this._diffComputationResult&&this._updateDecorations(),this._doLayout()}};e.DiffEditorWidget=de,de.ONE_OVERVIEW_WIDTH=15,de.ENTIRE_DIFF_OVERVIEW_WIDTH=30,de.UPDATE_DIFF_DECORATIONS_DELAY=200,e.DiffEditorWidget=de=B=ke([fe(3,W.IClipboardService),fe(4,U.IContextKeyService),fe(5,R.IInstantiationService),fe(6,c.ICodeEditorService),fe(7,H.IThemeService),fe(8,G.INotificationService),fe(9,j.IContextMenuService),fe(10,Z.IEditorProgressService)],de);class he extends t.Disposable{constructor(me){super(),this._dataSource=me,this._insertColor=null,this._removeColor=null}applyColors(me){const le=me.getColor(J.diffOverviewRulerInserted)||(me.getColor(J.diffInserted)||J.defaultInsertColor).transparent(2),pe=me.getColor(J.diffOverviewRulerRemoved)||(me.getColor(J.diffRemoved)||J.defaultRemoveColor).transparent(2),Ce=!le.equals(this._insertColor)||!pe.equals(this._removeColor);return this._insertColor=le,this._removeColor=pe,Ce}getEditorsDiffDecorations(me,le,pe,Ce,be,Ie){Ie=Ie.sort((ze,We)=>ze.afterLineNumber-We.afterLineNumber),be=be.sort((ze,We)=>ze.afterLineNumber-We.afterLineNumber);const Ne=this._getViewZones(me,be,Ie,pe),Re=this._getOriginalEditorDecorations(Ne,me,le,pe),Ve=this._getModifiedEditorDecorations(Ne,me,le,pe,Ce);return{original:{decorations:Re.decorations,overviewZones:Re.overviewZones,zones:Ne.original},modified:{decorations:Ve.decorations,overviewZones:Ve.overviewZones,zones:Ne.modified}}}setBoundarySashes(me){}}class ue{constructor(me){this._source=me,this._index=-1,this.current=null,this.advance()}advance(){this._index++,this._indexat.afterLineNumber-ht.afterLineNumber,nt=(at,ht)=>{if(ht.domNode===null&&at.length>0){const Be=at[at.length-1];if(Be.afterLineNumber===ht.afterLineNumber&&Be.domNode===null){Be.heightInLines+=ht.heightInLines;return}}at.push(ht)},ot=new ue(this._modifiedForeignVZ),ct=new ue(this._originalForeignVZ);let lt=1,gt=1;for(let at=0,ht=this._lineChanges.length;at<=ht;at++){const Be=at0?-1:0),Oe=Be.modifiedStartLineNumber+(Be.modifiedEndLineNumber>0?-1:0),We=Be.originalEndLineNumber>0?te._getViewLineCount(this._originalEditor,Be.originalStartLineNumber,Be.originalEndLineNumber):0,ze=Be.modifiedEndLineNumber>0?te._getViewLineCount(this._modifiedEditor,Be.modifiedStartLineNumber,Be.modifiedEndLineNumber):0,Ge=Math.max(Be.originalStartLineNumber,Be.originalEndLineNumber),Qe=Math.max(Be.modifiedStartLineNumber,Be.modifiedEndLineNumber)):(qe+=1e7+We,Oe+=1e7+ze,Ge=qe,Qe=Oe);let Te=[],xe=[];if(be){let Ze;Be?Be.originalEndLineNumber>0?Ze=Be.originalStartLineNumber-lt:Ze=Be.modifiedStartLineNumber-gt:Ze=Ie.getLineCount()-lt+1;for(let Xe=0;XeKe&&xe.push({afterLineNumber:Ae,heightInLines:Ue-Ke,domNode:null,marginDomNode:null})}Be&&(lt=(Be.originalEndLineNumber>0?Be.originalEndLineNumber:Be.originalStartLineNumber)+1,gt=(Be.modifiedEndLineNumber>0?Be.modifiedEndLineNumber:Be.modifiedStartLineNumber)+1)}for(;ot.current&&ot.current.afterLineNumber<=Qe;){let Ze;ot.current.afterLineNumber<=Oe?Ze=qe-Oe+ot.current.afterLineNumber:Ze=Ge;let Xe=null;Be&&Be.modifiedStartLineNumber<=ot.current.afterLineNumber&&ot.current.afterLineNumber<=Be.modifiedEndLineNumber&&(Xe=this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()),Te.push({afterLineNumber:Ze,heightInLines:ot.current.height/le,domNode:null,marginDomNode:Xe}),ot.advance()}for(;ct.current&&ct.current.afterLineNumber<=Ge;){let Ze;ct.current.afterLineNumber<=qe?Ze=Oe-qe+ct.current.afterLineNumber:Ze=Qe,xe.push({afterLineNumber:Ze,heightInLines:ct.current.height/me,domNode:null}),ct.advance()}if(Be!==null&&ve(Be)){const Ze=this._produceOriginalFromDiff(Be,We,ze);Ze&&Te.push(Ze)}if(Be!==null&&Se(Be)){const Ze=this._produceModifiedFromDiff(Be,We,ze);Ze&&xe.push(Ze)}let He=0,Ye=0;for(Te=Te.sort(st),xe=xe.sort(st);He=Xe.heightInLines?(Ze.heightInLines-=Xe.heightInLines,Ye++):(Xe.heightInLines-=Ze.heightInLines,He++)}for(;He(le.domNode||(le.domNode=ye()),le))}}function q(_e,me,le,pe,Ce){return{range:new E.Range(_e,me,le,pe),options:Ce}}const z={arrowRevertChange:x.ModelDecorationOptions.register({description:"diff-editor-arrow-revert-change",glyphMarginHoverMessage:new n.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(O.localize(4,null)),glyphMarginClassName:"arrow-revert-change "+a.ThemeIcon.asClassName(C.Codicon.arrowRight),zIndex:10001}),charDelete:x.ModelDecorationOptions.register({description:"diff-editor-char-delete",className:"char-delete"}),charDeleteWholeLine:x.ModelDecorationOptions.register({description:"diff-editor-char-delete-whole-line",className:"char-delete",isWholeLine:!0}),charInsert:x.ModelDecorationOptions.register({description:"diff-editor-char-insert",className:"char-insert"}),charInsertWholeLine:x.ModelDecorationOptions.register({description:"diff-editor-char-insert-whole-line",className:"char-insert",isWholeLine:!0}),lineInsert:x.ModelDecorationOptions.register({description:"diff-editor-line-insert",className:"line-insert",marginClassName:"gutter-insert",isWholeLine:!0}),lineInsertWithSign:x.ModelDecorationOptions.register({description:"diff-editor-line-insert-with-sign",className:"line-insert",linesDecorationsClassName:"insert-sign "+a.ThemeIcon.asClassName(ie),marginClassName:"gutter-insert",isWholeLine:!0}),lineDelete:x.ModelDecorationOptions.register({description:"diff-editor-line-delete",className:"line-delete",marginClassName:"gutter-delete",isWholeLine:!0}),lineDeleteWithSign:x.ModelDecorationOptions.register({description:"diff-editor-line-delete-with-sign",className:"line-delete",linesDecorationsClassName:"delete-sign "+a.ThemeIcon.asClassName(ae),marginClassName:"gutter-delete",isWholeLine:!0}),lineDeleteMargin:x.ModelDecorationOptions.register({description:"diff-editor-line-delete-margin",marginClassName:"gutter-delete"})};class ee extends he{constructor(me,le,pe){super(me),this._disableSash=le===!1,this._defaultRatio=pe,this._sashRatio=null,this._sashPosition=null,this._startSashPosition=null,this._sash=this._register(new S.Sash(this._dataSource.getContainerDomNode(),this,{orientation:0})),this._disableSash&&(this._sash.state=0),this._sash.onDidStart(()=>this._onSashDragStart()),this._sash.onDidChange(Ce=>this._onSashDrag(Ce)),this._sash.onDidEnd(()=>this._onSashDragEnd()),this._sash.onDidReset(()=>this._onSashReset())}setEnableSplitViewResizing(me,le){this._defaultRatio=le;const pe=me===!1;this._disableSash!==pe&&(this._disableSash=pe,this._sash.state=this._disableSash?0:3)}layout(me=this._sashRatio||this._defaultRatio){const pe=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?de.ENTIRE_DIFF_OVERVIEW_WIDTH:0);let Ce=Math.floor((me||this._defaultRatio)*pe);const be=Math.floor(this._defaultRatio*pe);return Ce=this._disableSash?be:Ce||be,pe>ee.MINIMUM_EDITOR_WIDTH*2?(Cepe-ee.MINIMUM_EDITOR_WIDTH&&(Ce=pe-ee.MINIMUM_EDITOR_WIDTH)):Ce=be,this._sashPosition!==Ce&&(this._sashPosition=Ce),this._sash.layout(),this._sashPosition}_onSashDragStart(){this._startSashPosition=this._sashPosition}_onSashDrag(me){const pe=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?de.ENTIRE_DIFF_OVERVIEW_WIDTH:0),Ce=this.layout((this._startSashPosition+(me.currentX-me.startX))/pe);this._sashRatio=Ce/pe,this._dataSource.relayoutEditors()}_onSashDragEnd(){this._sash.layout()}_onSashReset(){this._sashRatio=this._defaultRatio,this._dataSource.relayoutEditors(),this._sash.layout()}getVerticalSashTop(me){return 0}getVerticalSashLeft(me){return this._sashPosition}getVerticalSashHeight(me){return this._dataSource.getHeight()}setBoundarySashes(me){this._sash.orthogonalEndSash=me.bottom}_getViewZones(me,le,pe){const Ce=this._dataSource.getOriginalEditor(),be=this._dataSource.getModifiedEditor();return new $(me,le,pe,Ce,be).getViewZones()}_getOriginalEditorDecorations(me,le,pe,Ce){const be=this._dataSource.getOriginalEditor(),Ie=String(this._removeColor),Ne={decorations:[],overviewZones:[]},Re=be.getModel(),Ve=be._getViewModel();for(const ze of le)if(Se(ze)){Ne.decorations.push({range:new E.Range(ze.originalStartLineNumber,1,ze.originalEndLineNumber,1073741824),options:Ce?z.lineDeleteWithSign:z.lineDelete}),(!ve(ze)||!ze.charChanges)&&Ne.decorations.push(q(ze.originalStartLineNumber,1,ze.originalEndLineNumber,1073741824,z.charDeleteWholeLine));const We=Me(Re,Ve,ze.originalStartLineNumber,ze.originalEndLineNumber);if(Ne.overviewZones.push(new F.OverviewRulerZone(We.startLineNumber,We.endLineNumber,0,Ie)),ze.charChanges){for(const qe of ze.charChanges)if(De(qe))if(pe)for(let Oe=qe.originalStartLineNumber;Oe<=qe.originalEndLineNumber;Oe++){let Ge,Qe;Oe===qe.originalStartLineNumber?Ge=qe.originalStartColumn:Ge=Re.getLineFirstNonWhitespaceColumn(Oe),Oe===qe.originalEndLineNumber?Qe=qe.originalEndColumn:Qe=Re.getLineLastNonWhitespaceColumn(Oe),Ne.decorations.push(q(Oe,Ge,Oe,Qe,z.charDelete))}else Ne.decorations.push(q(qe.originalStartLineNumber,qe.originalStartColumn,qe.originalEndLineNumber,qe.originalEndColumn,z.charDelete))}}return Ne}_getModifiedEditorDecorations(me,le,pe,Ce,be){const Ie=this._dataSource.getModifiedEditor(),Ne=String(this._insertColor),Re={decorations:[],overviewZones:[]},Ve=Ie.getModel(),ze=Ie._getViewModel();for(const We of le){if(be)if(We.modifiedEndLineNumber>0)Re.decorations.push({range:new E.Range(We.modifiedStartLineNumber,1,We.modifiedStartLineNumber,1),options:z.arrowRevertChange});else{const qe=me.modified.find(Oe=>Oe.afterLineNumber===We.modifiedStartLineNumber);qe&&(qe.marginDomNode=Ee())}if(ve(We)){Re.decorations.push({range:new E.Range(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824),options:Ce?z.lineInsertWithSign:z.lineInsert}),(!Se(We)||!We.charChanges)&&Re.decorations.push(q(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824,z.charInsertWholeLine));const qe=Me(Ve,ze,We.modifiedStartLineNumber,We.modifiedEndLineNumber);if(Re.overviewZones.push(new F.OverviewRulerZone(qe.startLineNumber,qe.endLineNumber,0,Ne)),We.charChanges){for(const Oe of We.charChanges)if(Le(Oe))if(pe)for(let Ge=Oe.modifiedStartLineNumber;Ge<=Oe.modifiedEndLineNumber;Ge++){let Qe,st;Ge===Oe.modifiedStartLineNumber?Qe=Oe.modifiedStartColumn:Qe=Ve.getLineFirstNonWhitespaceColumn(Ge),Ge===Oe.modifiedEndLineNumber?st=Oe.modifiedEndColumn:st=Ve.getLineLastNonWhitespaceColumn(Ge),Re.decorations.push(q(Ge,Qe,Ge,st,z.charInsert))}else Re.decorations.push(q(Oe.modifiedStartLineNumber,Oe.modifiedStartColumn,Oe.modifiedEndLineNumber,Oe.modifiedEndColumn,z.charInsert))}}}return Re}}ee.MINIMUM_EDITOR_WIDTH=100;class $ extends te{constructor(me,le,pe,Ce,be){super(me,le,pe,Ce,be)}_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(){return null}_produceOriginalFromDiff(me,le,pe){return pe>le?{afterLineNumber:Math.max(me.originalStartLineNumber,me.originalEndLineNumber),heightInLines:pe-le,domNode:null}:null}_produceModifiedFromDiff(me,le,pe){return le>pe?{afterLineNumber:Math.max(me.modifiedStartLineNumber,me.modifiedEndLineNumber),heightInLines:le-pe,domNode:null}:null}}class re extends he{constructor(me,le){super(me),this._decorationsLeft=me.getOriginalEditor().getLayoutInfo().decorationsLeft,this._register(me.getOriginalEditor().onDidLayoutChange(pe=>{this._decorationsLeft!==pe.decorationsLeft&&(this._decorationsLeft=pe.decorationsLeft,me.relayoutEditors())}))}setEnableSplitViewResizing(me){}_getViewZones(me,le,pe,Ce){const be=this._dataSource.getOriginalEditor(),Ie=this._dataSource.getModifiedEditor();return new oe(me,le,pe,be,Ie,Ce).getViewZones()}_getOriginalEditorDecorations(me,le,pe,Ce){const be=String(this._removeColor),Ie={decorations:[],overviewZones:[]},Ne=this._dataSource.getOriginalEditor(),Re=Ne.getModel(),Ve=Ne._getViewModel();let ze=0;for(const We of le)if(Se(We)){for(Ie.decorations.push({range:new E.Range(We.originalStartLineNumber,1,We.originalEndLineNumber,1073741824),options:z.lineDeleteMargin});ze=We.originalStartLineNumber)break;ze++}let qe=0;if(ze0,xe=new I.StringBuilder(1e4);let He=0,Ye=0,Ze=null;for(let Ae=lt.originalStartLineNumber;Ae<=lt.originalEndLineNumber;Ae++){const Ue=Ae-lt.originalStartLineNumber,Ke=this._originalModel.tokenization.getLineTokens(Ae),$e=Ke.getLineContent(),et=nt[ot++],tt=T.LineDecoration.filter(Be,Ae,1,$e.length+1);if(et){let ut=0;for(const rt of et.breakOffsets){const dt=Ke.sliceAndInflate(ut,rt,0),ft=$e.substring(ut,rt);He=Math.max(He,this._renderOriginalLine(Ye++,ft,dt,T.LineDecoration.extractWrapped(tt,ut,rt),Te,Re,Ve,Ce,be,ze,qe,Oe,Ge,Qe,st,pe,xe,ht)),ut=rt}for(Ze||(Ze=[]);Ze.lengthct.afterLineNumber-lt.afterLineNumber)}_renderOriginalLine(me,le,pe,Ce,be,Ie,Ne,Re,Ve,ze,We,qe,Oe,Ge,Qe,st,nt,ot){nt.appendString('
    ');const ct=N.ViewLineRenderingData.isBasicASCII(le,Ie),lt=N.ViewLineRenderingData.containsRTL(le,ct,Ne),gt=(0,A.renderViewLine)(new A.RenderLineInput(Re.isMonospace&&!Ve,Re.canUseHalfwidthRightwardsArrow,le,!1,ct,lt,0,pe,Ce,st,0,Re.spaceWidth,Re.middotWidth,Re.wsmiddotWidth,qe,Oe,Ge,Qe!==b.EditorFontLigatures.OFF,null),nt);if(nt.appendString("
    "),this._renderIndicators){const at=document.createElement("div");at.className=`delete-sign ${a.ThemeIcon.asClassName(ae)}`,at.setAttribute("style",`position:absolute;top:${me*ze}px;width:${We}px;height:${ze}px;right:0;`),ot.appendChild(at)}return gt.characterMapping.getHorizontalOffset(gt.characterMapping.length)}}function ge(_e,me){return(0,b.stringSet)(_e,me,["off","on","inherit"])}function ve(_e){return _e.modifiedEndLineNumber>0}function Se(_e){return _e.originalEndLineNumber>0}function Le(_e){return _e.modifiedStartLineNumber===_e.modifiedEndLineNumber?_e.modifiedEndColumn-_e.modifiedStartColumn>0:_e.modifiedEndLineNumber-_e.modifiedStartLineNumber>0}function De(_e){return _e.originalStartLineNumber===_e.originalEndLineNumber?_e.originalEndColumn-_e.originalStartColumn>0:_e.originalEndLineNumber-_e.originalStartLineNumber>0}function ye(){const _e=document.createElement("div");return _e.className="diagonal-fill",_e}function Ee(){const _e=document.createElement("div");return _e.className="arrow-revert-change "+a.ThemeIcon.asClassName(C.Codicon.arrowRight),L.$("div",{},_e)}function Me(_e,me,le,pe){const Ce=_e.getLineCount();return le=Math.min(Ce,Math.max(1,le)),pe=Math.min(Ce,Math.max(1,pe)),me.coordinatesConverter.convertModelRangeToViewRange(new E.Range(le,_e.getLineMinColumn(le),pe,_e.getLineMaxColumn(pe)))}function Pe(_e,me){return{enableSplitViewResizing:(0,b.boolean)(_e.enableSplitViewResizing,me.enableSplitViewResizing),splitViewDefaultRatio:(0,b.clampedFloat)(_e.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,b.boolean)(_e.renderSideBySide,me.renderSideBySide),renderMarginRevertIcon:(0,b.boolean)(_e.renderMarginRevertIcon,me.renderMarginRevertIcon),maxComputationTime:(0,b.clampedInt)(_e.maxComputationTime,me.maxComputationTime,0,1073741824),maxFileSize:(0,b.clampedInt)(_e.maxFileSize,me.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,b.boolean)(_e.ignoreTrimWhitespace,me.ignoreTrimWhitespace),renderIndicators:(0,b.boolean)(_e.renderIndicators,me.renderIndicators),originalEditable:(0,b.boolean)(_e.originalEditable,me.originalEditable),diffCodeLens:(0,b.boolean)(_e.diffCodeLens,me.diffCodeLens),renderOverviewRuler:(0,b.boolean)(_e.renderOverviewRuler,me.renderOverviewRuler),diffWordWrap:ge(_e.diffWordWrap,me.diffWordWrap),diffAlgorithm:(0,b.stringSet)(_e.diffAlgorithm,me.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:(0,b.boolean)(_e.accessibilityVerbose,me.accessibilityVerbose),hideUnchangedRegions:{enabled:!1,contextLineCount:0,minimumLineCount:0,revealLineCount:0},experimental:{showEmptyDecorations:!1,showMoves:!1},isInEmbeddedEditor:(0,b.boolean)(_e.isInEmbeddedEditor,me.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:0,useInlineViewWhenSpaceIsLimited:!1}}function Fe(_e,me){return{enableSplitViewResizing:_e.enableSplitViewResizing!==me.enableSplitViewResizing,renderSideBySide:_e.renderSideBySide!==me.renderSideBySide,renderMarginRevertIcon:_e.renderMarginRevertIcon!==me.renderMarginRevertIcon,maxComputationTime:_e.maxComputationTime!==me.maxComputationTime,maxFileSize:_e.maxFileSize!==me.maxFileSize,ignoreTrimWhitespace:_e.ignoreTrimWhitespace!==me.ignoreTrimWhitespace,renderIndicators:_e.renderIndicators!==me.renderIndicators,originalEditable:_e.originalEditable!==me.originalEditable,diffCodeLens:_e.diffCodeLens!==me.diffCodeLens,renderOverviewRuler:_e.renderOverviewRuler!==me.renderOverviewRuler,diffWordWrap:_e.diffWordWrap!==me.diffWordWrap,diffAlgorithm:_e.diffAlgorithm!==me.diffAlgorithm,accessibilityVerbose:_e.accessibilityVerbose!==me.accessibilityVerbose}}(0,H.registerThemingParticipant)((_e,me)=>{const le=_e.getColor(J.diffDiagonalFill);me.addRule(` - .monaco-editor .diagonal-fill { - background-image: linear-gradient( - -45deg, - ${le} 12.5%, - #0000 12.5%, #0000 50%, - ${le} 50%, ${le} 62.5%, - #0000 62.5%, #0000 100% - ); - background-size: 8px 8px; - } - `)})}),define(ne[874],se([1,0,59,254,36,93,127,95,67]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RenderOptions=e.LineSource=e.renderLines=void 0;const g=k.diffEditorWidgetTtPolicy;function C(t,a,u,h){(0,L.applyFontInfo)(h,a.fontInfo);const r=u.length>0,c=new D.StringBuilder(1e4);let o=0,d=0;const l=[];for(let b=0;b');const l=a.getLineContent(),p=_.ViewLineRenderingData.isBasicASCII(l,r),m=_.ViewLineRenderingData.containsRTL(l,p,c),v=(0,f.renderViewLine)(new f.RenderLineInput(o.fontInfo.isMonospace&&!o.disableMonospaceOptimizations,o.fontInfo.canUseHalfwidthRightwardsArrow,l,!1,p,m,0,a,u,o.tabSize,0,o.fontInfo.spaceWidth,o.fontInfo.middotWidth,o.fontInfo.wsmiddotWidth,o.stopRenderingLineAfter,o.renderWhitespace,o.renderControlCharacters,o.fontLigatures!==y.EditorFontLigatures.OFF,null),d);return d.appendString("
    "),v.characterMapping.getHorizontalOffset(v.characterMapping.length)}}),define(ne[875],se([1,0,7,14,13,25,2,42,26,20,59,108,362,318,612,874,102,66,12,67,96,57]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewZoneManager=void 0;let l=class extends S.Disposable{constructor(b,w,E,I,M,P,x){super(),this._editors=b,this._diffModel=w,this._options=E,this._diffEditorWidget=I,this._canIgnoreViewZoneUpdateEvent=M,this._clipboardService=P,this._contextMenuService=x,this._originalTopPadding=(0,f.observableValue)("originalTopPadding",0),this._originalScrollOffset=(0,f.observableValue)("originalScrollOffset",0),this._originalScrollOffsetAnimated=(0,u.animatedObservable)(this._originalScrollOffset,this._store),this._modifiedTopPadding=(0,f.observableValue)("modifiedTopPadding",0),this._modifiedScrollOffset=(0,f.observableValue)("modifiedScrollOffset",0),this._modifiedScrollOffsetAnimated=(0,u.animatedObservable)(this._modifiedScrollOffset,this._store);let T=!1;const A=(0,f.observableValue)("state",0),N=this._register(new y.RunOnceScheduler(()=>{A.set(A.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(J=>{!T&&!this._canIgnoreViewZoneUpdateEvent()&&N.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(J=>{!T&&!this._canIgnoreViewZoneUpdateEvent()&&N.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(J=>{(J.hasChanged(143)||J.hasChanged(65))&&N.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(J=>{(J.hasChanged(143)||J.hasChanged(65))&&N.schedule()}));const F=this._diffModel.map(J=>J?(0,f.observableFromEvent)(J.model.original.onDidChangeTokens,()=>J.model.original.tokenization.backgroundTokenizationState===2):void 0).map((J,X)=>J?.read(X)),O=new Set,W=new Set,U=(0,f.derived)(J=>{const X=this._diffModel.read(J),H=X?.diff.read(J);if(!X||!H)return null;A.read(J);const V=this._options.renderSideBySide.read(J);return p(this._editors.original,this._editors.modified,H.mappings,O,W,V)}),j=(0,f.derived)(J=>{var X;const H=(X=this._diffModel.read(J))===null||X===void 0?void 0:X.movedTextToCompare.read(J);if(!H)return null;A.read(J);const B=H.changes.map(V=>new n.DiffMapping(V));return p(this._editors.original,this._editors.modified,B,O,W,!0)});function R(){const J=document.createElement("div");return J.className="diagonal-fill",J}const K=this._register(new S.DisposableStore),G=(0,f.derived)(J=>{var X,H,B,V,Y,ie,ae,ce;K.clear();const de=U.read(J)||[],he=[],ue=[],te=this._modifiedTopPadding.read(J);te>0&&ue.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:te,showInHiddenAreas:!0});const q=this._originalTopPadding.read(J);q>0&&he.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:q,showInHiddenAreas:!0});const z=this._options.renderSideBySide.read(J),ee=z||(X=this._editors.modified._getViewModel())===null||X===void 0?void 0:X.createLineBreaksComputer();if(ee){for(const De of de)if(De.diff)for(let ye=De.originalRange.startLineNumber;yethis._editors.original.getModel().tokenization.getLineTokens(le)),De.originalRange.mapToLineArray(le=>$[re++]),ve,Se),Pe=[];for(const le of De.diff.innerChanges||[])Pe.push(new c.InlineDecoration(le.originalRange.delta(-(De.diff.originalRange.startLineNumber-1)),i.diffDeleteDecoration.className,0));const Fe=(0,a.renderLines)(Me,Le,Pe,Ee),_e=document.createElement("div");if(_e.className="inline-deleted-margin-view-zone",(0,C.applyFontInfo)(_e,Le.fontInfo),this._options.renderIndicators.read(J))for(let le=0;le(0,g.assertIsDefined)(me),_e,this._editors.modified,De.diff,this._diffEditorWidget,Fe.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let le=0;le1&&he.push({afterLineNumber:De.originalRange.startLineNumber+le,domNode:R(),heightInPx:(pe-1)*oe,showInHiddenAreas:!0})}ue.push({afterLineNumber:De.modifiedRange.startLineNumber-1,domNode:Ee,heightInPx:Fe.heightInLines*oe,minWidthInPx:Fe.minWidthInPx,marginDomNode:_e,setZoneId(le){me=le},showInHiddenAreas:!0})}const ye=document.createElement("div");ye.className="gutter-delete",he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:De.modifiedHeightInPx,marginDomNode:ye,showInHiddenAreas:!0})}else{const ye=De.modifiedHeightInPx-De.originalHeightInPx;if(ye>0){if(ge?.lineRangeMapping.original.delta(-1).deltaLength(2).contains(De.originalRange.endLineNumberExclusive-1))continue;he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:ye,showInHiddenAreas:!0})}else{let Ee=function(){const Pe=document.createElement("div");return Pe.className="arrow-revert-change "+_.ThemeIcon.asClassName(D.Codicon.arrowRight),(0,L.$)("div",{},Pe)};if(ge?.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(De.modifiedRange.endLineNumberExclusive-1))continue;let Me;De.diff&&De.diff.modifiedRange.isEmpty&&this._options.shouldRenderRevertArrows.read(J)&&(Me=Ee()),ue.push({afterLineNumber:De.modifiedRange.endLineNumberExclusive-1,domNode:R(),heightInPx:-ye,marginDomNode:Me,showInHiddenAreas:!0})}}for(const De of(ce=j.read(J))!==null&&ce!==void 0?ce:[]){if(!ge?.lineRangeMapping.original.intersect(De.originalRange)||!ge?.lineRangeMapping.modified.intersect(De.modifiedRange))continue;const ye=De.modifiedHeightInPx-De.originalHeightInPx;ye>0?he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:ye,showInHiddenAreas:!0}):ue.push({afterLineNumber:De.modifiedRange.endLineNumberExclusive-1,domNode:R(),heightInPx:-ye,showInHiddenAreas:!0})}return{orig:he,mod:ue}});this._register((0,f.autorunWithStore)(J=>{const X=s.StableEditorScrollState.capture(this._editors.modified),H=G.read(J);T=!0,this._editors.original.changeViewZones(B=>{for(const V of O)B.removeZone(V);O.clear();for(const V of H.orig){const Y=B.addZone(V);V.setZoneId&&V.setZoneId(Y),O.add(Y)}}),this._editors.modified.changeViewZones(B=>{for(const V of W)B.removeZone(V);W.clear();for(const V of H.mod){const Y=B.addZone(V);V.setZoneId&&V.setZoneId(Y),W.add(Y)}}),T=!1,X.restore(this._editors.modified)})),this._register((0,S.toDisposable)(()=>{this._editors.original.changeViewZones(J=>{for(const X of O)J.removeZone(X);O.clear()}),this._editors.modified.changeViewZones(J=>{for(const X of W)J.removeZone(X);W.clear()})}));let Z=!1;this._register(this._editors.original.onDidScrollChange(J=>{J.scrollLeftChanged&&!Z&&(Z=!0,this._editors.modified.setScrollLeft(J.scrollLeft),Z=!1)})),this._register(this._editors.modified.onDidScrollChange(J=>{J.scrollLeftChanged&&!Z&&(Z=!0,this._editors.original.setScrollLeft(J.scrollLeft),Z=!1)})),this._originalScrollTop=(0,f.observableFromEvent)(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=(0,f.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register((0,f.autorun)(J=>{const X=this._originalScrollTop.read(J)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(J))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(J));X!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(X,1)})),this._register((0,f.autorun)(J=>{const X=this._modifiedScrollTop.read(J)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(J))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(J));X!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(X,1)})),this._register((0,f.autorun)(J=>{var X;const H=(X=this._diffModel.read(J))===null||X===void 0?void 0:X.movedTextToCompare.read(J);let B=0;if(H){const V=this._editors.original.getTopForLineNumber(H.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();B=this._editors.modified.getTopForLineNumber(H.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-V}B>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(B,void 0)):B<0?(this._modifiedTopPadding.set(-B,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-B,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+B,void 0,!0)}))}};e.ViewZoneManager=l,e.ViewZoneManager=l=ke([fe(5,o.IClipboardService),fe(6,d.IContextMenuService)],l);function p(v,b,w,E,I,M){const P=new k.ArrayQueue(m(v,E)),x=new k.ArrayQueue(m(b,I)),T=v.getOption(65),A=b.getOption(65),N=[];let F=0,O=0;function W(U,j){for(;;){let R=P.peek(),K=x.peek();if(R&&R.lineNumber>=U&&(R=void 0),K&&K.lineNumber>=j&&(K=void 0),!R&&!K)break;const G=R?R.lineNumber-F:Number.MAX_VALUE,Z=K?K.lineNumber-O:Number.MAX_VALUE;GZ?(x.dequeue(),R={lineNumber:K.lineNumber-O+F,heightInPx:0}):(P.dequeue(),x.dequeue()),N.push({originalRange:h.LineRange.ofLength(R.lineNumber,1),modifiedRange:h.LineRange.ofLength(K.lineNumber,1),originalHeightInPx:T+R.heightInPx,modifiedHeightInPx:A+K.heightInPx,diff:void 0})}}for(const U of w){let Z=function(J,X){var H,B,V,Y;if(Jhe.lineNumberhe+ue.heightInPx,0))!==null&&B!==void 0?B:0,de=(Y=(V=x.takeWhile(he=>he.lineNumberhe+ue.heightInPx,0))!==null&&Y!==void 0?Y:0;N.push({originalRange:ie,modifiedRange:ae,originalHeightInPx:ie.length*T+ce,modifiedHeightInPx:ae.length*A+de,diff:U.lineRangeMapping}),G=J,K=X};const j=U.lineRangeMapping;W(j.originalRange.startLineNumber,j.modifiedRange.startLineNumber);let R=!0,K=j.modifiedRange.startLineNumber,G=j.originalRange.startLineNumber;if(M)for(const J of j.innerChanges||[])J.originalRange.startColumn>1&&J.modifiedRange.startColumn>1&&Z(J.originalRange.startLineNumber,J.modifiedRange.startLineNumber),J.originalRange.endColumn1&&E.push({lineNumber:T,heightInPx:P*(A-1)})}for(const T of v.getWhitespaces()){if(b.has(T.id))continue;const A=T.afterLineNumber===0?0:M.convertViewPositionToModelPosition(new r.Position(T.afterLineNumber,1)).lineNumber;w.push({lineNumber:A,heightInPx:T.height})}return(0,u.joinCombine)(w,E,T=>T.lineNumber,(T,A)=>({lineNumber:T.lineNumber,heightInPx:T.heightInPx+A.heightInPx}))}}),define(ne[876],se([1,0,7,9,6,42,16,33,161,830,870,590,875,323,357,747,102,348,148,21,116,15,8,157,482,844,621,318,2,77,432,822]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorWidget2=void 0;let M=class extends m.DelegatingEditor{constructor(T,A,N,F,O,W,U,j){var R;super(),this._domElement=T,this._parentContextKeyService=F,this._parentInstantiationService=O,this._audioCueService=U,this._editorProgressService=j,this.elements=(0,L.h)("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[(0,L.h)("div.noModificationsOverlay@overlay",{style:{position:"absolute",height:"100%",visibility:"hidden"}},[(0,L.$)("span",{},"No Changes")]),(0,L.h)("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),(0,L.h)("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),(0,L.h)("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModel=this._register((0,D.disposableObservableValue)("diffModel",void 0)),this.onDidChangeModel=y.Event.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._parentInstantiationService.createChild(new p.ServiceCollection([d.IContextKeyService,this._contextKeyService])),this._boundarySashes=(0,D.observableValue)("boundarySashes",void 0),this._accessibleDiffViewerShouldBeVisible=(0,D.observableValue)("accessibleDiffViewerShouldBeVisible",!1),this._accessibleDiffViewerVisible=(0,D.derived)(H=>this._options.onlyShowAccessibleDiffViewer.read(H)?!0:this._accessibleDiffViewerShouldBeVisible.read(H)),this.movedBlocksLinesPart=(0,D.observableValue)("MovedBlocksLinesPart",void 0),this._layoutInfo=(0,D.derived)(H=>{var B,V,Y;const ie=this._rootSizeObserver.width.read(H),ae=this._rootSizeObserver.height.read(H),ce=(B=this._sash.read(H))===null||B===void 0?void 0:B.sashLeft.read(H),de=ce??Math.max(5,this._editors.original.getLayoutInfo().decorationsLeft),he=ie-de-(this._options.renderOverviewRuler.read(H)?t.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH:0),ue=(Y=(V=this.movedBlocksLinesPart.read(H))===null||V===void 0?void 0:V.width.read(H))!==null&&Y!==void 0?Y:0,te=de-ue;return this.elements.original.style.width=te+"px",this.elements.original.style.left="0px",this.elements.modified.style.width=he+"px",this.elements.modified.style.left=de+"px",this._editors.original.layout({width:te,height:ae}),this._editors.modified.layout({width:he,height:ae}),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((H,B)=>H?.diff.read(B)),this.onDidUpdateDiff=y.Event.fromObservableLight(this._diffValue),W.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._contextKeyService.createKey("diffEditorVersion",2),this._domElement.appendChild(this.elements.root),this._register((0,E.toDisposable)(()=>this._domElement.removeChild(this.elements.root))),this._rootSizeObserver=this._register(new u.ObservableElementSizeObserver(this.elements.root,A.dimension)),this._rootSizeObserver.setAutomaticLayout((R=A.automaticLayout)!==null&&R!==void 0?R:!1),this._options=new b.DiffEditorOptions(A,this._rootSizeObserver.width),this._contextKeyService.createKey(c.EditorContextKeys.isEmbeddedDiffEditor.key,!1);const K=c.EditorContextKeys.isEmbeddedDiffEditor.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{K.set(this._options.isInEmbeddedEditor.read(H))}));const G=c.EditorContextKeys.comparingMovedCode.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{var B;G.set(!!(!((B=this._diffModel.read(H))===null||B===void 0)&&B.movedTextToCompare.read(H)))}));const Z=c.EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{Z.set(this._options.couldShowInlineViewBecauseOfSize.read(H))})),this._editors=this._register(this._instantiationService.createInstance(v.DiffEditorEditors,this.elements.original,this.elements.modified,this._options,N,(H,B,V,Y)=>this._createInnerEditor(H,B,V,Y))),this._sash=(0,D.derivedWithStore)("sash",(H,B)=>{const V=this._options.renderSideBySide.read(H);if(this.elements.root.classList.toggle("side-by-side",V),!V)return;const Y=B.add(new s.DiffEditorSash(this._options,this.elements.root,{height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((ie,ae)=>ie-(this._options.renderOverviewRuler.read(ae)?t.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH:0))}));return B.add((0,D.autorun)(ie=>{const ae=this._boundarySashes.read(ie);ae&&Y.setBoundarySashes(ae)})),Y}),this._register((0,D.keepAlive)(this._sash,!0)),this._register((0,D.autorunWithStore)((H,B)=>{this.unchangedRangesFeature=B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(a.UnchangedRangesFeature,H),this._editors,this._diffModel,this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(new((0,u.readHotReloadableExport)(C.DiffEditorDecorations,H))(this._editors,this._diffModel,this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(i.ViewZoneManager,H),this._editors,this._diffModel,this._options,this,()=>this.unchangedRangesFeature.isUpdatingViewZones))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(t.OverviewRulerPart,H),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(V=>V.modifiedEditor),this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{this._accessibleDiffViewer=B.add(this._register(this._instantiationService.createInstance((0,u.readHotReloadableExport)(g.AccessibleDiffViewer,H),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(V,Y)=>this._accessibleDiffViewerShouldBeVisible.set(V,Y),this._options.onlyShowAccessibleDiffViewer.map(V=>!V),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((V,Y)=>{var ie;return(ie=V?.diff.read(Y))===null||ie===void 0?void 0:ie.mappings.map(ae=>ae.lineRangeMapping)}),this._editors)))}));const J=this._accessibleDiffViewerVisible.map(H=>H?"hidden":"visible");this._register((0,u.applyStyle)(this.elements.modified,{visibility:J})),this._register((0,u.applyStyle)(this.elements.original,{visibility:J})),this._createDiffEditorContributions(),W.addDiffEditor(this),this._register((0,D.keepAlive)(this._layoutInfo,!0)),this._register((0,D.autorunWithStore)((H,B)=>{this.movedBlocksLinesPart.set(B.add(new((0,u.readHotReloadableExport)(n.MovedBlocksLinesPart,H))(this.elements.root,this._diffModel,this._layoutInfo.map(V=>V.originalEditor),this._layoutInfo.map(V=>V.modifiedEditor),this._editors)),void 0)})),this._register((0,u.applyStyle)(this.elements.overlay,{width:this._layoutInfo.map((H,B)=>H.originalEditor.width+(this._options.renderSideBySide.read(B)?0:H.modifiedEditor.width)),visibility:(0,D.derived)(H=>{var B,V;return this._options.hideUnchangedRegions.read(H)&&((V=(B=this._diffModel.read(H))===null||B===void 0?void 0:B.diff.read(H))===null||V===void 0?void 0:V.mappings.length)===0?"visible":"hidden"})})),this._register(this._editors.modified.onMouseDown(H=>{var B,V;if(!H.event.rightButton&&H.target.position&&(!((B=H.target.element)===null||B===void 0)&&B.className.includes("arrow-revert-change"))){const Y=H.target.position.lineNumber,ie=H.target,ae=this._diffModel.get();if(!ae)return;const ce=(V=ae.diff.get())===null||V===void 0?void 0:V.mappings;if(!ce)return;const de=ce.find(he=>ie?.detail.afterLineNumber===he.lineRangeMapping.modifiedRange.startLineNumber-1||he.lineRangeMapping.modifiedRange.startLineNumber===Y);if(!de)return;this.revert(de.lineRangeMapping),H.event.stopPropagation()}})),this._register(y.Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,H=>{var B,V;if(H?.reason===3){const Y=(V=(B=this._diffModel.get())===null||B===void 0?void 0:B.diff.get())===null||V===void 0?void 0:V.mappings.find(ie=>ie.lineRangeMapping.modifiedRange.contains(H.position.lineNumber));Y?.lineRangeMapping.modifiedRange.isEmpty?this._audioCueService.playAudioCue(o.AudioCue.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):Y?.lineRangeMapping.originalRange.isEmpty?this._audioCueService.playAudioCue(o.AudioCue.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):Y&&this._audioCueService.playAudioCue(o.AudioCue.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}));const X=this._diffModel.map((H,B)=>H?.isDiffUpToDate.read(B));this._register((0,D.autorunWithStore)((H,B)=>{if(X.read(H)===!1){const V=this._editorProgressService.show(!0,1e3);B.add((0,E.toDisposable)(()=>V.done()))}}))}_createInnerEditor(T,A,N,F){return T.createInstance(_.CodeEditorWidget,A,N,F)}_createDiffEditorContributions(){const T=S.EditorExtensionsRegistry.getDiffEditorContributions();for(const A of T)try{this._register(this._instantiationService.createInstance(A.ctor,this))}catch(N){(0,k.onUnexpectedError)(N)}}get _targetEditor(){return this._editors.modified}getEditorType(){return r.EditorType.IDiffEditor}layout(T){this._rootSizeObserver.observe(T)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var T;const A=this._editors.original.saveViewState(),N=this._editors.modified.saveViewState();return{original:A,modified:N,modelState:(T=this._diffModel.get())===null||T===void 0?void 0:T.serializeState()}}restoreViewState(T){var A;if(T&&T.original&&T.modified){const N=T;this._editors.original.restoreViewState(N.original),this._editors.modified.restoreViewState(N.modified),N.modelState&&((A=this._diffModel.get())===null||A===void 0||A.restoreSerializedState(N.modelState))}}createViewModel(T){return new w.DiffEditorViewModel(T,this._options,this._instantiationService.createInstance(h.WorkerBasedDocumentDiffProvider,{diffAlgorithm:this._options.diffAlgorithm.get()}))}getModel(){var T,A;return(A=(T=this._diffModel.get())===null||T===void 0?void 0:T.model)!==null&&A!==void 0?A:null}setModel(T){!T&&this._diffModel.get()&&this._accessibleDiffViewer.close();const A=T?"model"in T?T:this.createViewModel(T):void 0;this._editors.original.setModel(A?A.model.original:null),this._editors.modified.setModel(A?A.model.modified:null),(0,D.transaction)(N=>{this._diffModel.set(A,N)})}updateOptions(T){this._options.updateOptions(T)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var T;const A=(T=this._diffModel.get())===null||T===void 0?void 0:T.diff.get();return A?P(A):null}revert(T){var A;const N=(A=this._diffModel.get())===null||A===void 0?void 0:A.model;if(!N)return;const F=T.innerChanges?T.innerChanges.map(O=>({range:O.modifiedRange,text:N.original.getValueInRange(O.originalRange)})):[{range:T.modifiedRange.toExclusiveRange(),text:N.original.getValueInRange(T.originalRange.toExclusiveRange())}];this._editors.modified.executeEdits("diffEditor",F)}accessibleDiffViewerNext(){this._accessibleDiffViewer.next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.prev()}};e.DiffEditorWidget2=M,e.DiffEditorWidget2=M=ke([fe(3,d.IContextKeyService),fe(4,l.IInstantiationService),fe(5,f.ICodeEditorService),fe(6,o.IAudioCueService),fe(7,I.IEditorProgressService)],M);function P(x){return x.mappings.map(T=>{const A=T.lineRangeMapping;let N,F,O,W,U=A.innerChanges;return A.originalRange.isEmpty?(N=A.originalRange.startLineNumber-1,F=0,U=void 0):(N=A.originalRange.startLineNumber,F=A.originalRange.endLineNumberExclusive-1),A.modifiedRange.isEmpty?(O=A.modifiedRange.startLineNumber-1,W=0,U=void 0):(O=A.modifiedRange.startLineNumber,W=A.modifiedRange.endLineNumberExclusive-1),{originalStartLineNumber:N,originalEndLineNumber:F,modifiedStartLineNumber:O,modifiedEndLineNumber:W,charChanges:U?.map(j=>({originalStartLineNumber:j.originalRange.startLineNumber,originalStartColumn:j.originalRange.startColumn,originalEndLineNumber:j.originalRange.endLineNumber,originalEndColumn:j.originalRange.endColumn,modifiedStartLineNumber:j.modifiedRange.startLineNumber,modifiedStartColumn:j.modifiedRange.startColumn,modifiedEndLineNumber:j.modifiedRange.endLineNumber,modifiedEndColumn:j.modifiedRange.endColumn}))}})}}),define(ne[162],se([1,0,47,33,161,27,15,8,43,23,84,32,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EmbeddedCodeEditorWidget=void 0;let n=class extends y.CodeEditorWidget{constructor(a,u,h,r,c,o,d,l,p,m,v,b,w){super(a,Object.assign(Object.assign({},r.getRawOptions()),{overflowWidgetsDomNode:r.getOverflowWidgetsDomNode()}),h,c,o,d,l,p,m,v,b,w),this._parentEditor=r,this._overwriteOptions=u,super.updateOptions(this._overwriteOptions),this._register(r.onDidChangeConfiguration(E=>this._onParentConfigurationChanged(E)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(a){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(a){L.mixin(this._overwriteOptions,a,!0),super.updateOptions(this._overwriteOptions)}};e.EmbeddedCodeEditorWidget=n,e.EmbeddedCodeEditorWidget=n=ke([fe(4,f.IInstantiationService),fe(5,k.ICodeEditorService),fe(6,D.ICommandService),fe(7,S.IContextKeyService),fe(8,g.IThemeService),fe(9,_.INotificationService),fe(10,C.IAccessibilityService),fe(11,s.ILanguageConfigurationService),fe(12,i.ILanguageFeaturesService)],n)}),define(ne[877],se([1,0,13,2,16,12,5,24,21,48,40,633,30,31,23,437]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketMatchingController=void 0;const a=(0,n.registerColor)("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hcDark:"#A0A0A0",hcLight:"#A0A0A0"},s.localize(0,null));class u extends y.EditorAction{constructor(){super({id:"editor.action.jumpToBracket",label:s.localize(1,null),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3165,weight:100}})}run(l,p){var m;(m=o.get(p))===null||m===void 0||m.jumpToBracket()}}class h extends y.EditorAction{constructor(){super({id:"editor.action.selectToBracket",label:s.localize(2,null),alias:"Select to Bracket",precondition:void 0,description:{description:"Select to Bracket",args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(l,p,m){var v;let b=!0;m&&m.selectBrackets===!1&&(b=!1),(v=o.get(p))===null||v===void 0||v.selectToBracket(b)}}class r extends y.EditorAction{constructor(){super({id:"editor.action.removeBrackets",label:s.localize(3,null),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:2561,weight:100}})}run(l,p){var m;(m=o.get(p))===null||m===void 0||m.removeBrackets(this.id)}}class c{constructor(l,p,m){this.position=l,this.brackets=p,this.options=m}}class o extends k.Disposable{static get(l){return l.getContribution(o.ID)}constructor(l){super(),this._editor=l,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new L.RunOnceScheduler(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(70),this._updateBracketsSoon.schedule(),this._register(l.onDidChangeCursorPosition(p=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModelContent(p=>{this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModel(p=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModelLanguageConfiguration(p=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeConfiguration(p=>{p.hasChanged(70)&&(this._matchBrackets=this._editor.getOption(70),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(l.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(l.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const l=this._editor.getModel(),p=this._editor.getSelections().map(m=>{const v=m.getStartPosition(),b=l.bracketPairs.matchBracket(v);let w=null;if(b)b[0].containsPosition(v)&&!b[1].containsPosition(v)?w=b[1].getStartPosition():b[1].containsPosition(v)&&(w=b[0].getStartPosition());else{const E=l.bracketPairs.findEnclosingBrackets(v);if(E)w=E[1].getStartPosition();else{const I=l.bracketPairs.findNextBracket(v);I&&I.range&&(w=I.range.getStartPosition())}}return w?new f.Selection(w.lineNumber,w.column,w.lineNumber,w.column):new f.Selection(v.lineNumber,v.column,v.lineNumber,v.column)});this._editor.setSelections(p),this._editor.revealRange(p[0])}selectToBracket(l){if(!this._editor.hasModel())return;const p=this._editor.getModel(),m=[];this._editor.getSelections().forEach(v=>{const b=v.getStartPosition();let w=p.bracketPairs.matchBracket(b);if(!w&&(w=p.bracketPairs.findEnclosingBrackets(b),!w)){const M=p.bracketPairs.findNextBracket(b);M&&M.range&&(w=p.bracketPairs.matchBracket(M.range.getStartPosition()))}let E=null,I=null;if(w){w.sort(S.Range.compareRangesUsingStarts);const[M,P]=w;if(E=l?M.getStartPosition():M.getEndPosition(),I=l?P.getEndPosition():P.getStartPosition(),P.containsPosition(b)){const x=E;E=I,I=x}}E&&I&&m.push(new f.Selection(E.lineNumber,E.column,I.lineNumber,I.column))}),m.length>0&&(this._editor.setSelections(m),this._editor.revealRange(m[0]))}removeBrackets(l){if(!this._editor.hasModel())return;const p=this._editor.getModel();this._editor.getSelections().forEach(m=>{const v=m.getPosition();let b=p.bracketPairs.matchBracket(v);b||(b=p.bracketPairs.findEnclosingBrackets(v)),b&&(this._editor.pushUndoStop(),this._editor.executeEdits(l,[{range:b[0],text:""},{range:b[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const l=[];let p=0;for(const m of this._lastBracketsData){const v=m.brackets;v&&(l[p++]={range:v[0],options:m.options},l[p++]={range:v[1],options:m.options})}this._decorations.set(l)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const l=this._editor.getSelections();if(l.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const p=this._editor.getModel(),m=p.getVersionId();let v=[];this._lastVersionId===m&&(v=this._lastBracketsData);const b=[];let w=0;for(let x=0,T=l.length;x1&&b.sort(D.Position.compare);const E=[];let I=0,M=0;const P=v.length;for(let x=0,T=b.length;x{o.symbol.command&&c.push(o.symbol),t.addDecoration({range:o.symbol.range,options:g},l=>this._decorationIds[d]=l),r?r=y.Range.plusRange(r,o.symbol.range):r=y.Range.lift(o.symbol.range)}),this._viewZone=new S(r.startLineNumber-1,u,h),this._viewZoneId=a.addZone(this._viewZone),c.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(c,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new f(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(i,n){this._decorationIds.forEach(i.removeDecoration,i),this._decorationIds=[],n?.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((i,n)=>{const t=this._editor.getModel().getDecorationRange(i),a=this._data[n].symbol;return!!(t&&y.Range.isEmpty(a.range)===t.isEmpty())})}updateCodeLensSymbols(i,n){this._decorationIds.forEach(n.removeDecoration,n),this._decorationIds=[],this._data=i,this._data.forEach((t,a)=>{n.addDecoration({range:t.symbol.range,options:g},u=>this._decorationIds[a]=u)})}updateHeight(i,n){this._viewZone.heightInPx=i,n.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(i){if(!this._viewZone.isVisible())return null;for(let n=0;nthis._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(b=>{(b.hasChanged(49)||b.hasChanged(18)||b.hasChanged(17))&&this._updateLensStyle(),b.hasChanged(16)&&this._onModelChange()})),this._disposables.add(d.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var o;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(o=this._currentCodeLensModel)===null||o===void 0||o.dispose()}_getLayoutInfo(){const o=Math.max(1.3,this._editor.getOption(65)/this._editor.getOption(51));let d=this._editor.getOption(18);return(!d||d<5)&&(d=this._editor.getOption(51)*.9|0),{fontSize:d,codeLensHeight:d*o|0}}_updateLensStyle(){const{codeLensHeight:o,fontSize:d}=this._getLayoutInfo(),l=this._editor.getOption(17),p=this._editor.getOption(49),{style:m}=this._editor.getContainerDomNode();m.setProperty("--vscode-editorCodeLens-lineHeight",`${o}px`),m.setProperty("--vscode-editorCodeLens-fontSize",`${d}px`),m.setProperty("--vscode-editorCodeLens-fontFeatureSettings",p.fontFeatureSettings),l&&(m.setProperty("--vscode-editorCodeLens-fontFamily",l),m.setProperty("--vscode-editorCodeLens-fontFamilyDefault",f.EDITOR_FONT_DEFAULTS.fontFamily)),this._editor.changeViewZones(v=>{for(const b of this._lenses)b.updateHeight(o,v)})}_localDispose(){var o,d,l;(o=this._getCodeLensModelPromise)===null||o===void 0||o.cancel(),this._getCodeLensModelPromise=void 0,(d=this._resolveCodeLensesPromise)===null||d===void 0||d.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(l=this._currentCodeLensModel)===null||l===void 0||l.dispose()}_onModelChange(){this._localDispose();const o=this._editor.getModel();if(!o||!this._editor.getOption(16))return;const d=this._codeLensCache.get(o);if(d&&this._renderCodeLensSymbols(d),!this._languageFeaturesService.codeLensProvider.has(o)){d&&this._localToDispose.add((0,L.disposableTimeout)(()=>{const p=this._codeLensCache.get(o);d===p&&(this._codeLensCache.delete(o),this._onModelChange())},30*1e3));return}for(const p of this._languageFeaturesService.codeLensProvider.all(o))if(typeof p.onDidChange=="function"){const m=p.onDidChange(()=>l.schedule());this._localToDispose.add(m)}const l=new L.RunOnceScheduler(()=>{var p;const m=Date.now();(p=this._getCodeLensModelPromise)===null||p===void 0||p.cancel(),this._getCodeLensModelPromise=(0,L.createCancelablePromise)(v=>(0,g.getCodeLensModel)(this._languageFeaturesService.codeLensProvider,o,v)),this._getCodeLensModelPromise.then(v=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=v,this._codeLensCache.put(o,v);const b=this._provideCodeLensDebounce.update(o,Date.now()-m);l.delay=b,this._renderCodeLensSymbols(v),this._resolveCodeLensesInViewportSoon()},k.onUnexpectedError)},this._provideCodeLensDebounce.get(o));this._localToDispose.add(l),this._localToDispose.add((0,y.toDisposable)(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var p;this._editor.changeDecorations(m=>{this._editor.changeViewZones(v=>{const b=[];let w=-1;this._lenses.forEach(I=>{!I.isValid()||w===I.getLineNumber()?b.push(I):(I.update(v),w=I.getLineNumber())});const E=new s.CodeLensHelper;b.forEach(I=>{I.dispose(E,v),this._lenses.splice(this._lenses.indexOf(I),1)}),E.commit(m)})}),l.schedule(),this._resolveCodeLensesScheduler.cancel(),(p=this._resolveCodeLensesPromise)===null||p===void 0||p.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorWidget(()=>{l.schedule()})),this._localToDispose.add(this._editor.onDidScrollChange(p=>{p.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add((0,y.toDisposable)(()=>{if(this._editor.getModel()){const p=D.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(m=>{this._editor.changeViewZones(v=>{this._disposeAllLenses(m,v)})}),p.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(p=>{if(p.target.type!==9)return;let m=p.target.element;if(m?.tagName==="SPAN"&&(m=m.parentElement),m?.tagName==="A")for(const v of this._lenses){const b=v.getCommand(m);if(b){this._commandService.executeCommand(b.id,...b.arguments||[]).catch(w=>this._notificationService.error(w));break}}})),l.schedule()}_disposeAllLenses(o,d){const l=new s.CodeLensHelper;for(const p of this._lenses)p.dispose(l,d);o&&l.commit(o),this._lenses.length=0}_renderCodeLensSymbols(o){if(!this._editor.hasModel())return;const d=this._editor.getModel().getLineCount(),l=[];let p;for(const b of o.lenses){const w=b.symbol.range.startLineNumber;w<1||w>d||(p&&p[p.length-1].symbol.range.startLineNumber===w?p.push(b):(p=[b],l.push(p)))}if(!l.length&&!this._lenses.length)return;const m=D.StableEditorScrollState.capture(this._editor),v=this._getLayoutInfo();this._editor.changeDecorations(b=>{this._editor.changeViewZones(w=>{const E=new s.CodeLensHelper;let I=0,M=0;for(;Mthis._resolveCodeLensesInViewportSoon())),I++,M++)}for(;Ithis._resolveCodeLensesInViewportSoon())),M++;E.commit(b)})}),m.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var o;(o=this._resolveCodeLensesPromise)===null||o===void 0||o.cancel(),this._resolveCodeLensesPromise=void 0;const d=this._editor.getModel();if(!d)return;const l=[],p=[];if(this._lenses.forEach(b=>{const w=b.computeIfNecessary(d);w&&(l.push(w),p.push(b))}),l.length===0)return;const m=Date.now(),v=(0,L.createCancelablePromise)(b=>{const w=l.map((E,I)=>{const M=new Array(E.length),P=E.map((x,T)=>!x.symbol.command&&typeof x.provider.resolveCodeLens=="function"?Promise.resolve(x.provider.resolveCodeLens(d,x.symbol,b)).then(A=>{M[T]=A},k.onUnexpectedExternalError):(M[T]=x.symbol,Promise.resolve(void 0)));return Promise.all(P).then(()=>{!b.isCancellationRequested&&!p[I].isDisposed()&&p[I].updateCommands(M)})});return Promise.all(w)});this._resolveCodeLensesPromise=v,this._resolveCodeLensesPromise.then(()=>{const b=this._resolveCodeLensesDebounce.update(d,Date.now()-m);this._resolveCodeLensesScheduler.delay=b,this._currentCodeLensModel&&this._codeLensCache.put(d,this._currentCodeLensModel),this._oldCodeLensModels.clear(),v===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},b=>{(0,k.onUnexpectedError)(b),v===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}getModel(){return this._currentCodeLensModel}};e.CodeLensContribution=r,r.ID="css.editor.codeLens",e.CodeLensContribution=r=ke([fe(1,h.ILanguageFeaturesService),fe(2,u.ILanguageFeatureDebounceService),fe(3,n.ICommandService),fe(4,t.INotificationService),fe(5,C.ICodeLensCache)],r),(0,S.registerEditorContribution)(r.ID,r,1),(0,S.registerEditorAction)(class extends S.EditorAction{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:_.EditorContextKeys.hasCodeLensProvider,label:(0,i.localize)(0,null),alias:"Show CodeLens Commands For Current Line"})}run(o,d){return we(this,void 0,void 0,function*(){if(!d.hasModel())return;const l=o.get(a.IQuickInputService),p=o.get(n.ICommandService),m=o.get(t.INotificationService),v=d.getSelection().positionLineNumber,b=d.getContribution(r.ID);if(!b)return;const w=b.getModel();if(!w)return;const E=[];for(const M of w.lenses)M.symbol.command&&M.symbol.range.startLineNumber===v&&E.push({label:M.symbol.command.title,command:M.symbol.command});if(E.length===0)return;const I=yield l.pick(E,{canPickMany:!1});if(I){if(w.isDisposed)return yield p.executeCommand(this.id);try{yield p.executeCommand(I.command.id,...I.command.arguments||[])}catch(M){m.error(M)}}})}})}),define(ne[363],se([1,0,13,38,9,6,2,58,11,159,16,5,40,76,18,343,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.DecoratorLimitReporter=e.ColorDetector=e.ColorDecorationInjectedTextMarker=void 0,e.ColorDecorationInjectedTextMarker=Object.create({});let r=h=class extends S.Disposable{constructor(d,l,p,m){super(),this._editor=d,this._configurationService=l,this._languageFeaturesService=p,this._localToDispose=this._register(new S.DisposableStore),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new g.DynamicCssRules(this._editor),this._decoratorLimitReporter=new c,this._colorDecorationClassRefs=this._register(new S.DisposableStore),this._debounceInformation=m.for(p.colorProvider,"Document Colors",{min:h.RECOMPUTE_TIME}),this._register(d.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(d.onDidChangeModelLanguage(()=>this.updateColors())),this._register(p.colorProvider.onDidChange(()=>this.updateColors())),this._register(d.onDidChangeConfiguration(v=>{const b=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(144);const w=b!==this._isColorDecoratorsEnabled||v.hasChanged(20),E=v.hasChanged(144);(w||E)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(144),this.updateColors()}isEnabled(){const d=this._editor.getModel();if(!d)return!1;const l=d.getLanguageId(),p=this._configurationService.getValue(l);if(p&&typeof p=="object"){const m=p.colorDecorators;if(m&&m.enable!==void 0&&!m.enable)return m.enable}return this._editor.getOption(19)}static get(d){return d.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const d=this._editor.getModel();!d||!this._languageFeaturesService.colorProvider.has(d)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new L.TimeoutTimer,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(d)))})),this.beginCompute())}beginCompute(){return we(this,void 0,void 0,function*(){this._computePromise=(0,L.createCancelablePromise)(d=>we(this,void 0,void 0,function*(){const l=this._editor.getModel();if(!l)return[];const p=new f.StopWatch(!1),m=yield(0,a.getColors)(this._languageFeaturesService.colorProvider,l,d,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(l,p.elapsed()),m}));try{const d=yield this._computePromise;this.updateDecorations(d),this.updateColorDecorators(d),this._computePromise=null}catch(d){(0,y.onUnexpectedError)(d)}})}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(d){const l=d.map(p=>({range:{startLineNumber:p.colorInfo.range.startLineNumber,startColumn:p.colorInfo.range.startColumn,endLineNumber:p.colorInfo.range.endLineNumber,endColumn:p.colorInfo.range.endColumn},options:i.ModelDecorationOptions.EMPTY}));this._editor.changeDecorations(p=>{this._decorationsIds=p.deltaDecorations(this._decorationsIds,l),this._colorDatas=new Map,this._decorationsIds.forEach((m,v)=>this._colorDatas.set(m,d[v]))})}updateColorDecorators(d){this._colorDecorationClassRefs.clear();const l=[],p=this._editor.getOption(20);for(let v=0;vthis._colorDatas.has(m.id));return p.length===0?null:this._colorDatas.get(p[0].id)}isColorDecoration(d){return this._colorDecoratorIds.has(d)}};e.ColorDetector=r,r.ID="editor.contrib.colorDetector",r.RECOMPUTE_TIME=1e3,e.ColorDetector=r=h=ke([fe(1,u.IConfigurationService),fe(2,t.ILanguageFeaturesService),fe(3,n.ILanguageFeatureDebounceService)],r);class c{constructor(){this._onDidChange=new D.Emitter,this._computed=0,this._limited=!1}update(d,l){(d!==this._computed||l!==this._limited)&&(this._computed=d,this._limited=l,this._onDidChange.fire())}}e.DecoratorLimitReporter=c,(0,C.registerEditorContribution)(r.ID,r,1)}),define(ne[364],se([1,0,13,19,38,2,5,343,363,538,831,23,7]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneColorPickerParticipant=e.StandaloneColorPickerHover=e.ColorHoverParticipant=e.ColorHover=void 0;class n{constructor(l,p,m,v){this.owner=l,this.range=p,this.model=m,this.provider=v,this.forceShowAtRange=!0}isValidForHoverAnchor(l){return l.type===1&&this.range.startColumn<=l.range.startColumn&&this.range.endColumn>=l.range.endColumn}}e.ColorHover=n;let t=class{constructor(l,p){this._editor=l,this._themeService=p,this.hoverOrdinal=2}computeSync(l,p){return[]}computeAsync(l,p,m){return L.AsyncIterableObject.fromPromise(this._computeAsync(l,p,m))}_computeAsync(l,p,m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return[];const v=_.ColorDetector.get(this._editor);if(!v)return[];for(const b of p){if(!v.isColorDecoration(b))continue;const w=v.getColorData(b.range.getStartPosition());if(w)return[yield h(this,this._editor.getModel(),w.colorInfo,w.provider)]}return[]})}renderHoverParts(l,p){return r(this,this._editor,this._themeService,p,l)}};e.ColorHoverParticipant=t,e.ColorHoverParticipant=t=ke([fe(1,s.IThemeService)],t);class a{constructor(l,p,m,v){this.owner=l,this.range=p,this.model=m,this.provider=v}}e.StandaloneColorPickerHover=a;let u=class{constructor(l,p){this._editor=l,this._themeService=p,this._color=null}createColorHover(l,p,m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!_.ColorDetector.get(this._editor))return null;const b=yield(0,f.getColors)(m,this._editor.getModel(),k.CancellationToken.None);let w=null,E=null;for(const x of b){const T=x.colorInfo;S.Range.containsRange(T.range,l.range)&&(w=T,E=x.provider)}const I=w??l,M=E??p,P=!!w;return{colorHover:yield h(this,this._editor.getModel(),I,M),foundInEditor:P}})}updateEditorModel(l){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return;const p=l.model;let m=new S.Range(l.range.startLineNumber,l.range.startColumn,l.range.endLineNumber,l.range.endColumn);this._color&&(yield o(this._editor.getModel(),p,this._color,m,l),m=c(this._editor,m,p))})}renderHoverParts(l,p){return r(this,this._editor,this._themeService,p,l)}set color(l){this._color=l}get color(){return this._color}};e.StandaloneColorPickerParticipant=u,e.StandaloneColorPickerParticipant=u=ke([fe(1,s.IThemeService)],u);function h(d,l,p,m){return we(this,void 0,void 0,function*(){const v=l.getValueInRange(p.range),{red:b,green:w,blue:E,alpha:I}=p.color,M=new y.RGBA(Math.round(b*255),Math.round(w*255),Math.round(E*255),I),P=new y.Color(M),x=yield(0,f.getColorPresentations)(l,p,m,k.CancellationToken.None),T=new g.ColorPickerModel(P,[],0);return T.colorPresentations=x||[],T.guessColorPresentation(P,v),d instanceof t?new n(d,S.Range.lift(p.range),T,m):new a(d,S.Range.lift(p.range),T,m)})}function r(d,l,p,m,v){if(m.length===0||!l.hasModel())return D.Disposable.None;if(v.setMinimumDimensions){const T=l.getOption(65)+8;v.setMinimumDimensions(new i.Dimension(302,T))}const b=new D.DisposableStore,w=m[0],E=l.getModel(),I=w.model,M=b.add(new C.ColorPickerWidget(v.fragment,I,l.getOption(140),p,d instanceof u));v.setColorPicker(M);let P=!1,x=new S.Range(w.range.startLineNumber,w.range.startColumn,w.range.endLineNumber,w.range.endColumn);if(d instanceof u){const T=m[0].model.color;d.color=T,o(E,I,T,x,w),b.add(I.onColorFlushed(A=>{d.color=A}))}else b.add(I.onColorFlushed(T=>we(this,void 0,void 0,function*(){yield o(E,I,T,x,w),P=!0,x=c(l,x,I,v)})));return b.add(I.onDidChangeColor(T=>{o(E,I,T,x,w)})),b.add(l.onDidChangeModelContent(T=>{P?P=!1:(v.hide(),l.focus())})),b}function c(d,l,p,m){let v,b;if(p.presentation.textEdit){v=[p.presentation.textEdit],b=new S.Range(p.presentation.textEdit.range.startLineNumber,p.presentation.textEdit.range.startColumn,p.presentation.textEdit.range.endLineNumber,p.presentation.textEdit.range.endColumn);const w=d.getModel()._setTrackedRange(null,b,3);d.pushUndoStop(),d.executeEdits("colorpicker",v),b=d.getModel()._getTrackedRange(w)||b}else v=[{range:l,text:p.presentation.label,forceMoveMarkers:!1}],b=l.setEndPosition(l.endLineNumber,l.startColumn+p.presentation.label.length),d.pushUndoStop(),d.executeEdits("colorpicker",v);return p.presentation.additionalTextEdits&&(v=[...p.presentation.additionalTextEdits],d.executeEdits("colorpicker",v),m&&m.hide()),d.pushUndoStop(),b}function o(d,l,p,m,v){return we(this,void 0,void 0,function*(){const b=yield(0,f.getColorPresentations)(d,{range:m,color:{red:p.rgba.r/255,green:p.rgba.g/255,blue:p.rgba.b/255,alpha:p.rgba.a}},v.provider,k.CancellationToken.None);l.colorPresentations=b||[]})}}),define(ne[880],se([1,0,2,17,16,12,5,24,40,540,440]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DragAndDropController=void 0;function C(i){return k.isMacintosh?i.altKey:i.ctrlKey}class s extends L.Disposable{constructor(n){super(),this._editor=n,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(n){!this._editor.getOption(34)||this._editor.getOption(21)||(C(n)&&(this._modifierPressed=!0),this._mouseDown&&C(n)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(n){!this._editor.getOption(34)||this._editor.getOption(21)||(C(n)&&(this._modifierPressed=!1),this._mouseDown&&n.keyCode===s.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(n){this._mouseDown=!0}_onEditorMouseUp(n){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(n){const t=n.target;if(this._dragSelection===null){const u=(this._editor.getSelections()||[]).filter(h=>t.position&&h.containsPosition(t.position));if(u.length===1)this._dragSelection=u[0];else return}C(n.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(n){if(n.target&&(this._hitContent(n.target)||this._hitMargin(n.target))&&n.target.position){const t=new D.Position(n.target.position.lineNumber,n.target.position.column);if(this._dragSelection===null){let a=null;if(n.event.shiftKey){const u=this._editor.getSelection();if(u){const{selectionStartLineNumber:h,selectionStartColumn:r}=u;a=[new f.Selection(h,r,t.lineNumber,t.column)]}}else a=(this._editor.getSelections()||[]).map(u=>u.containsPosition(t)?new f.Selection(t.lineNumber,t.column,t.lineNumber,t.column):u);this._editor.setSelections(a||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(C(n.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(s.ID,new g.DragAndDropCommand(this._dragSelection,t,C(n.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(n){this._dndDecorationIds.set([{range:new S.Range(n.lineNumber,n.column,n.lineNumber,n.column),options:s._DECORATION_OPTIONS}]),this._editor.revealPosition(n,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(n){return n.type===6||n.type===7}_hitMargin(n){return n.type===2||n.type===3||n.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}e.DragAndDropController=s,s.ID="editor.contrib.dragAndDrop",s.TRIGGER_KEY_VALUE=k.isMacintosh?6:5,s._DECORATION_OPTIONS=_.ModelDecorationOptions.register({description:"dnd-target",className:"dnd-target"}),(0,y.registerEditorContribution)(s.ID,s,2)}),define(ne[881],se([1,0,5,48,40,31,23]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindDecorations=void 0;class f{constructor(g){this._editor=g,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const g=this._findScopeDecorationIds.map(C=>this._editor.getModel().getDecorationRange(C)).filter(C=>!!C);if(g.length)return g}return null}getStartPosition(){return this._startPosition}setStartPosition(g){this._startPosition=g,this.setCurrentFindMatch(null)}_getDecorationIndex(g){const C=this._decorations.indexOf(g);return C>=0?C+1:1}getDecorationRangeAt(g){const C=g{if(this._highlightedDecorationId!==null&&(i.changeDecorationOptions(this._highlightedDecorationId,f._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),C!==null&&(this._highlightedDecorationId=C,i.changeDecorationOptions(this._highlightedDecorationId,f._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),C!==null){let n=this._editor.getModel().getDecorationRange(C);if(n.startLineNumber!==n.endLineNumber&&n.endColumn===1){const t=n.endLineNumber-1,a=this._editor.getModel().getLineMaxColumn(t);n=new L.Range(n.startLineNumber,n.startColumn,t,a)}this._rangeHighlightDecorationId=i.addDecoration(n,f._RANGE_HIGHLIGHT_DECORATION)}}),s}set(g,C){this._editor.changeDecorations(s=>{let i=f._FIND_MATCH_DECORATION;const n=[];if(g.length>1e3){i=f._FIND_MATCH_NO_OVERVIEW_DECORATION;const a=this._editor.getModel().getLineCount(),h=this._editor.getLayoutInfo().height/a,r=Math.max(2,Math.ceil(3/h));let c=g[0].range.startLineNumber,o=g[0].range.endLineNumber;for(let d=1,l=g.length;d=p.startLineNumber?p.endLineNumber>o&&(o=p.endLineNumber):(n.push({range:new L.Range(c,1,o,1),options:f._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),c=p.startLineNumber,o=p.endLineNumber)}n.push({range:new L.Range(c,1,o,1),options:f._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const t=new Array(g.length);for(let a=0,u=g.length;as.removeDecoration(a)),this._findScopeDecorationIds=[]),C?.length&&(this._findScopeDecorationIds=C.map(a=>s.addDecoration(a,f._FIND_SCOPE_DECORATION)))})}matchBeforePosition(g){if(this._decorations.length===0)return null;for(let C=this._decorations.length-1;C>=0;C--){const s=this._decorations[C],i=this._editor.getModel().getDecorationRange(s);if(!(!i||i.endLineNumber>g.lineNumber)){if(i.endLineNumberg.column))return i}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(g){if(this._decorations.length===0)return null;for(let C=0,s=this._decorations.length;Cg.lineNumber)return n;if(!(n.startColumnthis.research(!1),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(c=>{(c.reason===3||c.reason===5||c.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(c=>{this._ignoreModelContentChanged||(c.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(c=>this._onStateChanged(c))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,(0,y.dispose)(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(h){this._isDisposed||this._editor.hasModel()&&(h.searchString||h.isReplaceRevealed||h.isRegex||h.wholeWord||h.matchCase||h.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{h.searchScope?this.research(h.moveCursor,this._state.searchScope):this.research(h.moveCursor)},t)):h.searchScope?this.research(h.moveCursor,this._state.searchScope):this.research(h.moveCursor))}static _getSearchRange(h,r){return r||h.getFullModelRange()}research(h,r){let c=null;typeof r<"u"?r!==null&&(Array.isArray(r)?c=r:c=[r]):c=this._decorations.getFindScopes(),c!==null&&(c=c.map(p=>{if(p.startLineNumber!==p.endLineNumber){let m=p.endLineNumber;return p.endColumn===1&&(m=m-1),new f.Range(p.startLineNumber,1,m,this._editor.getModel().getLineMaxColumn(m))}return p}));const o=this._findMatches(c,!1,e.MATCHES_LIMIT);this._decorations.set(o,c);const d=this._editor.getSelection();let l=this._decorations.getCurrentMatchesPosition(d);if(l===0&&o.length>0){const p=(0,L.findFirstInSorted)(o.map(m=>m.range),m=>f.Range.compareRangesUsingStarts(m,d)>=0);l=p>0?p-1+1:l}this._state.changeMatchInfo(l,this._decorations.getCount(),void 0),h&&this._editor.getOption(40).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const h=this._decorations.getFindScope();return h&&this._editor.revealRangeInCenterIfOutsideViewport(h,0),!0}return!1}_setCurrentFindMatch(h){const r=this._decorations.setCurrentFindMatch(h);this._state.changeMatchInfo(r,this._decorations.getCount(),h),this._editor.setSelection(h),this._editor.revealRangeInCenterIfOutsideViewport(h,0)}_prevSearchPosition(h){const r=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:c,column:o}=h;const d=this._editor.getModel();return r||o===1?(c===1?c=d.getLineCount():c--,o=d.getLineMaxColumn(c)):o--,new S.Position(c,o)}_moveToPrevMatch(h,r=!1){if(!this._state.canNavigateBack()){const b=this._decorations.matchAfterPosition(h);b&&this._setCurrentFindMatch(b);return}if(this._decorations.getCount()=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:c,column:o}=h;const d=this._editor.getModel();return r||o===d.getLineMaxColumn(c)?(c===d.getLineCount()?c=1:c++,o=1):o++,new S.Position(c,o)}_moveToNextMatch(h){if(!this._state.canNavigateForward()){const c=this._decorations.matchBeforePosition(h);c&&this._setCurrentFindMatch(c);return}if(this._decorations.getCount()a._getSearchRange(this._editor.getModel(),d));return this._editor.getModel().findMatches(this._state.searchString,o,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,r,c)}replaceAll(){if(!this._hasMatches())return;const h=this._decorations.getFindScopes();h===null&&this._state.matchesCount>=e.MATCHES_LIMIT?this._largeReplaceAll():this._regularReplaceAll(h),this.research(!1)}_largeReplaceAll(){const r=new g.SearchParams(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null).parseSearchRequest();if(!r)return;let c=r.regex;if(!c.multiline){let w="mu";c.ignoreCase&&(w+="i"),c.global&&(w+="g"),c=new RegExp(c.source,w)}const o=this._editor.getModel(),d=o.getValue(1),l=o.getFullModelRange(),p=this._getReplacePattern();let m;const v=this._state.preserveCase;p.hasReplacementPatterns||v?m=d.replace(c,function(){return p.buildReplaceString(arguments,v)}):m=d.replace(c,p.buildReplaceString(null,v));const b=new D.ReplaceCommandThatPreservesSelection(l,m,this._editor.getSelection());this._executeEditorCommand("replaceAll",b)}_regularReplaceAll(h){const r=this._getReplacePattern(),c=this._findMatches(h,r.hasReplacementPatterns||this._state.preserveCase,1073741824),o=[];for(let l=0,p=c.length;ll.range),o);this._executeEditorCommand("replaceAll",d)}selectAllMatches(){if(!this._hasMatches())return;const h=this._decorations.getFindScopes();let c=this._findMatches(h,!1,1073741824).map(d=>new _.Selection(d.range.startLineNumber,d.range.startColumn,d.range.endLineNumber,d.range.endColumn));const o=this._editor.getSelection();for(let d=0,l=c.length;dthis._hide(),2e3)),this._isVisible=!1,this._editor=C,this._state=s,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const n={inputActiveOptionBorder:(0,f.asCssVariable)(f.inputActiveOptionBorder),inputActiveOptionForeground:(0,f.asCssVariable)(f.inputActiveOptionForeground),inputActiveOptionBackground:(0,f.asCssVariable)(f.inputActiveOptionBackground)};this.caseSensitive=this._register(new k.CaseSensitiveToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase},n))),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new k.WholeWordsToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleWholeWordCommand),isChecked:this._state.wholeWord},n))),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new k.RegexToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleRegexCommand),isChecked:this._state.isRegex},n))),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(t=>{let a=!1;t.isRegex&&(this.regex.checked=this._state.isRegex,a=!0),t.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,a=!0),t.matchCase&&(this.caseSensitive.checked=this._state.matchCase,a=!0),!this._state.isRevealed&&a&&this._revealTemporarily()})),this._register(L.addDisposableListener(this._domNode,L.EventType.MOUSE_LEAVE,t=>this._onMouseLeave())),this._register(L.addDisposableListener(this._domNode,"mouseover",t=>this._onMouseOver()))}_keybindingLabelFor(C){const s=this._keybindingService.lookupKeybinding(C);return s?` (${s.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return _.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}}e.FindOptionsWidget=_,_.ID="editor.contrib.findOptionsWidget"}),define(ne[883],se([1,0,6,2,5,193]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindReplaceState=void 0;function S(_,g){return _===1?!0:_===2?!1:g}class f extends k.Disposable{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return S(this._isRegexOverride,this._isRegex)}get wholeWord(){return S(this._wholeWordOverride,this._wholeWord)}get matchCase(){return S(this._matchCaseOverride,this._matchCase)}get preserveCase(){return S(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new L.Emitter),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(g,C,s){const i={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let n=!1;C===0&&(g=0),g>C&&(g=C),this._matchesPosition!==g&&(this._matchesPosition=g,i.matchesPosition=!0,n=!0),this._matchesCount!==C&&(this._matchesCount=C,i.matchesCount=!0,n=!0),typeof s<"u"&&(y.Range.equalsRange(this._currentMatch,s)||(this._currentMatch=s,i.currentMatch=!0,n=!0)),n&&this._onFindReplaceStateChange.fire(i)}change(g,C,s=!0){var i;const n={moveCursor:C,updateHistory:s,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let t=!1;const a=this.isRegex,u=this.wholeWord,h=this.matchCase,r=this.preserveCase;typeof g.searchString<"u"&&this._searchString!==g.searchString&&(this._searchString=g.searchString,n.searchString=!0,t=!0),typeof g.replaceString<"u"&&this._replaceString!==g.replaceString&&(this._replaceString=g.replaceString,n.replaceString=!0,t=!0),typeof g.isRevealed<"u"&&this._isRevealed!==g.isRevealed&&(this._isRevealed=g.isRevealed,n.isRevealed=!0,t=!0),typeof g.isReplaceRevealed<"u"&&this._isReplaceRevealed!==g.isReplaceRevealed&&(this._isReplaceRevealed=g.isReplaceRevealed,n.isReplaceRevealed=!0,t=!0),typeof g.isRegex<"u"&&(this._isRegex=g.isRegex),typeof g.wholeWord<"u"&&(this._wholeWord=g.wholeWord),typeof g.matchCase<"u"&&(this._matchCase=g.matchCase),typeof g.preserveCase<"u"&&(this._preserveCase=g.preserveCase),typeof g.searchScope<"u"&&(!((i=g.searchScope)===null||i===void 0)&&i.every(c=>{var o;return(o=this._searchScope)===null||o===void 0?void 0:o.some(d=>!y.Range.equalsRange(d,c))})||(this._searchScope=g.searchScope,n.searchScope=!0,t=!0)),typeof g.loop<"u"&&this._loop!==g.loop&&(this._loop=g.loop,n.loop=!0,t=!0),typeof g.isSearching<"u"&&this._isSearching!==g.isSearching&&(this._isSearching=g.isSearching,n.isSearching=!0,t=!0),typeof g.filters<"u"&&(this._filters?this._filters.update(g.filters):this._filters=g.filters,n.filters=!0,t=!0),this._isRegexOverride=typeof g.isRegexOverride<"u"?g.isRegexOverride:0,this._wholeWordOverride=typeof g.wholeWordOverride<"u"?g.wholeWordOverride:0,this._matchCaseOverride=typeof g.matchCaseOverride<"u"?g.matchCaseOverride:0,this._preserveCaseOverride=typeof g.preserveCaseOverride<"u"?g.preserveCaseOverride:0,a!==this.isRegex&&(t=!0,n.isRegex=!0),u!==this.wholeWord&&(t=!0,n.wholeWord=!0),h!==this.matchCase&&(t=!0,n.matchCase=!0),r!==this.preserveCase&&(t=!0,n.preserveCase=!0),t&&this._onFindReplaceStateChange.fire(n)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition=D.MATCHES_LIMIT}}e.FindReplaceState=f}),define(ne[884],se([1,0,7,49,153,130,83,13,25,9,2,17,11,5,193,656,346,745,31,62,23,26,88,20,105,443]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SimpleButton=e.FindWidget=e.FindWidgetViewZone=e.NLS_NO_RESULTS=e.NLS_MATCHES_LOCATION=e.findNextMatchIcon=e.findPreviousMatchIcon=e.findReplaceAllIcon=e.findReplaceIcon=void 0;const v=(0,c.registerIcon)("find-selection",_.Codicon.selection,a.localize(0,null)),b=(0,c.registerIcon)("find-collapsed",_.Codicon.chevronRight,a.localize(1,null)),w=(0,c.registerIcon)("find-expanded",_.Codicon.chevronDown,a.localize(2,null));e.findReplaceIcon=(0,c.registerIcon)("find-replace",_.Codicon.replace,a.localize(3,null)),e.findReplaceAllIcon=(0,c.registerIcon)("find-replace-all",_.Codicon.replaceAll,a.localize(4,null)),e.findPreviousMatchIcon=(0,c.registerIcon)("find-previous-match",_.Codicon.arrowUp,a.localize(5,null)),e.findNextMatchIcon=(0,c.registerIcon)("find-next-match",_.Codicon.arrowDown,a.localize(6,null));const E=a.localize(7,null),I=a.localize(8,null),M=a.localize(9,null),P=a.localize(10,null),x=a.localize(11,null),T=a.localize(12,null),A=a.localize(13,null),N=a.localize(14,null),F=a.localize(15,null),O=a.localize(16,null),W=a.localize(17,null),U=a.localize(18,null),j=a.localize(19,null,t.MATCHES_LIMIT);e.NLS_MATCHES_LOCATION=a.localize(20,null),e.NLS_NO_RESULTS=a.localize(21,null);const R=419,G=275-54;let Z=69;const J=33,X="ctrlEnterReplaceAll.windows.donotask",H=s.isMacintosh?256:2048;class B{constructor(de){this.afterLineNumber=de,this.heightInPx=J,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}e.FindWidgetViewZone=B;function V(ce,de,he){const ue=!!de.match(/\n/);if(he&&ue&&he.selectionStart>0){ce.stopPropagation();return}}function Y(ce,de,he){const ue=!!de.match(/\n/);if(he&&ue&&he.selectionEndthis._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(oe=>this._onStateChanged(oe))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(oe=>{if(oe.hasChanged(89)&&(this._codeEditor.getOption(89)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),oe.hasChanged(142)&&this._tryUpdateWidgetWidth(),oe.hasChanged(2)&&this.updateAccessibilitySupport(),oe.hasChanged(40)){const ge=this._codeEditor.getOption(40).loop;this._state.change({loop:ge},!1);const ve=this._codeEditor.getOption(40).addExtraSpaceOnTop;ve&&!this._viewZone&&(this._viewZone=new B(0),this._showViewZone()),!ve&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(()=>we(this,void 0,void 0,function*(){if(this._isVisible){const oe=yield this._controller.getGlobalBufferTerm();oe&&oe!==this._state.searchString&&(this._state.change({searchString:oe},!1),this._findInput.select())}}))),this._findInputFocused=t.CONTEXT_FIND_INPUT_FOCUSED.bindTo(z),this._findFocusTracker=this._register(L.trackFocus(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=t.CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(z),this._replaceFocusTracker=this._register(L.trackFocus(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(40).addExtraSpaceOnTop&&(this._viewZone=new B(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(oe=>{if(oe.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return ie.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(de){if(de.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(de.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),de.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),de.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(89)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(de.isRevealed||de.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),de.isRegex&&this._findInput.setRegex(this._state.isRegex),de.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),de.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),de.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),de.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),de.searchString||de.matchesCount||de.matchesPosition){const he=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",he),this._updateMatchesCount(),this._updateButtons()}(de.searchString||de.currentMatch)&&this._layoutViewZone(),de.updateHistory&&this._delayedUpdateHistory(),de.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,g.onUnexpectedError)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){this._matchesCount.style.minWidth=Z+"px",this._state.matchesCount>=t.MATCHES_LIMIT?this._matchesCount.title=j:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild);let de;if(this._state.matchesCount>0){let he=String(this._state.matchesCount);this._state.matchesCount>=t.MATCHES_LIMIT&&(he+="+");let ue=String(this._state.matchesPosition);ue==="0"&&(ue="?"),de=i.format(e.NLS_MATCHES_LOCATION,ue,he)}else de=e.NLS_NO_RESULTS;this._matchesCount.appendChild(document.createTextNode(de)),(0,k.alert)(this._getAriaLabel(de,this._state.currentMatch,this._state.searchString)),Z=Math.max(Z,this._matchesCount.clientWidth)}_getAriaLabel(de,he,ue){if(de===e.NLS_NO_RESULTS)return ue===""?a.localize(22,null,de):a.localize(23,null,de,ue);if(he){const te=a.localize(24,null,de,ue,he.startLineNumber+":"+he.startColumn),q=this._codeEditor.getModel();return q&&he.startLineNumber<=q.getLineCount()&&he.startLineNumber>=1?`${q.getLineContent(he.startLineNumber)}, ${te}`:te}return a.localize(25,null,de,ue)}_updateToggleSelectionFindButton(){const de=this._codeEditor.getSelection(),he=de?de.startLineNumber!==de.endLineNumber||de.startColumn!==de.endColumn:!1,ue=this._toggleSelectionFind.checked;this._isVisible&&(ue||he)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const de=this._state.searchString.length>0,he=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&de&&he&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&de&&he&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&de),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&de),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const ue=!this._codeEditor.getOption(89);this._toggleReplaceBtn.setEnabled(this._isVisible&&ue)}_reveal(){if(this._revealTimeouts.forEach(de=>{clearTimeout(de)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const de=this._codeEditor.getSelection();switch(this._codeEditor.getOption(40).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const ue=!!de&&de.startLineNumber!==de.endLineNumber;this._toggleSelectionFind.checked=ue;break}default:break}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let he=!0;if(this._codeEditor.getOption(40).seedSearchStringFromSelection&&de){const ue=this._codeEditor.getDomNode();if(ue){const te=L.getDomNodePagePosition(ue),q=this._codeEditor.getScrolledVisiblePosition(de.getStartPosition()),z=te.left+(q?q.left:0),ee=q?q.top:0;if(this._viewZone&&eede.startLineNumber&&(he=!1);const $=L.getTopLeftOffset(this._domNode).left;z>$&&(he=!1);const re=this._codeEditor.getScrolledVisiblePosition(de.getEndPosition());te.left+(re?re.left:0)>$&&(he=!1)}}}this._showViewZone(he)}}_hide(de){this._revealTimeouts.forEach(he=>{clearTimeout(he)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),de&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(de){if(!this._codeEditor.getOption(40).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const ue=this._viewZone;this._viewZoneId!==void 0||!ue||this._codeEditor.changeViewZones(te=>{ue.heightInPx=this._getHeight(),this._viewZoneId=te.addZone(ue),this._codeEditor.setScrollTop(de||this._codeEditor.getScrollTop()+ue.heightInPx)})}_showViewZone(de=!0){if(!this._isVisible||!this._codeEditor.getOption(40).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new B(0));const ue=this._viewZone;this._codeEditor.changeViewZones(te=>{if(this._viewZoneId!==void 0){const q=this._getHeight();if(q===ue.heightInPx)return;const z=q-ue.heightInPx;ue.heightInPx=q,te.layoutZone(this._viewZoneId),de&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+z);return}else{let q=this._getHeight();if(q-=this._codeEditor.getOption(82).top,q<=0)return;ue.heightInPx=q,this._viewZoneId=te.addZone(ue),de&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+q)}})}_removeViewZone(){this._codeEditor.changeViewZones(de=>{this._viewZoneId!==void 0&&(de.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!L.isInDOM(this._domNode))return;const de=this._codeEditor.getLayoutInfo();if(de.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const ue=de.width,te=de.minimap.minimapWidth;let q=!1,z=!1,ee=!1;if(this._resized&&L.getTotalWidth(this._domNode)>R){this._domNode.style.maxWidth=`${ue-28-te-15}px`,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode);return}if(R+28+te>=ue&&(z=!0),R+28+te-Z>=ue&&(ee=!0),R+28+te-Z>=ue+50&&(q=!0),this._domNode.classList.toggle("collapsed-find-widget",q),this._domNode.classList.toggle("narrow-find-widget",ee),this._domNode.classList.toggle("reduced-find-widget",z),!ee&&!q&&(this._domNode.style.maxWidth=`${ue-28-te-15}px`),this._findInput.layout({collapsedFindWidget:q,narrowFindWidget:ee,reducedFindWidget:z}),this._resized){const $=this._findInput.inputBox.element.clientWidth;$>0&&(this._replaceInput.width=$)}else this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode))}_getHeight(){let de=0;return de+=4,de+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(de+=4,de+=this._replaceInput.inputBox.height+2),de+=4,de}_tryUpdateHeight(){const de=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===de?!1:(this._cachedHeight=de,this._domNode.style.height=`${de}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const de=this._codeEditor.getSelections();de.map(he=>{he.endColumn===1&&he.endLineNumber>he.startLineNumber&&(he=he.setEndPosition(he.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(he.endLineNumber-1)));const ue=this._state.currentMatch;return he.startLineNumber!==he.endLineNumber&&!n.Range.equalsRange(he,ue)?he:null}).filter(he=>!!he),de.length&&this._state.change({searchScope:de},!0)}}_onFindInputMouseDown(de){de.middleButton&&de.stopPropagation()}_onFindInputKeyDown(de){if(de.equals(H|3))if(this._keybindingService.dispatchEvent(de,de.target)){de.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(` -`),de.preventDefault();return}if(de.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),de.preventDefault();return}if(de.equals(2066)){this._codeEditor.focus(),de.preventDefault();return}if(de.equals(16))return V(de,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(de.equals(18))return Y(de,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(de){if(de.equals(H|3))if(this._keybindingService.dispatchEvent(de,de.target)){de.preventDefault();return}else{s.isWindows&&s.isNative&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(a.localize(26,null)),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(X,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(` -`),de.preventDefault();return}if(de.equals(2)){this._findInput.focusOnCaseSensitive(),de.preventDefault();return}if(de.equals(1026)){this._findInput.focus(),de.preventDefault();return}if(de.equals(2066)){this._codeEditor.focus(),de.preventDefault();return}if(de.equals(16))return V(de,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"));if(de.equals(18))return Y(de,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"))}getVerticalSashLeft(de){return 0}_keybindingLabelFor(de){const he=this._keybindingService.lookupKeybinding(de);return he?` (${he.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new u.ContextScopedFindInput(null,this._contextViewProvider,{width:G,label:I,placeholder:M,appendCaseSensitiveLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleRegexCommand),validation:$=>{if($.length===0||!this._findInput.getRegex())return null;try{return new RegExp($,"gu"),null}catch(re){return{content:re.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>(0,h.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:m.defaultInputBoxStyles,toggleStyles:m.defaultToggleStyles},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown($=>this._onFindInputKeyDown($))),this._register(this._findInput.inputBox.onDidChange(()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown($=>{$.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),$.preventDefault())})),this._register(this._findInput.onRegexKeyDown($=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),$.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange($=>{this._tryUpdateHeight()&&this._showViewZone()})),s.isLinux&&this._register(this._findInput.onMouseDown($=>this._onFindInputMouseDown($))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new ae({label:P+this._keybindingLabelFor(t.FIND_IDS.PreviousMatchFindAction),icon:e.findPreviousMatchIcon,onTrigger:()=>{(0,p.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.PreviousMatchFindAction)).run().then(void 0,g.onUnexpectedError)}})),this._nextBtn=this._register(new ae({label:x+this._keybindingLabelFor(t.FIND_IDS.NextMatchFindAction),icon:e.findNextMatchIcon,onTrigger:()=>{(0,p.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.NextMatchFindAction)).run().then(void 0,g.onUnexpectedError)}}));const ue=document.createElement("div");ue.className="find-part",ue.appendChild(this._findInput.domNode);const te=document.createElement("div");te.className="find-actions",ue.appendChild(te),te.appendChild(this._matchesCount),te.appendChild(this._prevBtn.domNode),te.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new y.Toggle({icon:v,title:T+this._keybindingLabelFor(t.FIND_IDS.ToggleSearchScopeCommand),isChecked:!1,inputActiveOptionBackground:(0,r.asCssVariable)(r.inputActiveOptionBackground),inputActiveOptionBorder:(0,r.asCssVariable)(r.inputActiveOptionBorder),inputActiveOptionForeground:(0,r.asCssVariable)(r.inputActiveOptionForeground)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){const $=this._codeEditor.getSelections();$.map(re=>(re.endColumn===1&&re.endLineNumber>re.startLineNumber&&(re=re.setEndPosition(re.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(re.endLineNumber-1))),re.isEmpty()?null:re)).filter(re=>!!re),$.length&&this._state.change({searchScope:$},!0)}}else this._state.change({searchScope:null},!0)})),te.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new ae({label:A+this._keybindingLabelFor(t.FIND_IDS.CloseFindWidgetCommand),icon:c.widgetClose,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:$=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),$.preventDefault())}})),this._replaceInput=this._register(new u.ContextScopedReplaceInput(null,void 0,{label:N,placeholder:F,appendPreserveCaseLabel:this._keybindingLabelFor(t.FIND_IDS.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>(0,h.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:m.defaultInputBoxStyles,toggleStyles:m.defaultToggleStyles},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown($=>this._onReplaceInputKeyDown($))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange($=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown($=>{$.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),$.preventDefault())})),this._replaceBtn=this._register(new ae({label:O+this._keybindingLabelFor(t.FIND_IDS.ReplaceOneAction),icon:e.findReplaceIcon,onTrigger:()=>{this._controller.replace()},onKeyDown:$=>{$.equals(1026)&&(this._closeBtn.focus(),$.preventDefault())}})),this._replaceAllBtn=this._register(new ae({label:W+this._keybindingLabelFor(t.FIND_IDS.ReplaceAllAction),icon:e.findReplaceAllIcon,onTrigger:()=>{this._controller.replaceAll()}}));const q=document.createElement("div");q.className="replace-part",q.appendChild(this._replaceInput.domNode);const z=document.createElement("div");z.className="replace-actions",q.appendChild(z),z.appendChild(this._replaceBtn.domNode),z.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new ae({label:U,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.ariaLabel=E,this._domNode.role="dialog",this._domNode.style.width=`${R}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(ue),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(q),this._resizeSash=new D.Sash(this._domNode,this,{orientation:0,size:2}),this._resized=!1;let ee=R;this._register(this._resizeSash.onDidStart(()=>{ee=L.getTotalWidth(this._domNode)})),this._register(this._resizeSash.onDidChange($=>{this._resized=!0;const re=ee+$.startX-$.currentX;if(reoe||(this._domNode.style.width=`${re}px`,this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const $=L.getTotalWidth(this._domNode);if(${this._opts.onTrigger(),ue.preventDefault()}),this.onkeydown(this._domNode,ue=>{var te,q;if(ue.equals(10)||ue.equals(3)){this._opts.onTrigger(),ue.preventDefault();return}(q=(te=this._opts).onKeyDown)===null||q===void 0||q.call(te,ue)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(de){this._domNode.classList.toggle("disabled",!de),this._domNode.setAttribute("aria-disabled",String(!de)),this._domNode.tabIndex=de?0:-1}setExpanded(de){this._domNode.setAttribute("aria-expanded",String(!!de)),de?(this._domNode.classList.remove(...d.ThemeIcon.asClassNameArray(b)),this._domNode.classList.add(...d.ThemeIcon.asClassNameArray(w))):(this._domNode.classList.remove(...d.ThemeIcon.asClassNameArray(w)),this._domNode.classList.add(...d.ThemeIcon.asClassNameArray(b)))}}e.SimpleButton=ae,(0,o.registerThemingParticipant)((ce,de)=>{const he=(De,ye)=>{ye&&de.addRule(`.monaco-editor ${De} { background-color: ${ye}; }`)};he(".findMatch",ce.getColor(r.editorFindMatchHighlight)),he(".currentFindMatch",ce.getColor(r.editorFindMatch)),he(".findScope",ce.getColor(r.editorFindRangeHighlight));const ue=ce.getColor(r.editorWidgetBackground);he(".find-widget",ue);const te=ce.getColor(r.widgetShadow);te&&de.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${te}; }`);const q=ce.getColor(r.widgetBorder);q&&de.addRule(`.monaco-editor .find-widget { border-left: 1px solid ${q}; border-right: 1px solid ${q}; border-bottom: 1px solid ${q}; }`);const z=ce.getColor(r.editorFindMatchHighlightBorder);z&&de.addRule(`.monaco-editor .findMatch { border: 1px ${(0,l.isHighContrast)(ce.type)?"dotted":"solid"} ${z}; box-sizing: border-box; }`);const ee=ce.getColor(r.editorFindMatchBorder);ee&&de.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${ee}; padding: 1px; box-sizing: border-box; }`);const $=ce.getColor(r.editorFindRangeHighlightBorder);$&&de.addRule(`.monaco-editor .findScope { border: 1px ${(0,l.isHighContrast)(ce.type)?"dashed":"solid"} ${$}; }`);const re=ce.getColor(r.contrastBorder);re&&de.addRule(`.monaco-editor .find-widget { border: 1px solid ${re}; }`);const oe=ce.getColor(r.editorWidgetForeground);oe&&de.addRule(`.monaco-editor .find-widget { color: ${oe}; }`);const ge=ce.getColor(r.errorForeground);ge&&de.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${ge}; }`);const ve=ce.getColor(r.editorWidgetResizeBorder);if(ve)de.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${ve}; }`);else{const De=ce.getColor(r.editorWidgetBorder);De&&de.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${De}; }`)}const Se=ce.getColor(r.toolbarHoverBackground);Se&&de.addRule(` - .monaco-editor .find-widget .button:not(.disabled):hover, - .monaco-editor .find-widget .codicon-find-selection:hover { - background-color: ${Se} !important; - } - `);const Le=ce.getColor(r.focusBorder);Le&&de.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${Le}; }`)})}),define(ne[365],se([1,0,13,2,11,16,80,21,48,193,882,883,884,655,30,96,15,57,34,43,71,87,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";var p;Object.defineProperty(e,"__esModule",{value:!0}),e.StartFindReplaceAction=e.PreviousSelectionMatchFindAction=e.NextSelectionMatchFindAction=e.SelectionMatchFindAction=e.MoveToMatchFindAction=e.PreviousMatchFindAction=e.NextMatchFindAction=e.MatchFindAction=e.StartFindWithSelectionAction=e.StartFindWithArgsAction=e.StartFindAction=e.FindController=e.CommonFindController=e.getSelectionSearchString=void 0;const m=524288;function v(U,j="single",R=!1){if(!U.hasModel())return null;const K=U.getSelection();if(j==="single"&&K.startLineNumber===K.endLineNumber||j==="multiple"){if(K.isEmpty()){const G=U.getConfiguredWordAtPosition(K.getStartPosition());if(G&&R===!1)return G.word}else if(U.getModel().getValueLengthInRange(K)this._onStateChanged(Z))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const Z=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),Z&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(40).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(j){this.saveQueryState(j),j.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),j.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(j){j.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),j.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),j.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),j.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!g.CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){const j=this._editor.getSelections();j.map(R=>(R.endColumn===1&&R.endLineNumber>R.startLineNumber&&(R=R.setEndPosition(R.endLineNumber-1,this._editor.getModel().getLineMaxColumn(R.endLineNumber-1))),R.isEmpty()?null:R)).filter(R=>!!R),j.length&&this._state.change({searchScope:j},!0)}}setSearchString(j){this._state.isRegex&&(j=y.escapeRegExpCharacters(j)),this._state.change({searchString:j},!1)}highlightFindOptions(j=!1){}_start(j,R){return we(this,void 0,void 0,function*(){if(this.disposeModel(),!this._editor.hasModel())return;const K=Object.assign(Object.assign({},R),{isRevealed:!0});if(j.seedSearchStringFromSelection==="single"){const G=v(this._editor,j.seedSearchStringFromSelection,j.seedSearchStringFromNonEmptySelection);G&&(this._state.isRegex?K.searchString=y.escapeRegExpCharacters(G):K.searchString=G)}else if(j.seedSearchStringFromSelection==="multiple"&&!j.updateSearchScope){const G=v(this._editor,j.seedSearchStringFromSelection);G&&(K.searchString=G)}if(!K.searchString&&j.seedSearchStringFromGlobalClipboard){const G=yield this.getGlobalBufferTerm();if(!this._editor.hasModel())return;G&&(K.searchString=G)}if(j.forceRevealReplace||K.isReplaceRevealed?K.isReplaceRevealed=!0:this._findWidgetVisible.get()||(K.isReplaceRevealed=!1),j.updateSearchScope){const G=this._editor.getSelections();G.some(Z=>!Z.isEmpty())&&(K.searchScope=G)}K.loop=j.loop,this._state.change(K,!1),this._model||(this._model=new g.FindModelBoundToEditorModel(this._editor,this._state))})}start(j,R){return this._start(j,R)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(j){return this._model?(this._model.moveToMatch(j),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){return this._model?(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}getGlobalBufferTerm(){return we(this,void 0,void 0,function*(){return this._editor.getOption(40).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""})}setGlobalBufferTerm(j){this._editor.getOption(40).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(j)}};e.CommonFindController=b,b.ID="editor.contrib.findController",e.CommonFindController=b=p=ke([fe(1,u.IContextKeyService),fe(2,d.IStorageService),fe(3,a.IClipboardService)],b);let w=class extends b{constructor(j,R,K,G,Z,J,X,H){super(j,K,X,H),this._contextViewService=R,this._keybindingService=G,this._themeService=Z,this._notificationService=J,this._widget=null,this._findOptionsWidget=null}_start(j,R){const K=Object.create(null,{_start:{get:()=>super._start}});return we(this,void 0,void 0,function*(){this._widget||this._createFindWidget();const G=this._editor.getSelection();let Z=!1;switch(this._editor.getOption(40).autoFindInSelection){case"always":Z=!0;break;case"never":Z=!1;break;case"multiline":{Z=!!G&&G.startLineNumber!==G.endLineNumber;break}default:break}j.updateSearchScope=j.updateSearchScope||Z,yield K._start.call(this,j,R),this._widget&&(j.shouldFocus===2?this._widget.focusReplaceInput():j.shouldFocus===1&&this._widget.focusFindInput())})}highlightFindOptions(j=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!j?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new i.FindWidget(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new C.FindOptionsWidget(this._editor,this._state,this._keybindingService))}};e.FindController=w,e.FindController=w=ke([fe(1,h.IContextViewService),fe(2,u.IContextKeyService),fe(3,r.IKeybindingService),fe(4,l.IThemeService),fe(5,c.INotificationService),fe(6,d.IStorageService),fe(7,a.IClipboardService)],w),e.StartFindAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:g.FIND_IDS.StartFindAction,label:n.localize(0,null),alias:"Find",precondition:u.ContextKeyExpr.or(f.EditorContextKeys.focus,u.ContextKeyExpr.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:"3_find",title:n.localize(1,null),order:1}})),e.StartFindAction.addImplementation(0,(U,j,R)=>{const K=b.get(j);return K?K.start({forceRevealReplace:!1,seedSearchStringFromSelection:j.getOption(40).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:j.getOption(40).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:j.getOption(40).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:j.getOption(40).loop}):!1});const E={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},regex:{type:"boolean"},regexOverride:{type:"number",description:n.localize(2,null)},wholeWord:{type:"boolean"},wholeWordOverride:{type:"number",description:n.localize(3,null)},matchCase:{type:"boolean"},matchCaseOverride:{type:"number",description:n.localize(4,null)},preserveCase:{type:"boolean"},preserveCaseOverride:{type:"number",description:n.localize(5,null)},findInSelection:{type:"boolean"}}}}]};class I extends D.EditorAction{constructor(){super({id:g.FIND_IDS.StartFindWithArgs,label:n.localize(6,null),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},description:E})}run(j,R,K){return we(this,void 0,void 0,function*(){const G=b.get(R);if(G){const Z=K?{searchString:K.searchString,replaceString:K.replaceString,isReplaceRevealed:K.replaceString!==void 0,isRegex:K.isRegex,wholeWord:K.matchWholeWord,matchCase:K.isCaseSensitive,preserveCase:K.preserveCase}:{};yield G.start({forceRevealReplace:!1,seedSearchStringFromSelection:G.getState().searchString.length===0&&R.getOption(40).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:R.getOption(40).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:K?.findInSelection||!1,loop:R.getOption(40).loop},Z),G.setGlobalBufferTerm(G.getState().searchString)}})}}e.StartFindWithArgsAction=I;class M extends D.EditorAction{constructor(){super({id:g.FIND_IDS.StartFindWithSelection,label:n.localize(7,null),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);K&&(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),K.setGlobalBufferTerm(K.getState().searchString))})}}e.StartFindWithSelectionAction=M;class P extends D.EditorAction{run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);K&&!this._run(K)&&(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:K.getState().searchString.length===0&&R.getOption(40).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:R.getOption(40).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),this._run(K))})}}e.MatchFindAction=P;class x extends P{constructor(){super({id:g.FIND_IDS.NextMatchFindAction,label:n.localize(8,null),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:f.EditorContextKeys.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_FIND_INPUT_FOCUSED),primary:3,weight:100}]})}_run(j){return j.moveToNextMatch()?(j.editor.pushUndoStop(),!0):!1}}e.NextMatchFindAction=x;class T extends P{constructor(){super({id:g.FIND_IDS.PreviousMatchFindAction,label:n.localize(9,null),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:f.EditorContextKeys.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_FIND_INPUT_FOCUSED),primary:1027,weight:100}]})}_run(j){return j.moveToPrevMatch()}}e.PreviousMatchFindAction=T;class A extends D.EditorAction{constructor(){super({id:g.FIND_IDS.GoToMatchFindAction,label:n.localize(10,null),alias:"Go to Match...",precondition:g.CONTEXT_FIND_WIDGET_VISIBLE}),this._highlightDecorations=[]}run(j,R,K){const G=b.get(R);if(!G)return;const Z=G.getState().matchesCount;if(Z<1){j.get(c.INotificationService).notify({severity:c.Severity.Warning,message:n.localize(11,null)});return}const X=j.get(o.IQuickInputService).createInputBox();X.placeholder=n.localize(12,null,Z);const H=V=>{const Y=parseInt(V);if(isNaN(Y))return;const ie=G.getState().matchesCount;if(Y>0&&Y<=ie)return Y-1;if(Y<0&&Y>=-ie)return ie+Y},B=V=>{const Y=H(V);if(typeof Y=="number"){X.validationMessage=void 0,G.goToMatch(Y);const ie=G.getState().currentMatch;ie&&this.addDecorations(R,ie)}else X.validationMessage=n.localize(13,null,G.getState().matchesCount),this.clearDecorations(R)};X.onDidChangeValue(V=>{B(V)}),X.onDidAccept(()=>{const V=H(X.value);typeof V=="number"?(G.goToMatch(V),X.hide()):X.validationMessage=n.localize(14,null,G.getState().matchesCount)}),X.onDidHide(()=>{this.clearDecorations(R),X.dispose()}),X.show()}clearDecorations(j){j.changeDecorations(R=>{this._highlightDecorations=R.deltaDecorations(this._highlightDecorations,[])})}addDecorations(j,R){j.changeDecorations(K=>{this._highlightDecorations=K.deltaDecorations(this._highlightDecorations,[{range:R,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:R,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:(0,l.themeColorFromId)(S.overviewRulerRangeHighlight),position:_.OverviewRulerLane.Full}}}])})}}e.MoveToMatchFindAction=A;class N extends D.EditorAction{run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);if(!K)return;const G=v(R,"single",!1);G&&K.setSearchString(G),this._run(K)||(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),this._run(K))})}}e.SelectionMatchFindAction=N;class F extends N{constructor(){super({id:g.FIND_IDS.NextSelectionMatchFindAction,label:n.localize(15,null),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.focus,primary:2109,weight:100}})}_run(j){return j.moveToNextMatch()}}e.NextSelectionMatchFindAction=F;class O extends N{constructor(){super({id:g.FIND_IDS.PreviousSelectionMatchFindAction,label:n.localize(16,null),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.focus,primary:3133,weight:100}})}_run(j){return j.moveToPrevMatch()}}e.PreviousSelectionMatchFindAction=O,e.StartFindReplaceAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:g.FIND_IDS.StartFindReplaceAction,label:n.localize(17,null),alias:"Replace",precondition:u.ContextKeyExpr.or(f.EditorContextKeys.focus,u.ContextKeyExpr.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:"3_find",title:n.localize(18,null),order:2}})),e.StartFindReplaceAction.addImplementation(0,(U,j,R)=>{if(!j.hasModel()||j.getOption(89))return!1;const K=b.get(j);if(!K)return!1;const G=j.getSelection(),Z=K.isFindInputFocused(),J=!G.isEmpty()&&G.startLineNumber===G.endLineNumber&&j.getOption(40).seedSearchStringFromSelection!=="never"&&!Z,X=Z||J?2:1;return K.start({forceRevealReplace:!0,seedSearchStringFromSelection:J?"single":"none",seedSearchStringFromNonEmptySelection:j.getOption(40).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:j.getOption(40).seedSearchStringFromSelection!=="never",shouldFocus:X,shouldAnimate:!0,updateSearchScope:!1,loop:j.getOption(40).loop})}),(0,D.registerEditorContribution)(b.ID,w,0),(0,D.registerEditorAction)(I),(0,D.registerEditorAction)(M),(0,D.registerEditorAction)(x),(0,D.registerEditorAction)(T),(0,D.registerEditorAction)(A),(0,D.registerEditorAction)(F),(0,D.registerEditorAction)(O);const W=D.EditorCommand.bindToContribution(b.get);(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.CloseFindWidgetCommand,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.closeFindWidget(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,u.ContextKeyExpr.not("isComposing")),primary:9,secondary:[1033]}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleCaseSensitiveCommand,precondition:void 0,handler:U=>U.toggleCaseSensitive(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleCaseSensitiveKeybinding.primary,mac:g.ToggleCaseSensitiveKeybinding.mac,win:g.ToggleCaseSensitiveKeybinding.win,linux:g.ToggleCaseSensitiveKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleWholeWordCommand,precondition:void 0,handler:U=>U.toggleWholeWords(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleWholeWordKeybinding.primary,mac:g.ToggleWholeWordKeybinding.mac,win:g.ToggleWholeWordKeybinding.win,linux:g.ToggleWholeWordKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleRegexCommand,precondition:void 0,handler:U=>U.toggleRegex(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleRegexKeybinding.primary,mac:g.ToggleRegexKeybinding.mac,win:g.ToggleRegexKeybinding.win,linux:g.ToggleRegexKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleSearchScopeCommand,precondition:void 0,handler:U=>U.toggleSearchScope(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleSearchScopeKeybinding.primary,mac:g.ToggleSearchScopeKeybinding.mac,win:g.ToggleSearchScopeKeybinding.win,linux:g.ToggleSearchScopeKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.TogglePreserveCaseCommand,precondition:void 0,handler:U=>U.togglePreserveCase(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.TogglePreserveCaseKeybinding.primary,mac:g.TogglePreserveCaseKeybinding.mac,win:g.TogglePreserveCaseKeybinding.win,linux:g.TogglePreserveCaseKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceOneAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replace(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:3094}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceOneAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replace(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_REPLACE_INPUT_FOCUSED),primary:3}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceAllAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replaceAll(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:2563}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceAllAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replaceAll(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_REPLACE_INPUT_FOCUSED),primary:void 0,mac:{primary:2051}}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.SelectAllMatchesAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.selectAllMatches(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:515}}))}),define(ne[366],se([1,0,25,48,40,658,31,62,23,26]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingDecorationProvider=e.foldingManualExpandedIcon=e.foldingManualCollapsedIcon=e.foldingCollapsedIcon=e.foldingExpandedIcon=void 0;const C=(0,S.registerColor)("editor.foldBackground",{light:(0,S.transparent)(S.editorSelectionBackground,.3),dark:(0,S.transparent)(S.editorSelectionBackground,.3),hcDark:null,hcLight:null},(0,D.localize)(0,null),!0);(0,S.registerColor)("editorGutter.foldingControlForeground",{dark:S.iconForeground,light:S.iconForeground,hcDark:S.iconForeground,hcLight:S.iconForeground},(0,D.localize)(1,null)),e.foldingExpandedIcon=(0,f.registerIcon)("folding-expanded",L.Codicon.chevronDown,(0,D.localize)(2,null)),e.foldingCollapsedIcon=(0,f.registerIcon)("folding-collapsed",L.Codicon.chevronRight,(0,D.localize)(3,null)),e.foldingManualCollapsedIcon=(0,f.registerIcon)("folding-manual-collapsed",e.foldingCollapsedIcon,(0,D.localize)(4,null)),e.foldingManualExpandedIcon=(0,f.registerIcon)("folding-manual-expanded",e.foldingExpandedIcon,(0,D.localize)(5,null));const s={color:(0,_.themeColorFromId)(C),position:k.MinimapPosition.Inline};class i{constructor(t){this.editor=t,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(t,a,u){return a?i.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?t?this.showFoldingHighlights?i.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:i.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:i.NO_CONTROLS_EXPANDED_RANGE_DECORATION:t?u?this.showFoldingHighlights?i.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:i.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?i.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:i.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?u?i.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:u?i.MANUALLY_EXPANDED_VISUAL_DECORATION:i.EXPANDED_VISUAL_DECORATION}changeDecorations(t){return this.editor.changeDecorations(t)}removeDecorations(t){this.editor.removeDecorations(t)}}e.FoldingDecorationProvider=i,i.COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),i.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:s,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),i.MANUALLY_COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),i.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:s,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),i.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0}),i.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:s,isWholeLine:!0}),i.EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+g.ThemeIcon.asClassName(e.foldingExpandedIcon)}),i.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingExpandedIcon)}),i.MANUALLY_EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+g.ThemeIcon.asClassName(e.foldingManualExpandedIcon)}),i.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualExpandedIcon)}),i.NO_CONTROLS_EXPANDED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),i.HIDDEN_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-hidden-range-decoration",stickiness:1})}),define(ne[255],se([1,0,13,19,9,63,2,11,20,108,16,21,29,32,291,543,292,657,15,366,182,293,43,76,58,18,6,27,22,51,28,444]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){"use strict";var P;Object.defineProperty(e,"__esModule",{value:!0}),e.RangesLimitReporter=e.FoldingController=void 0;const x=new r.RawContextKey("foldingEnabled",!1);let T=P=class extends S.Disposable{static get(ue){return ue.getContribution(P.ID)}static getFoldingRangeProviders(ue,te){var q,z;const ee=ue.foldingRangeProvider.ordered(te);return(z=(q=P._foldingRangeSelector)===null||q===void 0?void 0:q.call(P,ee,te))!==null&&z!==void 0?z:ee}constructor(ue,te,q,z,ee,$){super(),this.contextKeyService=te,this.languageConfigurationService=q,this.languageFeaturesService=$,this.localToDispose=this._register(new S.DisposableStore),this.editor=ue,this._foldingLimitReporter=new A(ue);const re=this.editor.getOptions();this._isEnabled=re.get(42),this._useFoldingProviders=re.get(43)!=="indentation",this._unfoldOnClickAfterEndOfLine=re.get(47),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=re.get(45),this.updateDebounceInfo=ee.for($.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new c.FoldingDecorationProvider(ue),this.foldingDecorationProvider.showFoldingControls=re.get(108),this.foldingDecorationProvider.showFoldingHighlights=re.get(44),this.foldingEnabled=x.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(oe=>{if(oe.hasChanged(42)&&(this._isEnabled=this.editor.getOptions().get(42),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),oe.hasChanged(46)&&this.onModelChanged(),oe.hasChanged(108)||oe.hasChanged(44)){const ge=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=ge.get(108),this.foldingDecorationProvider.showFoldingHighlights=ge.get(44),this.triggerFoldingModelChanged()}oe.hasChanged(43)&&(this._useFoldingProviders=this.editor.getOptions().get(43)!=="indentation",this.onFoldingStrategyChanged()),oe.hasChanged(47)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(47)),oe.hasChanged(45)&&(this._foldingImportsByDefault=this.editor.getOptions().get(45))})),this.onModelChanged()}saveViewState(){const ue=this.editor.getModel();if(!ue||!this._isEnabled||ue.isTooLargeForTokenization())return{};if(this.foldingModel){const te=this.foldingModel.getMemento(),q=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:te,lineCount:ue.getLineCount(),provider:q,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(ue){const te=this.editor.getModel();if(!(!te||!this._isEnabled||te.isTooLargeForTokenization()||!this.hiddenRangeModel)&&ue&&(this._currentModelHasFoldedImports=!!ue.foldedImports,ue.collapsedRegions&&ue.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(ue.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const ue=this.editor.getModel();!this._isEnabled||!ue||ue.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new t.FoldingModel(ue,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new a.HiddenRangeModel(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(te=>this.onHiddenRangesChanges(te))),this.updateScheduler=new L.Delayer(this.updateDebounceInfo.get(ue)),this.cursorChangedScheduler=new L.RunOnceScheduler(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(te=>this.onDidChangeModelContent(te))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(te=>this.onEditorMouseDown(te))),this.localToDispose.add(this.editor.onMouseUp(te=>this.onEditorMouseUp(te))),this.localToDispose.add({dispose:()=>{var te,q;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(te=this.updateScheduler)===null||te===void 0||te.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(q=this.rangeProvider)===null||q===void 0||q.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var ue;(ue=this.rangeProvider)===null||ue===void 0||ue.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(ue){if(this.rangeProvider)return this.rangeProvider;const te=new u.IndentRangeProvider(ue,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=te,this._useFoldingProviders&&this.foldingModel){const q=P.getFoldingRangeProviders(this.languageFeaturesService,ue);q.length>0&&(this.rangeProvider=new d.SyntaxRangeProvider(ue,q,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,te))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(ue){var te;(te=this.hiddenRangeModel)===null||te===void 0||te.notifyChangeModelContent(ue),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const ue=this.foldingModel;if(!ue)return null;const te=new m.StopWatch,q=this.getRangeProvider(ue.textModel),z=this.foldingRegionPromise=(0,L.createCancelablePromise)(ee=>q.compute(ee));return z.then(ee=>{if(ee&&z===this.foldingRegionPromise){let $;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const ve=ee.setCollapsedAllOfType(i.FoldingRangeKind.Imports.value,!0);ve&&($=g.StableEditorScrollState.capture(this.editor),this._currentModelHasFoldedImports=ve)}const re=this.editor.getSelections(),oe=re?re.map(ve=>ve.startLineNumber):[];ue.update(ee,oe),$?.restore(this.editor);const ge=this.updateDebounceInfo.update(ue.textModel,te.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=ge)}return ue})}).then(void 0,ue=>((0,y.onUnexpectedError)(ue),null)))}onHiddenRangesChanges(ue){if(this.hiddenRangeModel&&ue.length&&!this._restoringViewState){const te=this.editor.getSelections();te&&this.hiddenRangeModel.adjustSelections(te)&&this.editor.setSelections(te)}this.editor.setHiddenAreas(ue,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const ue=this.getFoldingModel();ue&&ue.then(te=>{if(te){const q=this.editor.getSelections();if(q&&q.length>0){const z=[];for(const ee of q){const $=ee.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden($)&&z.push(...te.getAllRegionsAtLine($,re=>re.isCollapsed&&$>re.startLineNumber))}z.length&&(te.toggleCollapseState(z),this.reveal(q[0].getPosition()))}}}).then(void 0,y.onUnexpectedError)}onEditorMouseDown(ue){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!ue.target||!ue.target.range||!ue.event.leftButton&&!ue.event.middleButton)return;const te=ue.target.range;let q=!1;switch(ue.target.type){case 4:{const z=ue.target.detail,ee=ue.target.element.offsetLeft;if(z.offsetX-ee<4)return;q=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!ue.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const z=this.editor.getModel();if(z&&te.startColumn===z.getLineMaxColumn(te.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:te.startLineNumber,iconClicked:q}}onEditorMouseUp(ue){const te=this.foldingModel;if(!te||!this.mouseDownInfo||!ue.target)return;const q=this.mouseDownInfo.lineNumber,z=this.mouseDownInfo.iconClicked,ee=ue.target.range;if(!ee||ee.startLineNumber!==q)return;if(z){if(ue.target.type!==4)return}else{const re=this.editor.getModel();if(!re||ee.startColumn!==re.getLineMaxColumn(q))return}const $=te.getRegionAtLine(q);if($&&$.startLineNumber===q){const re=$.isCollapsed;if(z||re){const oe=ue.event.altKey;let ge=[];if(oe){const ve=Le=>!Le.containedBy($)&&!$.containedBy(Le),Se=te.getRegionsInside(null,ve);for(const Le of Se)Le.isCollapsed&&ge.push(Le);ge.length===0&&(ge=Se)}else{const ve=ue.event.middleButton||ue.event.shiftKey;if(ve)for(const Se of te.getRegionsInside($))Se.isCollapsed===re&&ge.push(Se);(re||!ve||ge.length===0)&&ge.push($)}te.toggleCollapseState(ge),this.reveal({lineNumber:q,column:1})}}}reveal(ue){this.editor.revealPositionInCenterIfOutsideViewport(ue,0)}};e.FoldingController=T,T.ID="editor.contrib.folding",e.FoldingController=T=P=ke([fe(1,r.IContextKeyService),fe(2,n.ILanguageConfigurationService),fe(3,l.INotificationService),fe(4,p.ILanguageFeatureDebounceService),fe(5,v.ILanguageFeaturesService)],T);class A{constructor(ue){this.editor=ue,this._onDidChange=new b.Emitter,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(46)}update(ue,te){(ue!==this._computed||te!==this._limited)&&(this._computed=ue,this._limited=te,this._onDidChange.fire())}}e.RangesLimitReporter=A;class N extends C.EditorAction{runEditorCommand(ue,te,q){const z=ue.get(n.ILanguageConfigurationService),ee=T.get(te);if(!ee)return;const $=ee.getFoldingModel();if($)return this.reportTelemetry(ue,te),$.then(re=>{if(re){this.invoke(ee,re,te,q,z);const oe=te.getSelection();oe&&ee.reveal(oe.getStartPosition())}})}getSelectedLines(ue){const te=ue.getSelections();return te?te.map(q=>q.startLineNumber):[]}getLineNumbers(ue,te){return ue&&ue.selectionLines?ue.selectionLines.map(q=>q+1):this.getSelectedLines(te)}run(ue,te){}}function F(he){if(!_.isUndefined(he)){if(!_.isObject(he))return!1;const ue=he;if(!_.isUndefined(ue.levels)&&!_.isNumber(ue.levels)||!_.isUndefined(ue.direction)&&!_.isString(ue.direction)||!_.isUndefined(ue.selectionLines)&&(!Array.isArray(ue.selectionLines)||!ue.selectionLines.every(_.isNumber)))return!1}return!0}class O extends N{constructor(){super({id:"editor.unfold",label:h.localize(0,null),alias:"Unfold",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},description:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:`Property-value pairs that can be passed through this argument: - * 'levels': Number of levels to unfold. If not set, defaults to 1. - * 'direction': If 'up', unfold given number of levels up otherwise unfolds down. - * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used. - `,constraint:F,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(ue,te,q,z){const ee=z&&z.levels||1,$=this.getLineNumbers(z,q);z&&z.direction==="up"?(0,t.setCollapseStateLevelsUp)(te,!1,ee,$):(0,t.setCollapseStateLevelsDown)(te,!1,ee,$)}}class W extends N{constructor(){super({id:"editor.unfoldRecursively",label:h.localize(1,null),alias:"Unfold Recursively",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2142),weight:100}})}invoke(ue,te,q,z){(0,t.setCollapseStateLevelsDown)(te,!1,Number.MAX_VALUE,this.getSelectedLines(q))}}class U extends N{constructor(){super({id:"editor.fold",label:h.localize(2,null),alias:"Fold",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},description:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:`Property-value pairs that can be passed through this argument: - * 'levels': Number of levels to fold. - * 'direction': If 'up', folds given number of levels up otherwise folds down. - * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used. - If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead. - `,constraint:F,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(ue,te,q,z){const ee=this.getLineNumbers(z,q),$=z&&z.levels,re=z&&z.direction;typeof $!="number"&&typeof re!="string"?(0,t.setCollapseStateUp)(te,!0,ee):re==="up"?(0,t.setCollapseStateLevelsUp)(te,!0,$||1,ee):(0,t.setCollapseStateLevelsDown)(te,!0,$||1,ee)}}class j extends N{constructor(){super({id:"editor.toggleFold",label:h.localize(3,null),alias:"Toggle Fold",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2090),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.toggleCollapseState)(te,1,z)}}class R extends N{constructor(){super({id:"editor.foldRecursively",label:h.localize(4,null),alias:"Fold Recursively",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2140),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateLevelsDown)(te,!0,Number.MAX_VALUE,z)}}class K extends N{constructor(){super({id:"editor.foldAllBlockComments",label:h.localize(5,null),alias:"Fold All Block Comments",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2138),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Comment.value,!0);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).comments;if(re&&re.blockCommentStartToken){const oe=new RegExp("^\\s*"+(0,f.escapeRegExpCharacters)(re.blockCommentStartToken));(0,t.setCollapseStateForMatchingLines)(te,oe,!0)}}}}class G extends N{constructor(){super({id:"editor.foldAllMarkerRegions",label:h.localize(6,null),alias:"Fold All Regions",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2077),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Region.value,!0);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).foldingRules;if(re&&re.markers&&re.markers.start){const oe=new RegExp(re.markers.start);(0,t.setCollapseStateForMatchingLines)(te,oe,!0)}}}}class Z extends N{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:h.localize(7,null),alias:"Unfold All Regions",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2078),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Region.value,!1);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).foldingRules;if(re&&re.markers&&re.markers.start){const oe=new RegExp(re.markers.start);(0,t.setCollapseStateForMatchingLines)(te,oe,!1)}}}}class J extends N{constructor(){super({id:"editor.foldAllExcept",label:h.localize(8,null),alias:"Fold All Except Selected",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2136),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(te,!0,z)}}class X extends N{constructor(){super({id:"editor.unfoldAllExcept",label:h.localize(9,null),alias:"Unfold All Except Selected",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2134),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(te,!1,z)}}class H extends N{constructor(){super({id:"editor.foldAll",label:h.localize(10,null),alias:"Fold All",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2069),weight:100}})}invoke(ue,te,q){(0,t.setCollapseStateLevelsDown)(te,!0)}}class B extends N{constructor(){super({id:"editor.unfoldAll",label:h.localize(11,null),alias:"Unfold All",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2088),weight:100}})}invoke(ue,te,q){(0,t.setCollapseStateLevelsDown)(te,!1)}}class V extends N{getFoldingLevel(){return parseInt(this.id.substr(V.ID_PREFIX.length))}invoke(ue,te,q){(0,t.setCollapseStateAtLevel)(te,this.getFoldingLevel(),!0,this.getSelectedLines(q))}}V.ID_PREFIX="editor.foldLevel",V.ID=he=>V.ID_PREFIX+he;class Y extends N{constructor(){super({id:"editor.gotoParentFold",label:h.localize(12,null),alias:"Go to Parent Fold",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getParentFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ie extends N{constructor(){super({id:"editor.gotoPreviousFold",label:h.localize(13,null),alias:"Go to Previous Folding Range",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getPreviousFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ae extends N{constructor(){super({id:"editor.gotoNextFold",label:h.localize(14,null),alias:"Go to Next Folding Range",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getNextFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ce extends N{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:h.localize(15,null),alias:"Create Folding Range from Selection",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2135),weight:100}})}invoke(ue,te,q){var z;const ee=[],$=q.getSelections();if($){for(const re of $){let oe=re.endLineNumber;re.endColumn===1&&--oe,oe>re.startLineNumber&&(ee.push({startLineNumber:re.startLineNumber,endLineNumber:oe,type:void 0,isCollapsed:!0,source:1}),q.setSelection({startLineNumber:re.startLineNumber,startColumn:1,endLineNumber:re.startLineNumber,endColumn:1}))}if(ee.length>0){ee.sort((oe,ge)=>oe.startLineNumber-ge.startLineNumber);const re=o.FoldingRegions.sanitizeAndMerge(te.regions,ee,(z=q.getModel())===null||z===void 0?void 0:z.getLineCount());te.updatePost(o.FoldingRegions.fromFoldRanges(re))}}}}class de extends N{constructor(){super({id:"editor.removeManualFoldingRanges",label:h.localize(16,null),alias:"Remove Manual Folding Ranges",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2137),weight:100}})}invoke(ue,te,q){const z=q.getSelections();if(z){const ee=[];for(const $ of z){const{startLineNumber:re,endLineNumber:oe}=$;ee.push(oe>=re?{startLineNumber:re,endLineNumber:oe}:{endLineNumber:oe,startLineNumber:re})}te.removeManualRanges(ee),ue.triggerFoldingModelChanged()}}}(0,C.registerEditorContribution)(T.ID,T,0),(0,C.registerEditorAction)(O),(0,C.registerEditorAction)(W),(0,C.registerEditorAction)(U),(0,C.registerEditorAction)(R),(0,C.registerEditorAction)(H),(0,C.registerEditorAction)(B),(0,C.registerEditorAction)(K),(0,C.registerEditorAction)(G),(0,C.registerEditorAction)(Z),(0,C.registerEditorAction)(J),(0,C.registerEditorAction)(X),(0,C.registerEditorAction)(j),(0,C.registerEditorAction)(Y),(0,C.registerEditorAction)(ie),(0,C.registerEditorAction)(ae),(0,C.registerEditorAction)(ce),(0,C.registerEditorAction)(de);for(let he=1;he<=7;he++)(0,C.registerInstantiatedEditorAction)(new V({id:V.ID(he),label:h.localize(17,null,he),alias:`Fold Level ${he}`,precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2048|21+he),weight:100}}));w.CommandsRegistry.registerCommand("_executeFoldingRangeProvider",function(he,...ue){return we(this,void 0,void 0,function*(){const[te]=ue;if(!(te instanceof E.URI))throw(0,y.illegalArgument)();const q=he.get(v.ILanguageFeaturesService),z=he.get(I.IModelService).getModel(te);if(!z)throw(0,y.illegalArgument)();const ee=he.get(M.IConfigurationService);if(!ee.getValue("editor.folding",{resource:te}))return[];const $=he.get(n.ILanguageConfigurationService),re=ee.getValue("editor.foldingStrategy",{resource:te}),oe={get limit(){return ee.getValue("editor.foldingMaximumRegions",{resource:te})},update:(De,ye)=>{}},ge=new u.IndentRangeProvider(z,$,oe);let ve=ge;if(re!=="indentation"){const De=T.getFoldingRangeProviders(q,z);De.length&&(ve=new d.SyntaxRangeProvider(z,De,()=>{},oe,ge))}const Se=yield ve.compute(k.CancellationToken.None),Le=[];try{if(Se)for(let De=0;DeW.hoverOrdinal-U.hoverOrdinal),this._computer=new x(this._editor,this._participants),this._hoverOperation=this._register(new C.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(W=>{if(!this._computer.anchor)return;const U=W.hasLoadingMessage?this._addLoadingMessage(W.value):W.value;this._withResult(new m(this._computer.anchor,U,W.isComplete))})),this._register(L.addStandardDisposableListener(this._widget.getDomNode(),"keydown",W=>{W.equals(9)&&this.hide()})),this._register(g.TokenizationRegistry.onDidChange(()=>{this._widget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}get widget(){return this._widget}maybeShowAt(N){if(this._widget.isResizing)return!0;const F=[];for(const W of this._participants)if(W.suggestHoverAnchor){const U=W.suggestHoverAnchor(N);U&&F.push(U)}const O=N.target;if(O.type===6&&F.push(new s.HoverRangeAnchor(0,O.range,N.event.posx,N.event.posy)),O.type===7){const W=this._editor.getOption(49).typicalHalfwidthCharacterWidth/2;!O.detail.isAfterLines&&typeof O.detail.horizontalDistanceToText=="number"&&O.detail.horizontalDistanceToTextU.priority-W.priority),this._startShowingOrUpdateHover(F[0],0,0,!1,N))}startShowingAtRange(N,F,O,W){this._startShowingOrUpdateHover(new s.HoverRangeAnchor(0,N,void 0,void 0),F,O,W,null)}_startShowingOrUpdateHover(N,F,O,W,U){return!this._widget.position||!this._currentResult?N?(this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):!1:this._editor.getOption(59).sticky&&U&&this._widget.isMouseGettingCloser(U.event.posx,U.event.posy)?(N&&this._startHoverOperationIfNecessary(N,F,O,W,!0),!0):N?N&&this._currentResult.anchor.equals(N)?!0:N.canAdoptVisibleHover(this._currentResult.anchor,this._widget.position)?(this._setCurrentResult(this._currentResult.filter(N)),this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(N,F,O,W,U){this._computer.anchor&&this._computer.anchor.equals(N)||(this._hoverOperation.cancel(),this._computer.anchor=N,this._computer.shouldFocus=W,this._computer.source=O,this._computer.insistOnKeepingHoverVisible=U,this._hoverOperation.start(F))}_setCurrentResult(N){this._currentResult!==N&&(N&&N.messages.length===0&&(N=null),this._currentResult=N,this._currentResult?this._renderMessages(this._currentResult.anchor,this._currentResult.messages):this._widget.hide())}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}get isColorPickerVisible(){return this._widget.isColorPickerVisible}get isVisibleFromKeyboard(){return this._widget.isVisibleFromKeyboard}get isVisible(){return this._widget.isVisible}get isFocused(){return this._widget.isFocused}get isResizing(){return this._widget.isResizing}containsNode(N){return N?this._widget.getDomNode().contains(N):!1}_addLoadingMessage(N){if(this._computer.anchor){for(const F of this._participants)if(F.createLoadingMessage){const O=F.createLoadingMessage(this._computer.anchor);if(O)return N.slice(0).concat([O])}}return N}_withResult(N){this._widget.position&&this._currentResult&&this._currentResult.isComplete&&(!N.isComplete||this._computer.insistOnKeepingHoverVisible&&N.messages.length===0)||this._setCurrentResult(N)}_renderMessages(N,F){const{showAtPosition:O,showAtSecondaryPosition:W,highlightRange:U}=o.computeHoverRanges(this._editor,N.range,F),j=new D.DisposableStore,R=j.add(new P(this._keybindingService)),K=document.createDocumentFragment();let G=null;const Z={fragment:K,statusBar:R,setColorPicker:X=>G=X,onContentsChanged:()=>this._widget.onContentsChanged(),setMinimumDimensions:X=>this._widget.setMinimumDimensions(X),hide:()=>this.hide()};for(const X of this._participants){const H=F.filter(B=>B.owner===X);H.length>0&&j.add(X.renderHoverParts(Z,H))}const J=F.some(X=>X.isBeforeContent);if(R.hasContent&&K.appendChild(R.hoverElement),K.hasChildNodes()){if(U){const X=this._editor.createDecorationsCollection();X.set([{range:U,options:o._DECORATION_OPTIONS}]),j.add((0,D.toDisposable)(()=>{X.clear()}))}this._widget.showAt(K,new b(G,O,W,this._editor.getOption(59).above,this._computer.shouldFocus,this._computer.source,J,N.initialMousePosX,N.initialMousePosY,j))}else j.dispose()}static computeHoverRanges(N,F,O){let W=1;if(N.hasModel()){const G=N._getViewModel(),Z=G.coordinatesConverter,J=Z.convertModelRangeToViewRange(F),X=new S.Position(J.startLineNumber,G.getLineMinColumn(J.startLineNumber));W=Z.convertViewPositionToModelPosition(X).column}const U=F.startLineNumber;let j=F.startColumn,R=O[0].range,K=null;for(const G of O)R=f.Range.plusRange(R,G.range),G.range.startLineNumber===U&&G.range.endLineNumber===U&&(j=Math.max(Math.min(j,G.range.startColumn),W)),G.forceShowAtRange&&(K=G.range);return{showAtPosition:K?K.getStartPosition():new S.Position(U,F.startColumn),showAtSecondaryPosition:K?K.getStartPosition():new S.Position(U,j),highlightRange:R}}focus(){this._widget.focus()}scrollUp(){this._widget.scrollUp()}scrollDown(){this._widget.scrollDown()}scrollLeft(){this._widget.scrollLeft()}scrollRight(){this._widget.scrollRight()}pageUp(){this._widget.pageUp()}pageDown(){this._widget.pageDown()}goToTop(){this._widget.goToTop()}goToBottom(){this._widget.goToBottom()}};e.ContentHoverController=p,p._DECORATION_OPTIONS=_.ModelDecorationOptions.register({description:"content-hover-highlight",className:"hoverHighlight"}),e.ContentHoverController=p=o=ke([fe(1,i.IInstantiationService),fe(2,n.IKeybindingService)],p);class m{constructor(N,F,O){this.anchor=N,this.messages=F,this.isComplete=O}filter(N){const F=this.messages.filter(O=>O.isValidForHoverAnchor(N));return F.length===this.messages.length?this:new v(this,this.anchor,F,this.isComplete)}}class v extends m{constructor(N,F,O,W){super(F,O,W),this.original=N}filter(N){return this.original.filter(N)}}class b{constructor(N,F,O,W,U,j,R,K,G,Z){this.colorPicker=N,this.showAtPosition=F,this.showAtSecondaryPosition=O,this.preferAbove=W,this.stoleFocus=U,this.source=j,this.isBeforeContent=R,this.initialMousePosX=K,this.initialMousePosY=G,this.disposables=Z,this.closestMouseDistance=void 0}}const w=30,E=10,I=6;let M=d=class extends h.ResizableContentWidget{get isColorPickerVisible(){var N;return!!(!((N=this._visibleData)===null||N===void 0)&&N.colorPicker)}get isVisibleFromKeyboard(){var N;return((N=this._visibleData)===null||N===void 0?void 0:N.source)===1}get isVisible(){var N;return(N=this._hoverVisibleKey.get())!==null&&N!==void 0?N:!1}get isFocused(){var N;return(N=this._hoverFocusedKey.get())!==null&&N!==void 0?N:!1}constructor(N,F,O,W,U){const j=N.getOption(65)+8,R=150,K=new L.Dimension(R,j);super(N,K),this._configurationService=O,this._accessibilityService=W,this._keybindingService=U,this._hover=this._register(new k.HoverWidget),this._minimumSize=K,this._hoverVisibleKey=a.EditorContextKeys.hoverVisible.bindTo(F),this._hoverFocusedKey=a.EditorContextKeys.hoverFocused.bindTo(F),L.append(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._register(this._editor.onDidLayoutChange(()=>this._layout())),this._register(this._editor.onDidChangeConfiguration(Z=>{Z.hasChanged(49)&&this._updateFont()}));const G=this._register(L.trackFocus(this._resizableNode.domNode));this._register(G.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(G.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setHoverData(void 0),this._layout(),this._editor.addContentWidget(this)}dispose(){var N;super.dispose(),(N=this._visibleData)===null||N===void 0||N.disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return d.ID}static _applyDimensions(N,F,O){const W=typeof F=="number"?`${F}px`:F,U=typeof O=="number"?`${O}px`:O;N.style.width=W,N.style.height=U}_setContentsDomNodeDimensions(N,F){const O=this._hover.contentsDomNode;return d._applyDimensions(O,N,F)}_setContainerDomNodeDimensions(N,F){const O=this._hover.containerDomNode;return d._applyDimensions(O,N,F)}_setHoverWidgetDimensions(N,F){this._setContentsDomNodeDimensions(N,F),this._setContainerDomNodeDimensions(N,F),this._layoutContentWidget()}static _applyMaxDimensions(N,F,O){const W=typeof F=="number"?`${F}px`:F,U=typeof O=="number"?`${O}px`:O;N.style.maxWidth=W,N.style.maxHeight=U}_setHoverWidgetMaxDimensions(N,F){d._applyMaxDimensions(this._hover.contentsDomNode,N,F),d._applyMaxDimensions(this._hover.containerDomNode,N,F),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof N=="number"?`${N}px`:N),this._layoutContentWidget()}_hasHorizontalScrollbar(){const N=this._hover.scrollbar.getScrollDimensions();return N.scrollWidth>N.width}_adjustContentsBottomPadding(){const N=this._hover.contentsDomNode,F=`${this._hover.scrollbar.options.horizontalScrollbarSize}px`;N.style.paddingBottom!==F&&(N.style.paddingBottom=F)}_setAdjustedHoverWidgetDimensions(N){this._setHoverWidgetMaxDimensions("none","none");const F=N.width,O=N.height;this._setHoverWidgetDimensions(F,O),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._setContentsDomNodeDimensions(F,O-E))}_updateResizableNodeMaxDimensions(){var N,F;const O=(N=this._findMaximumRenderingWidth())!==null&&N!==void 0?N:1/0,W=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._resizableNode.maxSize=new L.Dimension(O,W),this._setHoverWidgetMaxDimensions(O,W)}_resize(N){var F,O;d._lastDimensions=new L.Dimension(N.width,N.height),this._setAdjustedHoverWidgetDimensions(N),this._resizableNode.layout(N.height,N.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),(O=(F=this._visibleData)===null||F===void 0?void 0:F.colorPicker)===null||O===void 0||O.layout()}_findAvailableSpaceVertically(){var N;const F=(N=this._visibleData)===null||N===void 0?void 0:N.showAtPosition;if(F)return this._positionPreference===1?this._availableVerticalSpaceAbove(F):this._availableVerticalSpaceBelow(F)}_findMaximumRenderingHeight(){const N=this._findAvailableSpaceVertically();if(!N)return;let F=I;return Array.from(this._hover.contentsDomNode.children).forEach(O=>{F+=O.clientHeight}),this._hasHorizontalScrollbar()&&(F+=E),Math.min(N,F)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const N=Array.from(this._hover.contentsDomNode.children).some(F=>F.scrollWidth>F.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),N}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const N=this._isHoverTextOverflowing(),F=typeof this._contentWidth>"u"?0:this._contentWidth-2;return N||this._hover.containerDomNode.clientWidth"u"||typeof this._visibleData.initialMousePosY>"u")return this._visibleData.initialMousePosX=N,this._visibleData.initialMousePosY=F,!1;const O=L.getDomNodePagePosition(this.getDomNode());typeof this._visibleData.closestMouseDistance>"u"&&(this._visibleData.closestMouseDistance=T(this._visibleData.initialMousePosX,this._visibleData.initialMousePosY,O.left,O.top,O.width,O.height));const W=T(N,F,O.left,O.top,O.width,O.height);return W>this._visibleData.closestMouseDistance+4?!1:(this._visibleData.closestMouseDistance=Math.min(this._visibleData.closestMouseDistance,W),!0)}_setHoverData(N){var F;(F=this._visibleData)===null||F===void 0||F.disposables.dispose(),this._visibleData=N,this._hoverVisibleKey.set(!!N),this._hover.containerDomNode.classList.toggle("hidden",!N)}_layout(){const{fontSize:N,lineHeight:F}=this._editor.getOption(49),O=this._hover.contentsDomNode;O.style.fontSize=`${N}px`,O.style.lineHeight=`${F/N}`,this._updateMaxDimensions()}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(F=>this._editor.applyFontInfo(F))}_updateContent(N){const F=this._hover.contentsDomNode;F.style.paddingBottom="",F.textContent="",F.appendChild(N)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const N=Math.max(this._editor.getLayoutInfo().height/4,250,d._lastDimensions.height),F=Math.max(this._editor.getLayoutInfo().width*.66,500,d._lastDimensions.width);this._setHoverWidgetMaxDimensions(F,N)}_render(N,F){this._setHoverData(F),this._updateFont(),this._updateContent(N),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){var N;return this._visibleData?{position:this._visibleData.showAtPosition,secondaryPosition:this._visibleData.showAtSecondaryPosition,positionAffinity:this._visibleData.isBeforeContent?3:void 0,preference:[(N=this._positionPreference)!==null&&N!==void 0?N:1]}:null}showAt(N,F){var O,W,U,j;if(!this._editor||!this._editor.hasModel())return;this._render(N,F);const R=L.getTotalHeight(this._hover.containerDomNode),K=F.showAtPosition;this._positionPreference=(O=this._findPositionPreference(R,K))!==null&&O!==void 0?O:1,this.onContentsChanged(),F.stoleFocus&&this._hover.containerDomNode.focus(),(W=F.colorPicker)===null||W===void 0||W.layout();const G=(0,k.getHoverAccessibleViewHint)(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(j=(U=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))===null||U===void 0?void 0:U.getAriaLabel())!==null&&j!==void 0?j:"");G&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+G)}hide(){if(!this._visibleData)return;const N=this._visibleData.stoleFocus||this._hoverFocusedKey.get();this._setHoverData(void 0),this._resizableNode.maxSize=new L.Dimension(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),N&&this._editor.focus()}_removeConstraintsRenderNormally(){const N=this._editor.getLayoutInfo();this._resizableNode.layout(N.height,N.width),this._setHoverWidgetDimensions("auto","auto")}_adjustHoverHeightForScrollbar(N){var F;const O=this._hover.containerDomNode,W=this._hover.contentsDomNode,U=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._setContainerDomNodeDimensions(L.getTotalWidth(O),Math.min(U,N)),this._setContentsDomNodeDimensions(L.getTotalWidth(W),Math.min(U,N-E))}setMinimumDimensions(N){this._minimumSize=new L.Dimension(Math.max(this._minimumSize.width,N.width),Math.max(this._minimumSize.height,N.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const N=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new L.Dimension(N,this._minimumSize.height)}onContentsChanged(){var N;this._removeConstraintsRenderNormally();const F=this._hover.containerDomNode;let O=L.getTotalHeight(F),W=L.getTotalWidth(F);if(this._resizableNode.layout(O,W),this._setHoverWidgetDimensions(W,O),O=L.getTotalHeight(F),W=L.getTotalWidth(F),this._contentWidth=W,this._updateMinimumWidth(),this._resizableNode.layout(O,W),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._adjustHoverHeightForScrollbar(O)),!((N=this._visibleData)===null||N===void 0)&&N.showAtPosition){const U=L.getTotalHeight(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(U,this._visibleData.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(49);this._hover.scrollbar.setScrollPosition({scrollTop:N-F.lineHeight})}scrollDown(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(49);this._hover.scrollbar.setScrollPosition({scrollTop:N+F.lineHeight})}scrollLeft(){const N=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:N-w})}scrollRight(){const N=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:N+w})}pageUp(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:N-F})}pageDown(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:N+F})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}};e.ContentHoverWidget=M,M.ID="editor.contrib.resizableContentHoverWidget",M._lastDimensions=new L.Dimension(0,0),e.ContentHoverWidget=M=d=ke([fe(1,u.IContextKeyService),fe(2,r.IConfigurationService),fe(3,c.IAccessibilityService),fe(4,n.IKeybindingService)],M);let P=class extends D.Disposable{get hasContent(){return this._hasContent}constructor(N){super(),this._keybindingService=N,this._hasContent=!1,this.hoverElement=l("div.hover-row.status-bar"),this.actionsElement=L.append(this.hoverElement,l("div.actions"))}addAction(N){const F=this._keybindingService.lookupKeybinding(N.commandId),O=F?F.getLabel():null;return this._hasContent=!0,this._register(k.HoverAction.render(this.actionsElement,N,O))}append(N){const F=L.append(this.actionsElement,N);return this._hasContent=!0,F}};e.EditorHoverStatusBar=P,e.EditorHoverStatusBar=P=ke([fe(0,n.IKeybindingService)],P);class x{get anchor(){return this._anchor}set anchor(N){this._anchor=N}get shouldFocus(){return this._shouldFocus}set shouldFocus(N){this._shouldFocus=N}get source(){return this._source}set source(N){this._source=N}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(N){this._insistOnKeepingHoverVisible=N}constructor(N,F){this._editor=N,this._participants=F,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(N,F){if(F.type!==1&&!F.supportsMarkerHover)return[];const O=N.getModel(),W=F.range.startLineNumber;if(W>O.getLineCount())return[];const U=O.getLineMaxColumn(W);return N.getLineDecorations(W).filter(j=>{if(j.options.isWholeLine)return!0;const R=j.range.startLineNumber===W?j.range.startColumn:1,K=j.range.endLineNumber===W?j.range.endColumn:U;if(j.options.showIfCollapsed){if(R>F.range.startColumn+1||F.range.endColumn-1>K)return!1}else if(R>F.range.startColumn||F.range.endColumn>K)return!1;return!0})}computeAsync(N){const F=this._anchor;if(!this._editor.hasModel()||!F)return t.AsyncIterableObject.EMPTY;const O=x._getLineDecorations(this._editor,F);return t.AsyncIterableObject.merge(this._participants.map(W=>W.computeAsync?W.computeAsync(F,O,N):t.AsyncIterableObject.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const N=x._getLineDecorations(this._editor,this._anchor);let F=[];for(const O of this._participants)F=F.concat(O.computeSync(this._anchor,N));return(0,y.coalesce)(F)}}function T(A,N,F,O,W,U){const j=F+W/2,R=O+U/2,K=Math.max(Math.abs(A-j)-W/2,0),G=Math.max(Math.abs(N-R)-U/2,0);return Math.sqrt(K*K+G*G)}}),define(ne[885],se([1,0,2,364,8,367,34,6,18,16,21,15,51,32,342,7,199]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u,h;Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneColorPickerWidget=e.StandaloneColorPickerController=void 0;let r=u=class extends L.Disposable{constructor(m,v,b,w,E,I,M){super(),this._editor=m,this._modelService=b,this._keybindingService=w,this._instantiationService=E,this._languageFeatureService=I,this._languageConfigurationService=M,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=C.EditorContextKeys.standaloneColorPickerVisible.bindTo(v),this._standaloneColorPickerFocused=C.EditorContextKeys.standaloneColorPickerFocused.bindTo(v)}showOrFocus(){var m;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(m=this._standaloneColorPickerWidget)===null||m===void 0||m.focus():this._standaloneColorPickerWidget=new d(this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused,this._instantiationService,this._modelService,this._keybindingService,this._languageFeatureService,this._languageConfigurationService))}hide(){var m;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(m=this._standaloneColorPickerWidget)===null||m===void 0||m.hide(),this._editor.focus()}insertColor(){var m;(m=this._standaloneColorPickerWidget)===null||m===void 0||m.updateEditor(),this.hide()}static get(m){return m.getContribution(u.ID)}};e.StandaloneColorPickerController=r,r.ID="editor.contrib.standaloneColorPickerController",e.StandaloneColorPickerController=r=u=ke([fe(1,s.IContextKeyService),fe(2,i.IModelService),fe(3,S.IKeybindingService),fe(4,y.IInstantiationService),fe(5,_.ILanguageFeaturesService),fe(6,n.ILanguageConfigurationService)],r),(0,g.registerEditorContribution)(r.ID,r,1);const c=8,o=22;let d=h=class extends L.Disposable{constructor(m,v,b,w,E,I,M,P){var x;super(),this._editor=m,this._standaloneColorPickerVisible=v,this._standaloneColorPickerFocused=b,this._modelService=E,this._keybindingService=I,this._languageFeaturesService=M,this._languageConfigurationService=P,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new f.Emitter),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=w.createInstance(k.StandaloneColorPickerParticipant,this._editor),this._position=(x=this._editor._getViewModel())===null||x===void 0?void 0:x.getPrimaryCursorState().modelState.position;const T=this._editor.getSelection(),A=T?{startLineNumber:T.startLineNumber,startColumn:T.startColumn,endLineNumber:T.endLineNumber,endColumn:T.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},N=this._register(a.trackFocus(this._body));this._register(N.onDidBlur(F=>{this.hide()})),this._register(N.onDidFocus(F=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(F=>{var O;const W=(O=F.target.element)===null||O===void 0?void 0:O.classList;W&&W.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(F=>{this._render(F.value,F.foundInEditor)})),this._start(A),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return h.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const m=this._editor.getOption(59).above;return{position:this._position,secondaryPosition:this._position,preference:m?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}_start(m){return we(this,void 0,void 0,function*(){const v=yield this._computeAsync(m);v&&this._onResult.fire(new l(v.result,v.foundInEditor))})}_computeAsync(m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return null;const v={range:m,color:{red:0,green:0,blue:0,alpha:1}},b=yield this._standaloneColorPickerParticipant.createColorHover(v,new t.DefaultDocumentColorProvider(this._modelService,this._languageConfigurationService),this._languageFeaturesService.colorProvider);return b?{result:b.colorHover,foundInEditor:b.foundInEditor}:null})}_render(m,v){const b=document.createDocumentFragment(),w=this._register(new D.EditorHoverStatusBar(this._keybindingService));let E;const I={fragment:b,statusBar:w,setColorPicker:W=>E=W,onContentsChanged:()=>{},hide:()=>this.hide()};if(this._colorHover=m,this._register(this._standaloneColorPickerParticipant.renderHoverParts(I,[m])),E===void 0)return;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(b),E.layout();const M=E.body,P=M.saturationBox.domNode.clientWidth,x=M.domNode.clientWidth-P-o-c,T=E.body.enterButton;T?.onClicked(()=>{this.updateEditor(),this.hide()});const A=E.header,N=A.pickedColorNode;N.style.width=P+c+"px";const F=A.originalColorNode;F.style.width=x+"px";const O=E.header.closeButton;O?.onClicked(()=>{this.hide()}),v&&(T&&(T.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(m.range)),this._editor.layoutContentWidget(this)}};e.StandaloneColorPickerWidget=d,d.ID="editor.contrib.standaloneColorPickerWidget",e.StandaloneColorPickerWidget=d=h=ke([fe(3,y.IInstantiationService),fe(4,i.IModelService),fe(5,S.IKeybindingService),fe(6,_.ILanguageFeaturesService),fe(7,n.ILanguageConfigurationService)],d);class l{constructor(m,v){this.value=m,this.foundInEditor=v}}}),define(ne[886],se([1,0,16,645,885,21,30,199]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowOrFocusStandaloneColorPicker=void 0;class f extends L.EditorAction2{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{value:(0,k.localize)(0,null),mnemonicTitle:(0,k.localize)(1,null),original:"Show or Focus Standalone Color Picker"},precondition:void 0,menu:[{id:S.MenuId.CommandPalette}]})}runEditorCommand(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.showOrFocus()}}e.ShowOrFocusStandaloneColorPicker=f;class _ extends L.EditorAction{constructor(){super({id:"editor.action.hideColorPicker",label:(0,k.localize)(2,null),alias:"Hide the Color Picker",precondition:D.EditorContextKeys.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100}})}run(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.hide()}}class g extends L.EditorAction{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:(0,k.localize)(3,null),alias:"Insert Color with Standalone Color Picker",precondition:D.EditorContextKeys.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100}})}run(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.insertColor()}}(0,L.registerEditorAction)(_),(0,L.registerEditorAction)(g),(0,S.registerAction2)(f)}),define(ne[887],se([1,0,13,9,104,16,5,24,21,40,115,674,544,449]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";var n;Object.defineProperty(e,"__esModule",{value:!0});let t=n=class{static get(r){return r.getContribution(n.ID)}constructor(r,c){this.editor=r,this.editorWorkerService=c,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(r,c){var o;(o=this.currentRequest)===null||o===void 0||o.cancel();const d=this.editor.getSelection(),l=this.editor.getModel();if(!l||!d)return;let p=d;if(p.startLineNumber!==p.endLineNumber)return;const m=new y.EditorState(this.editor,5),v=l.uri;return this.editorWorkerService.canNavigateValueSet(v)?(this.currentRequest=(0,L.createCancelablePromise)(b=>this.editorWorkerService.navigateValueSet(v,p,c)),this.currentRequest.then(b=>{var w;if(!b||!b.range||!b.value||!m.validate(this.editor))return;const E=S.Range.lift(b.range);let I=b.range;const M=b.value.length-(p.endColumn-p.startColumn);I={startLineNumber:I.startLineNumber,startColumn:I.startColumn,endLineNumber:I.endLineNumber,endColumn:I.startColumn+b.value.length},M>1&&(p=new f.Selection(p.startLineNumber,p.startColumn,p.endLineNumber,p.endColumn+M-1));const P=new i.InPlaceReplaceCommand(E,p,b.value);this.editor.pushUndoStop(),this.editor.executeCommand(r,P),this.editor.pushUndoStop(),this.decorations.set([{range:I,options:n.DECORATION}]),(w=this.decorationRemover)===null||w===void 0||w.cancel(),this.decorationRemover=(0,L.timeout)(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(k.onUnexpectedError)}).catch(k.onUnexpectedError)):Promise.resolve(void 0)}};t.ID="editor.contrib.inPlaceReplaceController",t.DECORATION=g.ModelDecorationOptions.register({description:"in-place-replace",className:"valueSetReplacement"}),t=n=ke([fe(1,C.IEditorWorkerService)],t);class a extends D.EditorAction{constructor(){super({id:"editor.action.inPlaceReplace.up",label:s.localize(0,null),alias:"Replace with Previous Value",precondition:_.EditorContextKeys.writable,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3159,weight:100}})}run(r,c){const o=t.get(c);return o?o.run(this.id,!1):Promise.resolve(void 0)}}class u extends D.EditorAction{constructor(){super({id:"editor.action.inPlaceReplace.down",label:s.localize(1,null),alias:"Replace with Next Value",precondition:_.EditorContextKeys.writable,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3161,weight:100}})}run(r,c){const o=t.get(c);return o?o.run(this.id,!0):Promise.resolve(void 0)}}(0,D.registerEditorContribution)(t.ID,t,4),(0,D.registerEditorAction)(a),(0,D.registerEditorAction)(u)}),define(ne[256],se([1,0,7,13,25,2,11,26,5,40,8,452]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineProgressManager=void 0;const s=g.ModelDecorationOptions.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:S.noBreakWhitespace,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}});class i extends D.Disposable{constructor(a,u,h,r,c){super(),this.typeId=a,this.editor=u,this.range=h,this.delegate=c,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(r),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(a){this.domNode=L.$(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=a;const u=L.$("span.icon");this.domNode.append(u),u.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.loading),"codicon-modifier-spin");const h=()=>{const r=this.editor.getOption(65);this.domNode.style.height=`${r}px`,this.domNode.style.width=`${Math.ceil(.8*r)}px`};h(),this._register(this.editor.onDidChangeConfiguration(r=>{(r.hasChanged(51)||r.hasChanged(65))&&h()})),this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,r=>{this.delegate.cancel()}))}getId(){return i.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}}i.baseId="editor.widget.inlineProgressWidget";let n=class extends D.Disposable{constructor(a,u,h){super(),this.id=a,this._editor=u,this._instantiationService=h,this._showDelay=500,this._showPromise=this._register(new D.MutableDisposable),this._currentWidget=new D.MutableDisposable,this._operationIdPool=0,this._currentDecorations=u.createDecorationsCollection()}showWhile(a,u,h){return we(this,void 0,void 0,function*(){const r=this._operationIdPool++;this._currentOperation=r,this.clear(),this._showPromise.value=(0,k.disposableTimeout)(()=>{const c=_.Range.fromPositions(a);this._currentDecorations.set([{range:c,options:s}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(i,this.id,this._editor,c,u,h))},this._showDelay);try{return yield h}finally{this._currentOperation===r&&(this.clear(),this._currentOperation=void 0)}})}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};e.InlineProgressManager=n,e.InlineProgressManager=n=ke([fe(2,C.IInstantiationService)],n)}),define(ne[888],se([1,0,7,14,13,171,2,107,17,170,185,341,132,5,18,331,104,256,650,96,15,8,77,71,335]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){"use strict";var v;Object.defineProperty(e,"__esModule",{value:!0}),e.CopyPasteController=e.pasteWidgetVisibleCtx=e.changePasteTypeCommandId=void 0,e.changePasteTypeCommandId="editor.changePasteType",e.pasteWidgetVisibleCtx=new o.RawContextKey("pasteWidgetVisible",!1,(0,r.localize)(0,null));const b="application/vnd.code.copyMetadata";let w=v=class extends S.Disposable{static get(M){return M.getContribution(v.ID)}constructor(M,P,x,T,A,N,F){super(),this._bulkEditService=x,this._clipboardService=T,this._languageFeaturesService=A,this._quickInputService=N,this._progressService=F,this._editor=M;const O=M.getContainerDomNode();this._register((0,L.addDisposableListener)(O,"copy",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(O,"cut",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(O,"paste",W=>this.handlePaste(W),!0)),this._pasteProgressManager=this._register(new h.InlineProgressManager("pasteIntoEditor",M,P)),this._postPasteWidgetManager=this._register(P.createInstance(m.PostEditWidgetManager,"pasteIntoEditor",M,e.pasteWidgetVisibleCtx,{id:e.changePasteTypeCommandId,label:(0,r.localize)(1,null)}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(M){this._editor.focus();try{this._pasteAsActionContext={preferredId:M},document.execCommand("paste")}finally{this._pasteAsActionContext=void 0}}isPasteAsEnabled(){return this._editor.getOption(83).enabled&&!this._editor.getOption(89)}handleCopy(M){var P,x;if(!this._editor.hasTextFocus()||(_.isWeb&&this._clipboardService.writeResources([]),!M.clipboardData||!this.isPasteAsEnabled()))return;const T=this._editor.getModel(),A=this._editor.getSelections();if(!T||!A?.length)return;const N=this._editor.getOption(36);let F=A;const O=A.length===1&&A[0].isEmpty();if(O){if(!N)return;F=[new n.Range(F[0].startLineNumber,1,F[0].startLineNumber,1+T.getLineLength(F[0].startLineNumber))]}const W=(P=this._editor._getViewModel())===null||P===void 0?void 0:P.getPlainTextToCopy(A,N,_.isWindows),j={multicursorText:Array.isArray(W)?W:null,pasteOnNewLine:O,mode:null},R=this._languageFeaturesService.documentPasteEditProvider.ordered(T).filter(X=>!!X.prepareDocumentPaste);if(!R.length){this.setCopyMetadata(M.clipboardData,{defaultPastePayload:j});return}const K=(0,s.toVSDataTransfer)(M.clipboardData),G=R.flatMap(X=>{var H;return(H=X.copyMimeTypes)!==null&&H!==void 0?H:[]}),Z=(0,g.generateUuid)();this.setCopyMetadata(M.clipboardData,{id:Z,providerCopyMimeTypes:G,defaultPastePayload:j});const J=(0,y.createCancelablePromise)(X=>we(this,void 0,void 0,function*(){const H=(0,k.coalesce)(yield Promise.all(R.map(B=>we(this,void 0,void 0,function*(){try{return yield B.prepareDocumentPaste(T,F,K,X)}catch(V){console.error(V);return}}))));H.reverse();for(const B of H)for(const[V,Y]of B)K.replace(V,Y);return K}));(x=this._currentCopyOperation)===null||x===void 0||x.dataTransferPromise.cancel(),this._currentCopyOperation={handle:Z,dataTransferPromise:J}}handlePaste(M){var P,x;return we(this,void 0,void 0,function*(){if(!M.clipboardData||!this._editor.hasTextFocus())return;(P=this._currentPasteOperation)===null||P===void 0||P.cancel(),this._currentPasteOperation=void 0;const T=this._editor.getModel(),A=this._editor.getSelections();if(!A?.length||!T||!this.isPasteAsEnabled())return;const N=this.fetchCopyMetadata(M),F=(0,s.toExternalVSDataTransfer)(M.clipboardData);F.delete(b);const O=[...M.clipboardData.types,...(x=N?.providerCopyMimeTypes)!==null&&x!==void 0?x:[],f.Mimes.uriList],W=this._languageFeaturesService.documentPasteEditProvider.ordered(T).filter(U=>{var j;return(j=U.pasteMimeTypes)===null||j===void 0?void 0:j.some(R=>(0,D.matchesMimeType)(R,O))});W.length&&(M.preventDefault(),M.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferredId,W,A,F,N):this.doPasteInline(W,A,F,N))})}doPasteInline(M,P,x,T){const A=(0,y.createCancelablePromise)(N=>we(this,void 0,void 0,function*(){const F=this._editor;if(!F.hasModel())return;const O=F.getModel(),W=new u.EditorStateCancellationTokenSource(F,3,void 0,N);try{if(yield this.mergeInDataFromCopy(x,T,W.token),W.token.isCancellationRequested)return;const U=M.filter(R=>E(R,x));if(!U.length||U.length===1&&U[0].id==="text"){yield this.applyDefaultPasteHandler(x,T,W.token);return}const j=yield this.getPasteEdits(U,x,O,P,W.token);if(W.token.isCancellationRequested)return;if(j.length===1&&j[0].providerId==="text"){yield this.applyDefaultPasteHandler(x,T,W.token);return}if(j.length){const R=F.getOption(83).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(P,{activeEditIndex:0,allEdits:j},R,W.token)}yield this.applyDefaultPasteHandler(x,T,W.token)}finally{W.dispose(),this._currentPasteOperation===A&&(this._currentPasteOperation=void 0)}}));this._pasteProgressManager.showWhile(P[0].getEndPosition(),(0,r.localize)(2,null),A),this._currentPasteOperation=A}showPasteAsPick(M,P,x,T,A){const N=(0,y.createCancelablePromise)(F=>we(this,void 0,void 0,function*(){const O=this._editor;if(!O.hasModel())return;const W=O.getModel(),U=new u.EditorStateCancellationTokenSource(O,3,void 0,F);try{if(yield this.mergeInDataFromCopy(T,A,U.token),U.token.isCancellationRequested)return;let j=P.filter(Z=>E(Z,T));M&&(j=j.filter(Z=>Z.id===M));const R=yield this.getPasteEdits(j,T,W,x,U.token);if(U.token.isCancellationRequested||!R.length)return;let K;if(M)K=R.at(0);else{const Z=yield this._quickInputService.pick(R.map(J=>({label:J.label,description:J.providerId,detail:J.detail,edit:J})),{placeHolder:(0,r.localize)(3,null)});K=Z?.edit}if(!K)return;const G=(0,a.createCombinedWorkspaceEdit)(W.uri,x,K);yield this._bulkEditService.apply(G,{editor:this._editor})}finally{U.dispose(),this._currentPasteOperation===N&&(this._currentPasteOperation=void 0)}}));this._progressService.withProgress({location:10,title:(0,r.localize)(4,null)},()=>N)}setCopyMetadata(M,P){M.setData(b,JSON.stringify(P))}fetchCopyMetadata(M){var P;if(!M.clipboardData)return;const x=M.clipboardData.getData(b);if(x)try{return JSON.parse(x)}catch{return}const[T,A]=C.ClipboardEventUtils.getTextData(M.clipboardData);if(A)return{defaultPastePayload:{mode:A.mode,multicursorText:(P=A.multicursorText)!==null&&P!==void 0?P:null,pasteOnNewLine:!!A.isFromEmptySelection}}}mergeInDataFromCopy(M,P,x){var T;return we(this,void 0,void 0,function*(){if(P?.id&&((T=this._currentCopyOperation)===null||T===void 0?void 0:T.handle)===P.id){const A=yield this._currentCopyOperation.dataTransferPromise;if(x.isCancellationRequested)return;for(const[N,F]of A)M.replace(N,F)}if(!M.has(f.Mimes.uriList)){const A=yield this._clipboardService.readResources();if(x.isCancellationRequested)return;A.length&&M.append(f.Mimes.uriList,(0,D.createStringDataTransferItem)(D.UriList.create(A)))}})}getPasteEdits(M,P,x,T,A){return we(this,void 0,void 0,function*(){const N=yield(0,y.raceCancellation)(Promise.all(M.map(O=>we(this,void 0,void 0,function*(){var W;try{const U=yield(W=O.provideDocumentPasteEdits)===null||W===void 0?void 0:W.call(O,x,T,P,A);if(U)return Object.assign(Object.assign({},U),{providerId:O.id})}catch(U){console.error(U)}}))),A),F=(0,k.coalesce)(N??[]);return(0,a.sortEditsByYieldTo)(F),F})}applyDefaultPasteHandler(M,P,x){var T,A,N;return we(this,void 0,void 0,function*(){const F=(T=M.get(f.Mimes.text))!==null&&T!==void 0?T:M.get("text");if(!F)return;const O=yield F.asString();if(x.isCancellationRequested)return;const W={text:O,pasteOnNewLine:(A=P?.defaultPastePayload.pasteOnNewLine)!==null&&A!==void 0?A:!1,multicursorText:(N=P?.defaultPastePayload.multicursorText)!==null&&N!==void 0?N:null,mode:null};this._editor.trigger("keyboard","paste",W)})}};e.CopyPasteController=w,w.ID="editor.contrib.copyPasteActionController",e.CopyPasteController=w=v=ke([fe(1,d.IInstantiationService),fe(2,i.IBulkEditService),fe(3,c.IClipboardService),fe(4,t.ILanguageFeaturesService),fe(5,p.IQuickInputService),fe(6,l.IProgressService)],w);function E(I,M){var P;return!!(!((P=I.pasteMimeTypes)===null||P===void 0)&&P.some(x=>M.matches(x)))}}),define(ne[889],se([1,0,14,13,171,2,341,5,18,285,749,104,256,653,28,15,340,8,331,335]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c){"use strict";var o;Object.defineProperty(e,"__esModule",{value:!0}),e.DropIntoEditorController=e.dropWidgetVisibleCtx=e.changeDropTypeCommandId=e.defaultProviderConfig=void 0,e.defaultProviderConfig="editor.experimental.dropIntoEditor.defaultProvider",e.changeDropTypeCommandId="editor.changeDropType",e.dropWidgetVisibleCtx=new a.RawContextKey("dropWidgetVisible",!1,(0,n.localize)(0,null));let d=o=class extends D.Disposable{static get(p){return p.getContribution(o.ID)}constructor(p,m,v,b,w){super(),this._configService=v,this._languageFeaturesService=b,this._treeViewsDragAndDropService=w,this.treeItemsTransfer=u.LocalSelectionTransfer.getInstance(),this._dropProgressManager=this._register(m.createInstance(i.InlineProgressManager,"dropIntoEditor",p)),this._postDropWidgetManager=this._register(m.createInstance(c.PostEditWidgetManager,"dropIntoEditor",p,e.dropWidgetVisibleCtx,{id:e.changeDropTypeCommandId,label:(0,n.localize)(1,null)})),this._register(p.onDropIntoEditor(E=>this.onDropIntoEditor(p,E.position,E.event)))}changeDropType(){this._postDropWidgetManager.tryShowSelector()}onDropIntoEditor(p,m,v){var b;return we(this,void 0,void 0,function*(){if(!v.dataTransfer||!p.hasModel())return;(b=this._currentOperation)===null||b===void 0||b.cancel(),p.focus(),p.setPosition(m);const w=(0,k.createCancelablePromise)(E=>we(this,void 0,void 0,function*(){const I=new s.EditorStateCancellationTokenSource(p,1,void 0,E);try{const M=yield this.extractDataTransferData(v);if(M.size===0||I.token.isCancellationRequested)return;const P=p.getModel();if(!P)return;const x=this._languageFeaturesService.documentOnDropEditProvider.ordered(P).filter(A=>A.dropMimeTypes?A.dropMimeTypes.some(N=>M.matches(N)):!0),T=yield this.getDropEdits(x,P,m,M,I);if(I.token.isCancellationRequested)return;if(T.length){const A=this.getInitialActiveEditIndex(P,T),N=p.getOption(35).showDropSelector==="afterDrop";yield this._postDropWidgetManager.applyEditAndShowIfNeeded([f.Range.fromPositions(m)],{activeEditIndex:A,allEdits:T},N,E)}}finally{I.dispose(),this._currentOperation===w&&(this._currentOperation=void 0)}}));this._dropProgressManager.showWhile(m,(0,n.localize)(2,null),w),this._currentOperation=w})}getDropEdits(p,m,v,b,w){return we(this,void 0,void 0,function*(){const E=yield(0,k.raceCancellation)(Promise.all(p.map(M=>we(this,void 0,void 0,function*(){try{const P=yield M.provideDocumentOnDropEdits(m,v,b,w.token);if(P)return Object.assign(Object.assign({},P),{providerId:M.id})}catch(P){console.error(P)}}))),w.token),I=(0,L.coalesce)(E??[]);return(0,r.sortEditsByYieldTo)(I)})}getInitialActiveEditIndex(p,m){const v=this._configService.getValue(e.defaultProviderConfig,{resource:p.uri});for(const[b,w]of Object.entries(v)){const E=m.findIndex(I=>w===I.providerId&&I.handledMimeType&&(0,y.matchesMimeType)(b,[I.handledMimeType]));if(E>=0)return E}return 0}extractDataTransferData(p){return we(this,void 0,void 0,function*(){if(!p.dataTransfer)return new y.VSDataTransfer;const m=(0,S.toExternalVSDataTransfer)(p.dataTransfer);if(this.treeItemsTransfer.hasData(g.DraggedTreeItemsIdentifier.prototype)){const v=this.treeItemsTransfer.getData(g.DraggedTreeItemsIdentifier.prototype);if(Array.isArray(v))for(const b of v){const w=yield this._treeViewsDragAndDropService.removeDragOperationTransfer(b.identifier);if(w)for(const[E,I]of w)m.replace(E,I)}}return m})}};e.DropIntoEditorController=d,d.ID="editor.contrib.dropIntoEditorController",e.DropIntoEditorController=d=o=ke([fe(1,h.IInstantiationService),fe(2,t.IConfigurationService),fe(3,_.ILanguageFeaturesService),fe(4,C.ITreeViewsDnDService)],d)}),define(ne[890],se([1,0,14,13,19,38,9,6,2,11,22,16,33,12,5,21,40,32,684,15,18,31,76,58,453]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){"use strict";var m;Object.defineProperty(e,"__esModule",{value:!0}),e.editorLinkedEditingBackground=e.LinkedEditingAction=e.LinkedEditingContribution=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=void 0,e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=new c.RawContextKey("LinkedEditingInputVisible",!1);const v="linked-editing-decoration";let b=m=class extends _.Disposable{static get(P){return P.getContribution(m.ID)}constructor(P,x,T,A,N){super(),this.languageConfigurationService=A,this._syncRangesToken=0,this._localToDispose=this._register(new _.DisposableStore),this._editor=P,this._providers=T.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(x),this._debounceInformation=N.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new _.DisposableStore),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequest=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(F=>{(F.hasChanged(68)||F.hasChanged(91))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(P){const x=this._editor.getModel(),T=x!==null&&(this._editor.getOption(68)||this._editor.getOption(91))&&this._providers.has(x);if(T===this._enabled&&!P||(this._enabled=T,this.clearRanges(),this._localToDispose.clear(),!T||x===null))return;this._localToDispose.add(f.Event.runAndSubscribe(x.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(x.getLanguageId()).getWordDefinition()}));const A=new k.Delayer(this._debounceInformation.get(x)),N=()=>{var W;this._rangeUpdateTriggerPromise=A.trigger(()=>this.updateRanges(),(W=this._debounceDuration)!==null&&W!==void 0?W:this._debounceInformation.get(x))},F=new k.Delayer(0),O=W=>{this._rangeSyncTriggerPromise=F.trigger(()=>this._syncRanges(W))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{N()})),this._localToDispose.add(this._editor.onDidChangeModelContent(W=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const U=this._currentDecorations.getRange(0);if(U&&W.changes.every(j=>U.intersectRanges(j.range))){O(this._syncRangesToken);return}}N()})),this._localToDispose.add({dispose:()=>{A.dispose(),F.dispose()}}),this.updateRanges()}_syncRanges(P){if(!this._editor.hasModel()||P!==this._syncRangesToken||this._currentDecorations.length===0)return;const x=this._editor.getModel(),T=this._currentDecorations.getRange(0);if(!T||T.startLineNumber!==T.endLineNumber)return this.clearRanges();const A=x.getValueInRange(T);if(this._currentWordPattern){const F=A.match(this._currentWordPattern);if((F?F[0].length:0)!==A.length)return this.clearRanges()}const N=[];for(let F=1,O=this._currentDecorations.length;F1){this.clearRanges();return}const T=this._editor.getModel(),A=T.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===A){if(x.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const F=this._currentDecorations.getRange(0);if(F&&F.containsPosition(x))return}}this.clearRanges(),this._currentRequestPosition=x,this._currentRequestModelVersion=A;const N=(0,k.createCancelablePromise)(F=>we(this,void 0,void 0,function*(){try{const O=new p.StopWatch(!1),W=yield I(this._providers,T,x,F);if(this._debounceInformation.update(T,O.elapsed()),N!==this._currentRequest||(this._currentRequest=null,A!==T.getVersionId()))return;let U=[];W?.ranges&&(U=W.ranges),this._currentWordPattern=W?.wordPattern||this._languageWordPattern;let j=!1;for(let K=0,G=U.length;K({range:K,options:m.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(R),this._syncRangesToken++}catch(O){(0,S.isCancellationError)(O)||(0,S.onUnexpectedError)(O),(this._currentRequest===N||!this._currentRequest)&&this.clearRanges()}}));return this._currentRequest=N,N})}};e.LinkedEditingContribution=b,b.ID="editor.contrib.linkedEditing",b.DECORATION=u.ModelDecorationOptions.register({description:"linked-editing",stickiness:0,className:v}),e.LinkedEditingContribution=b=m=ke([fe(1,c.IContextKeyService),fe(2,o.ILanguageFeaturesService),fe(3,h.ILanguageConfigurationService),fe(4,l.ILanguageFeatureDebounceService)],b);class w extends s.EditorAction{constructor(){super({id:"editor.action.linkedEditing",label:r.localize(0,null),alias:"Start Linked Editing",precondition:c.ContextKeyExpr.and(a.EditorContextKeys.writable,a.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:3132,weight:100}})}runCommand(P,x){const T=P.get(i.ICodeEditorService),[A,N]=Array.isArray(x)&&x||[void 0,void 0];return C.URI.isUri(A)&&n.Position.isIPosition(N)?T.openCodeEditor({resource:A},T.getActiveCodeEditor()).then(F=>{F&&(F.setPosition(N),F.invokeWithinContext(O=>(this.reportTelemetry(O,F),this.run(O,F))))},S.onUnexpectedError):super.runCommand(P,x)}run(P,x){const T=b.get(x);return T?Promise.resolve(T.updateRanges(!0)):Promise.resolve()}}e.LinkedEditingAction=w;const E=s.EditorCommand.bindToContribution(b.get);(0,s.registerEditorCommand)(new E({id:"cancelLinkedEditingInput",precondition:e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,handler:M=>M.clearRanges(),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,weight:100+99,primary:9,secondary:[1033]}}));function I(M,P,x,T){const A=M.ordered(P);return(0,k.first)(A.map(N=>()=>we(this,void 0,void 0,function*(){try{return yield N.provideLinkedEditingRanges(P,x,T)}catch(F){(0,S.onUnexpectedExternalError)(F);return}})),N=>!!N&&L.isNonEmptyArray(N?.ranges))}e.editorLinkedEditingBackground=(0,d.registerColor)("editor.linkedEditingBackground",{dark:D.Color.fromHex("#f00").transparent(.3),light:D.Color.fromHex("#f00").transparent(.3),hcDark:D.Color.fromHex("#f00").transparent(.3),hcLight:D.Color.white},r.localize(1,null)),(0,s.registerModelAndPositionCommand)("_executeLinkedEditingProvider",(M,P,x)=>{const{linkedEditingRangeProvider:T}=M.get(o.ILanguageFeaturesService);return I(T,P,x,y.CancellationToken.None)}),(0,s.registerEditorContribution)(b.ID,b,1),(0,s.registerEditorAction)(w)}),define(ne[891],se([1,0,13,19,9,55,2,54,17,45,58,22,16,40,76,18,186,751,685,43,56,454]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.LinkDetector=void 0;let l=d=class extends S.Disposable{static get(E){return E.getContribution(d.ID)}constructor(E,I,M,P,x){super(),this.editor=E,this.openerService=I,this.notificationService=M,this.languageFeaturesService=P,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=x.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new L.RunOnceScheduler(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const T=this._register(new u.ClickLinkGesture(E));this._register(T.onMouseMoveOrRelevantKeyDown(([A,N])=>{this._onEditorMouseMove(A,N)})),this._register(T.onExecute(A=>{this.onEditorMouseUp(A)})),this._register(T.onCancel(A=>{this.cleanUpActiveLinkDecoration()})),this._register(E.onDidChangeConfiguration(A=>{A.hasChanged(69)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(E.onDidChangeModelContent(A=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(E.onDidChangeModel(A=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(E.onDidChangeModelLanguage(A=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(A=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}computeLinksNow(){return we(this,void 0,void 0,function*(){if(!this.editor.hasModel()||!this.editor.getOption(69))return;const E=this.editor.getModel();if(this.providers.has(E)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=(0,L.createCancelablePromise)(I=>(0,h.getLinks)(this.providers,E,I));try{const I=new C.StopWatch(!1);if(this.activeLinksList=yield this.computePromise,this.debounceInformation.update(E,I.elapsed()),E.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(I){(0,y.onUnexpectedError)(I)}finally{this.computePromise=null}}})}updateDecorations(E){const I=this.editor.getOption(76)==="altKey",M=[],P=Object.keys(this.currentOccurrences);for(const T of P){const A=this.currentOccurrences[T];M.push(A.decorationId)}const x=[];if(E)for(const T of E)x.push(m.decoration(T,I));this.editor.changeDecorations(T=>{const A=T.deltaDecorations(M,x);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let N=0,F=A.length;N{P.activate(x,M),this.activeLinkDecorationId=P.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const E=this.editor.getOption(76)==="altKey";if(this.activeLinkDecorationId){const I=this.currentOccurrences[this.activeLinkDecorationId];I&&this.editor.changeDecorations(M=>{I.deactivate(M,E)}),this.activeLinkDecorationId=null}}onEditorMouseUp(E){if(!this.isEnabled(E))return;const I=this.getLinkOccurrence(E.target.position);I&&this.openLinkOccurrence(I,E.hasSideBySideModifier,!0)}openLinkOccurrence(E,I,M=!1){if(!this.openerService)return;const{link:P}=E;P.resolve(k.CancellationToken.None).then(x=>{if(typeof x=="string"&&this.editor.hasModel()){const T=this.editor.getModel().uri;if(T.scheme===f.Schemas.file&&x.startsWith(`${f.Schemas.file}:`)){const A=s.URI.parse(x);if(A.scheme===f.Schemas.file){const N=g.originalFSPath(A);let F=null;N.startsWith("/./")?F=`.${N.substr(1)}`:N.startsWith("//./")&&(F=`.${N.substr(2)}`),F&&(x=g.joinPath(T,F))}}}return this.openerService.open(x,{openToSide:I,fromUserGesture:M,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},x=>{const T=x instanceof Error?x.message:x;T==="invalid"?this.notificationService.warn(r.localize(0,null,P.url.toString())):T==="missing"?this.notificationService.warn(r.localize(1,null)):(0,y.onUnexpectedError)(x)})}getLinkOccurrence(E){if(!this.editor.hasModel()||!E)return null;const I=this.editor.getModel().getDecorationsInRange({startLineNumber:E.lineNumber,startColumn:E.column,endLineNumber:E.lineNumber,endColumn:E.column},0,!0);for(const M of I){const P=this.currentOccurrences[M.id];if(P)return P}return null}isEnabled(E,I){return!!(E.target.type===6&&(E.hasTriggerModifier||I&&I.keyCodeIsTriggerKey))}stop(){var E;this.computeLinks.cancel(),this.activeLinksList&&((E=this.activeLinksList)===null||E===void 0||E.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}};e.LinkDetector=l,l.ID="editor.linkDetector",e.LinkDetector=l=d=ke([fe(1,o.IOpenerService),fe(2,c.INotificationService),fe(3,a.ILanguageFeaturesService),fe(4,t.ILanguageFeatureDebounceService)],l);const p={general:n.ModelDecorationOptions.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:n.ModelDecorationOptions.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class m{static decoration(E,I){return{range:E.range,options:m._getOptions(E,I,!1)}}static _getOptions(E,I,M){const P=Object.assign({},M?p.active:p.general);return P.hoverMessage=v(E,I),P}constructor(E,I){this.link=E,this.decorationId=I}activate(E,I){E.changeDecorationOptions(this.decorationId,m._getOptions(this.link,I,!0))}deactivate(E,I){E.changeDecorationOptions(this.decorationId,m._getOptions(this.link,I,!1))}}function v(w,E){const I=w.url&&/^command:/i.test(w.url.toString()),M=w.tooltip?w.tooltip:I?r.localize(2,null):r.localize(3,null),P=E?_.isMacintosh?r.localize(4,null):r.localize(5,null):_.isMacintosh?r.localize(6,null):r.localize(7,null);if(w.url){let x="";if(/^command:/i.test(w.url.toString())){const A=w.url.toString().match(/^command:([^?#]+)/);if(A){const N=A[1];x=r.localize(8,null,N)}}return new D.MarkdownString("",!0).appendLink(w.url.toString(!0).replace(/ /g,"%20"),M,x).appendMarkdown(` (${P})`)}else return new D.MarkdownString().appendText(`${M} (${P})`)}class b extends i.EditorAction{constructor(){super({id:"editor.action.openLink",label:r.localize(9,null),alias:"Open Link",precondition:void 0})}run(E,I){const M=l.get(I);if(!M||!I.hasModel())return;const P=I.getSelections();for(const x of P){const T=M.getLinkOccurrence(x.getEndPosition());T&&M.openLinkOccurrence(T,!1)}}}(0,i.registerEditorContribution)(l.ID,l,1),(0,i.registerEditorAction)(b)}),define(ne[892],se([1,0,2,18,188,13,255,293,292,32,9,299,46]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyModelProvider=void 0;var n;(function(d){d.OUTLINE_MODEL="outlineModel",d.FOLDING_PROVIDER_MODEL="foldingProviderModel",d.INDENTATION_MODEL="indentationModel"})(n||(n={}));var t;(function(d){d[d.VALID=0]="VALID",d[d.INVALID=1]="INVALID",d[d.CANCELED=2]="CANCELED"})(t||(t={}));let a=class extends L.Disposable{constructor(l,p,m,v){super(),this._editor=l,this._languageConfigurationService=p,this._languageFeaturesService=m,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new D.Delayer(300)),this._updateOperation=this._register(new L.DisposableStore);const b=new h(m),w=new o(this._editor,m),E=new c(this._editor,p);switch(v){case n.OUTLINE_MODEL:this._modelProviders.push(b),this._modelProviders.push(w),this._modelProviders.push(E);break;case n.FOLDING_PROVIDER_MODEL:this._modelProviders.push(w),this._modelProviders.push(E);break;case n.INDENTATION_MODEL:this._modelProviders.push(E);break}}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}update(l,p,m){return we(this,void 0,void 0,function*(){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),yield this._updateScheduler.trigger(()=>we(this,void 0,void 0,function*(){for(const v of this._modelProviders){const{statusPromise:b,modelPromise:w}=v.computeStickyModel(l,p,m);this._modelPromise=w;const E=yield b;if(this._modelPromise!==w)return null;switch(E){case t.CANCELED:return this._updateOperation.clear(),null;case t.VALID:return v.stickyModel}}return null})).catch(v=>((0,C.onUnexpectedError)(v),null))})}};e.StickyModelProvider=a,e.StickyModelProvider=a=ke([fe(1,g.ILanguageConfigurationService),fe(2,k.ILanguageFeaturesService)],a);class u{constructor(){this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,t.INVALID}computeStickyModel(l,p,m){if(m.isCancellationRequested||!this.isProviderValid(l))return{statusPromise:this._invalid(),modelPromise:null};const v=(0,D.createCancelablePromise)(b=>this.createModelFromProvider(l,p,b));return{statusPromise:v.then(b=>this.isModelValid(b)?m.isCancellationRequested?t.CANCELED:(this._stickyModel=this.createStickyModel(l,p,m,b),t.VALID):this._invalid()).then(void 0,b=>((0,C.onUnexpectedError)(b),t.CANCELED)),modelPromise:v}}isModelValid(l){return!0}isProviderValid(l){return!0}}let h=class extends u{constructor(l){super(),this._languageFeaturesService=l}createModelFromProvider(l,p,m){return y.OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,l,m)}createStickyModel(l,p,m,v){var b;const{stickyOutlineElement:w,providerID:E}=this._stickyModelFromOutlineModel(v,(b=this._stickyModel)===null||b===void 0?void 0:b.outlineProviderId);return new s.StickyModel(l.uri,p,w,E)}isModelValid(l){return l&&l.children.size>0}_stickyModelFromOutlineModel(l,p){let m;if(i.Iterable.first(l.children.values())instanceof y.OutlineGroup){const E=i.Iterable.find(l.children.values(),I=>I.id===p);if(E)m=E.children;else{let I="",M=-1,P;for(const[x,T]of l.children.entries()){const A=this._findSumOfRangesOfGroup(T);A>M&&(P=T,M=A,I=T.id)}p=I,m=P.children}}else m=l.children;const v=[],b=Array.from(m.values()).sort((E,I)=>{const M=new s.StickyRange(E.symbol.range.startLineNumber,E.symbol.range.endLineNumber),P=new s.StickyRange(I.symbol.range.startLineNumber,I.symbol.range.endLineNumber);return this._comparator(M,P)});for(const E of b)v.push(this._stickyModelFromOutlineElement(E,E.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new s.StickyElement(void 0,v,void 0),providerID:p}}_stickyModelFromOutlineElement(l,p){const m=[];for(const b of l.children.values())if(b.symbol.selectionRange.startLineNumber!==b.symbol.range.endLineNumber)if(b.symbol.selectionRange.startLineNumber!==p)m.push(this._stickyModelFromOutlineElement(b,b.symbol.selectionRange.startLineNumber));else for(const w of b.children.values())m.push(this._stickyModelFromOutlineElement(w,b.symbol.selectionRange.startLineNumber));m.sort((b,w)=>this._comparator(b.range,w.range));const v=new s.StickyRange(l.symbol.selectionRange.startLineNumber,l.symbol.range.endLineNumber);return new s.StickyElement(v,m,void 0)}_comparator(l,p){return l.startLineNumber!==p.startLineNumber?l.startLineNumber-p.startLineNumber:p.endLineNumber-l.endLineNumber}_findSumOfRangesOfGroup(l){let p=0;for(const m of l.children.values())p+=this._findSumOfRangesOfGroup(m);return l instanceof y.OutlineElement?p+l.symbol.range.endLineNumber-l.symbol.selectionRange.startLineNumber:p}};h=ke([fe(0,k.ILanguageFeaturesService)],h);class r extends u{constructor(l){super(),this._foldingLimitReporter=new S.RangesLimitReporter(l)}createStickyModel(l,p,m,v){const b=this._fromFoldingRegions(v);return new s.StickyModel(l.uri,p,b,void 0)}isModelValid(l){return l!==null}_fromFoldingRegions(l){const p=l.length,m=[],v=new s.StickyElement(void 0,[],void 0);for(let b=0;b0}createModelFromProvider(l,p,m){const v=S.FoldingController.getFoldingRangeProviders(this._languageFeaturesService,l);return new f.SyntaxRangeProvider(l,v,()=>this.createModelFromProvider(l,p,m),this._foldingLimitReporter,void 0).compute(m)}};o=ke([fe(1,k.ILanguageFeaturesService)],o)}),define(ne[893],se([1,0,2,18,19,13,14,6,32,892]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyLineCandidateProvider=e.StickyLineCandidate=void 0;class C{constructor(n,t,a){this.startLineNumber=n,this.endLineNumber=t,this.nestingDepth=a}}e.StickyLineCandidate=C;let s=class extends L.Disposable{constructor(n,t,a){super(),this._languageFeaturesService=t,this._languageConfigurationService=a,this._onDidChangeStickyScroll=this._register(new f.Emitter),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._options=null,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=n,this._sessionStore=this._register(new L.DisposableStore),this._updateSoon=this._register(new D.RunOnceScheduler(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(113)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._stickyModelProvider=null,this._sessionStore.clear(),this._options=this._editor.getOption(113),this._options.enabled&&(this._stickyModelProvider=this._sessionStore.add(new g.StickyModelProvider(this._editor,this._languageConfigurationService,this._languageFeaturesService,this._options.defaultModel)),this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this.update())}getVersionId(){var n;return(n=this._model)===null||n===void 0?void 0:n.version}update(){var n;return we(this,void 0,void 0,function*(){(n=this._cts)===null||n===void 0||n.dispose(!0),this._cts=new y.CancellationTokenSource,yield this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()})}updateStickyModel(n){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!this._stickyModelProvider){this._model=null;return}const t=this._editor.getModel(),a=t.getVersionId(),u=yield this._stickyModelProvider.update(t,a,n);n.isCancellationRequested||(this._model=u)})}updateIndex(n){return n===-1?n=0:n<0&&(n=-n-2),n}getCandidateStickyLinesIntersectingFromStickyModel(n,t,a,u,h){if(t.children.length===0)return;let r=h;const c=[];for(let l=0;ll-p)),d=this.updateIndex((0,S.binarySearch)(c,n.startLineNumber+u,(l,p)=>l-p));for(let l=o;l<=d;l++){const p=t.children[l];if(!p)return;if(p.range){const m=p.range.startLineNumber,v=p.range.endLineNumber;n.startLineNumber<=v+1&&m-1<=n.endLineNumber&&m!==r&&(r=m,a.push(new C(m,v-1,u+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(n,p,a,u+1,m))}else this.getCandidateStickyLinesIntersectingFromStickyModel(n,p,a,u,h)}}getCandidateStickyLinesIntersecting(n){var t,a;if(!(!((t=this._model)===null||t===void 0)&&t.element))return[];let u=[];this.getCandidateStickyLinesIntersectingFromStickyModel(n,this._model.element,u,0,-1);const h=(a=this._editor._getViewModel())===null||a===void 0?void 0:a.getHiddenAreas();if(h)for(const r of h)u=u.filter(c=>!(c.startLineNumber>=r.startLineNumber&&c.endLineNumber<=r.endLineNumber+1));return u}};e.StickyLineCandidateProvider=s,e.StickyLineCandidateProvider=s=ke([fe(1,k.ILanguageFeaturesService),fe(2,_.ILanguageConfigurationService)],s)}),define(ne[894],se([1,0,7,89,2,26,251,162,12,93,127,95,255,366,291,461]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyScrollWidget=e.StickyScrollWidgetState=void 0;class a{constructor(l,p,m,v=null){this.startLineNumbers=l,this.endLineNumbers=p,this.lastLineRelativePosition=m,this.showEndForLine=v}}e.StickyScrollWidgetState=a;const u=(0,k.createTrustedTypesPolicy)("stickyScrollViewLayer",{createHTML:d=>d}),h="data-sticky-line-index";class r extends y.Disposable{constructor(l){super(),this._editor=l,this._foldingIconStore=new y.DisposableStore,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(65),this._stickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",l instanceof f.EmbeddedCodeEditorWidget),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const p=()=>{this._linesDomNode.style.left=this._editor.getOption(113).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(m=>{m.hasChanged(113)&&p(),m.hasChanged(65)&&(this._lineHeight=this._editor.getOption(65))})),this._register(this._editor.onDidScrollChange(m=>{m.scrollLeftChanged&&p(),m.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{p(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),p(),this._register(this._editor.onDidLayoutChange(m=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getCurrentLines(){return this._lineNumbers}setState(l){if(this._clearStickyWidget(),!l||!this._editor._getViewModel())return;if(l.startLineNumbers.length*this._lineHeight+l.lastLineRelativePosition>0){this._lastLineRelativePosition=l.lastLineRelativePosition;const m=[...l.startLineNumbers];l.showEndForLine!==null&&(m[l.showEndForLine]=l.endLineNumbers[l.showEndForLine]),this._lineNumbers=m}else this._lastLineRelativePosition=0,this._lineNumbers=[];this._renderRootNode()}_updateWidgetWidth(){const l=this._editor.getLayoutInfo(),m=this._editor.getOption(71).side==="left"?l.contentLeft-l.minimap.minimapCanvasOuterWidth:l.contentLeft;this._lineNumbersDomNode.style.width=`${m}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-l.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${l.width-l.minimap.minimapCanvasOuterWidth-l.verticalScrollbarWidth}px`}_clearStickyWidget(){this._stickyLines=[],this._foldingIconStore.clear(),L.clearNode(this._lineNumbersDomNode),L.clearNode(this._linesDomNode),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(l){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${l?.5:0}s`)}_setFoldingIconsVisibility(l){for(const p of this._stickyLines){const m=p.foldingIcon;m&&m.setVisible(l?!0:m.isCollapsed)}}_renderRootNode(){var l;return we(this,void 0,void 0,function*(){const p=yield(l=i.FoldingController.get(this._editor))===null||l===void 0?void 0:l.getFoldingModel(),m=this._editor.getLayoutInfo();for(const[w,E]of this._lineNumbers.entries()){const I=this._renderChildNode(w,E,m,p);this._linesDomNode.appendChild(I.lineDomNode),this._lineNumbersDomNode.appendChild(I.lineNumberDomNode),this._stickyLines.push(I)}p&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const v=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;if(v===0){this._clearStickyWidget();return}this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${v}px`,this._linesDomNodeScrollable.style.height=`${v}px`,this._rootDomNode.style.height=`${v}px`,this._editor.getOption(71).side==="left"?this._rootDomNode.style.marginLeft=m.minimap.minimapCanvasOuterWidth+"px":this._rootDomNode.style.marginLeft="0px",this._updateMinContentWidth(),this._editor.layoutOverlayWidget(this)})}_setFoldingHoverListeners(){this._editor.getOption(108)==="mouseover"&&(this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_ENTER,p=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(l,p,m,v){const b=this._editor._getViewModel(),w=b.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(p,1)).lineNumber,E=b.getViewLineRenderingData(w),I=this._editor.getOption(71).side,M=this._editor.getOption(66);let P;try{P=C.LineDecoration.filter(E.inlineDecorations,w,E.minColumn,E.maxColumn)}catch{P=[]}const x=new s.RenderLineInput(!0,!0,E.content,E.continuesWithWrappedLine,E.isBasicASCII,E.containsRTL,0,E.tokens,P,E.tabSize,E.startVisibleColumn,1,1,1,500,"none",!0,!0,null),T=new g.StringBuilder(2e3),A=(0,s.renderViewLine)(x,T);let N;u?N=u.createHTML(T.build()):N=T.build();const F=document.createElement("span");F.className="sticky-line-content",F.classList.add(`stickyLine${p}`),F.style.lineHeight=`${this._lineHeight}px`,F.innerHTML=N;const O=document.createElement("span");O.className="sticky-line-number",O.style.lineHeight=`${this._lineHeight}px`;const W=I==="left"?m.contentLeft-m.minimap.minimapCanvasOuterWidth:m.contentLeft;O.style.width=`${W}px`;const U=document.createElement("span");M.renderType===1||M.renderType===3&&p%10===0?U.innerText=p.toString():M.renderType===2&&(U.innerText=Math.abs(p-this._editor.getPosition().lineNumber).toString()),U.className="sticky-line-number-inner",U.style.lineHeight=`${this._lineHeight}px`,U.style.width=`${m.lineNumbersWidth}px`,U.style.float="left",I==="left"?U.style.paddingLeft=`${m.lineNumbersLeft-m.minimap.minimapCanvasOuterWidth}px`:I==="right"&&(U.style.paddingLeft=`${m.lineNumbersLeft}px`),O.appendChild(U);const j=this._renderFoldingIconForLine(O,v,l,p);this._editor.applyFontInfo(F),this._editor.applyFontInfo(U),F.setAttribute("role","listitem"),F.setAttribute(h,String(l)),F.tabIndex=0,O.style.lineHeight=`${this._lineHeight}px`,F.style.lineHeight=`${this._lineHeight}px`,O.style.height=`${this._lineHeight}px`,F.style.height=`${this._lineHeight}px`;const R=l===this._lineNumbers.length-1,K="0",G="1";F.style.zIndex=R?K:G,O.style.zIndex=R?K:G;const Z=`${l*this._lineHeight+this._lastLineRelativePosition+(j?.isCollapsed?1:0)}px`,J=`${l*this._lineHeight}px`;return F.style.top=R?Z:J,O.style.top=R?Z:J,new c(p,F,O,j,A.characterMapping)}_renderFoldingIconForLine(l,p,m,v){const b=this._editor.getOption(108);if(!p||b==="never")return;const w=p.regions,E=w.findRange(v),I=w.getStartLineNumber(E);if(!(v===I))return;const P=w.isCollapsed(E),x=new o(P,this._lineHeight);return l.append(x.domNode),x.setVisible(this._isOnGlyphMargin?!0:P||b==="always"),this._foldingIconStore.add(L.addDisposableListener(x.domNode,L.EventType.CLICK,()=>{(0,t.toggleCollapseState)(p,Number.MAX_VALUE,[v]),x.isCollapsed=!P;const T=(P?this._editor.getTopForLineNumber(I):this._editor.getTopForLineNumber(w.getEndLineNumber(E)))-this._lineHeight*m+1;this._editor.setScrollTop(T)})),x}_updateMinContentWidth(){this._minContentWidthInPx=0;for(const l of this._stickyLines)l.lineDomNode.scrollWidth>this._minContentWidthInPx&&(this._minContentWidthInPx=l.lineDomNode.scrollWidth);this._minContentWidthInPx+=this._editor.getLayoutInfo().verticalScrollbarWidth}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(l){0<=l&&l0)return null;const p=this._getRenderedStickyLineFromChildDomNode(l);if(!p)return null;const m=(0,S.getColumnOfNodeOffset)(p.characterMapping,l,0);return new _.Position(p.lineNumber,m)}getLineNumberFromChildDomNode(l){var p,m;return(m=(p=this._getRenderedStickyLineFromChildDomNode(l))===null||p===void 0?void 0:p.lineNumber)!==null&&m!==void 0?m:null}_getRenderedStickyLineFromChildDomNode(l){const p=this.getStickyLineIndexFromChildDomNode(l);return p===null||p<0||p>=this._stickyLines.length?null:this._stickyLines[p]}getStickyLineIndexFromChildDomNode(l){for(;l&&l!==this._rootDomNode;){const p=l.getAttribute(h);if(p)return parseInt(p,10);l=l.parentElement}return null}}e.StickyScrollWidget=r;class c{constructor(l,p,m,v,b){this.lineNumber=l,this.lineDomNode=p,this.lineNumberDomNode=m,this.foldingIcon=v,this.characterMapping=b}}class o{constructor(l,p){this.isCollapsed=l,this.dimension=p,this.domNode=document.createElement("div"),this.domNode.style.width=`${p}px`,this.domNode.style.height=`${p}px`,this.domNode.className=D.ThemeIcon.asClassName(l?n.foldingCollapsedIcon:n.foldingExpandedIcon)}setVisible(l){this.domNode.style.cursor=l?"pointer":"default",this.domNode.style.opacity=l?"1":"0"}}}),define(ne[895],se([1,0,7,114,13,9,6,2,141,11,162,866,702,15,8,87,31,88,23,223,135,344,861,105,49,172,462,249]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){"use strict";var v;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestContentWidget=e.SuggestWidget=e.editorSuggestWidgetSelectedBackground=void 0,(0,u.registerColor)("editorSuggestWidget.background",{dark:u.editorWidgetBackground,light:u.editorWidgetBackground,hcDark:u.editorWidgetBackground,hcLight:u.editorWidgetBackground},i.localize(0,null)),(0,u.registerColor)("editorSuggestWidget.border",{dark:u.editorWidgetBorder,light:u.editorWidgetBorder,hcDark:u.editorWidgetBorder,hcLight:u.editorWidgetBorder},i.localize(1,null));const b=(0,u.registerColor)("editorSuggestWidget.foreground",{dark:u.editorForeground,light:u.editorForeground,hcDark:u.editorForeground,hcLight:u.editorForeground},i.localize(2,null));(0,u.registerColor)("editorSuggestWidget.selectedForeground",{dark:u.quickInputListFocusForeground,light:u.quickInputListFocusForeground,hcDark:u.quickInputListFocusForeground,hcLight:u.quickInputListFocusForeground},i.localize(3,null)),(0,u.registerColor)("editorSuggestWidget.selectedIconForeground",{dark:u.quickInputListFocusIconForeground,light:u.quickInputListFocusIconForeground,hcDark:u.quickInputListFocusIconForeground,hcLight:u.quickInputListFocusIconForeground},i.localize(4,null)),e.editorSuggestWidgetSelectedBackground=(0,u.registerColor)("editorSuggestWidget.selectedBackground",{dark:u.quickInputListFocusBackground,light:u.quickInputListFocusBackground,hcDark:u.quickInputListFocusBackground,hcLight:u.quickInputListFocusBackground},i.localize(5,null)),(0,u.registerColor)("editorSuggestWidget.highlightForeground",{dark:u.listHighlightForeground,light:u.listHighlightForeground,hcDark:u.listHighlightForeground,hcLight:u.listHighlightForeground},i.localize(6,null)),(0,u.registerColor)("editorSuggestWidget.focusHighlightForeground",{dark:u.listFocusHighlightForeground,light:u.listFocusHighlightForeground,hcDark:u.listFocusHighlightForeground,hcLight:u.listFocusHighlightForeground},i.localize(7,null)),(0,u.registerColor)("editorSuggestWidgetStatus.foreground",{dark:(0,u.transparent)(b,.5),light:(0,u.transparent)(b,.5),hcDark:(0,u.transparent)(b,.5),hcLight:(0,u.transparent)(b,.5)},i.localize(8,null));class w{constructor(P,x){this._service=P,this._key=`suggestWidget.size/${x.getEditorType()}/${x instanceof C.EmbeddedCodeEditorWidget}`}restore(){var P;const x=(P=this._service.get(this._key,0))!==null&&P!==void 0?P:"";try{const T=JSON.parse(x);if(L.Dimension.is(T))return L.Dimension.lift(T)}catch{}}store(P){this._service.store(this._key,JSON.stringify(P),0,1)}reset(){this._service.remove(this._key,0)}}let E=v=class{constructor(P,x,T,A,N){this.editor=P,this._storageService=x,this._state=0,this._isAuto=!1,this._pendingLayout=new f.MutableDisposable,this._pendingShowDetails=new f.MutableDisposable,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new y.TimeoutTimer,this._disposables=new f.DisposableStore,this._onDidSelect=new S.PauseableEmitter,this._onDidFocus=new S.PauseableEmitter,this._onDidHide=new S.Emitter,this._onDidShow=new S.Emitter,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new S.Emitter,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new c.ResizableHTMLElement,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new I(this,P),this._persistedSize=new w(x,P);class F{constructor(G,Z,J=!1,X=!1){this.persistedSize=G,this.currentSize=Z,this.persistHeight=J,this.persistWidth=X}}let O;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),O=new F(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(K=>{var G,Z,J,X;if(this._resize(K.dimension.width,K.dimension.height),O&&(O.persistHeight=O.persistHeight||!!K.north||!!K.south,O.persistWidth=O.persistWidth||!!K.east||!!K.west),!!K.done){if(O){const{itemHeight:H,defaultSize:B}=this.getLayoutInfo(),V=Math.round(H/2);let{width:Y,height:ie}=this.element.size;(!O.persistHeight||Math.abs(O.currentSize.height-ie)<=V)&&(ie=(Z=(G=O.persistedSize)===null||G===void 0?void 0:G.height)!==null&&Z!==void 0?Z:B.height),(!O.persistWidth||Math.abs(O.currentSize.width-Y)<=V)&&(Y=(X=(J=O.persistedSize)===null||J===void 0?void 0:J.width)!==null&&X!==void 0?X:B.width),this._persistedSize.store(new L.Dimension(Y,ie))}this._contentWidget.unlockPreference(),O=void 0}})),this._messageElement=L.append(this.element.domNode,L.$(".message")),this._listElement=L.append(this.element.domNode,L.$(".tree"));const W=N.createInstance(d.SuggestDetailsWidget,this.editor);W.onDidClose(this.toggleDetails,this,this._disposables),this._details=new d.SuggestDetailsOverlay(W,this.editor);const U=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(116).showIcons);U();const j=N.createInstance(l.ItemRenderer,this.editor);this._disposables.add(j),this._disposables.add(j.onDidToggleDetails(()=>this.toggleDetails())),this._list=new k.List("SuggestWidget",this._listElement,{getHeight:K=>this.getLayoutInfo().itemHeight,getTemplateId:K=>"suggestion"},[j],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>i.localize(11,null),getWidgetRole:()=>"listbox",getAriaLabel:K=>{let G=K.textLabel;if(typeof K.completion.label!="string"){const{detail:H,description:B}=K.completion.label;H&&B?G=i.localize(12,null,G,H,B):H?G=i.localize(13,null,G,H):B&&(G=i.localize(14,null,G,B))}if(!K.isResolved||!this._isDetailsVisible())return G;const{documentation:Z,detail:J}=K.completion,X=g.format("{0}{1}",J||"",Z?typeof Z=="string"?Z:Z.value:"");return i.localize(15,null,G,X)}}}),this._list.style((0,p.getListStyles)({listInactiveFocusBackground:e.editorSuggestWidgetSelectedBackground,listInactiveFocusOutline:u.activeContrastBorder})),this._status=N.createInstance(s.SuggestWidgetStatus,this.element.domNode,o.suggestWidgetStatusbarMenu);const R=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(116).showStatusBar);R(),this._disposables.add(A.onDidColorThemeChange(K=>this._onThemeChange(K))),this._onThemeChange(A.getColorTheme()),this._disposables.add(this._list.onMouseDown(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onTap(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onDidChangeSelection(K=>this._onListSelection(K))),this._disposables.add(this._list.onDidChangeFocus(K=>this._onListFocus(K))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(K=>{K.hasChanged(116)&&(R(),U())})),this._ctxSuggestWidgetVisible=o.Context.Visible.bindTo(T),this._ctxSuggestWidgetDetailsVisible=o.Context.DetailsVisible.bindTo(T),this._ctxSuggestWidgetMultipleSuggestions=o.Context.MultipleSuggestions.bindTo(T),this._ctxSuggestWidgetHasFocusedSuggestion=o.Context.HasFocusedSuggestion.bindTo(T),this._disposables.add(L.addStandardDisposableListener(this._details.widget.domNode,"keydown",K=>{this._onDetailsKeydown.fire(K)})),this._disposables.add(this.editor.onMouseDown(K=>this._onEditorMouseDown(K)))}dispose(){var P;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(P=this._loadingTimeout)===null||P===void 0||P.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(P){this._details.widget.domNode.contains(P.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(P.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(P){typeof P.element>"u"||typeof P.index>"u"||(P.browserEvent.preventDefault(),P.browserEvent.stopPropagation(),this._select(P.element,P.index))}_onListSelection(P){P.elements.length&&this._select(P.elements[0],P.indexes[0])}_select(P,x){const T=this._completionModel;T&&(this._onDidSelect.fire({item:P,index:x,model:T}),this.editor.focus())}_onThemeChange(P){this._details.widget.borderWidth=(0,h.isHighContrast)(P.type)?2:1}_onListFocus(P){var x;if(this._ignoreFocusEvents)return;if(!P.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const T=P.elements[0],A=P.indexes[0];T!==this._focusedItem&&((x=this._currentSuggestionDetails)===null||x===void 0||x.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=T,this._list.reveal(A),this._currentSuggestionDetails=(0,y.createCancelablePromise)(N=>we(this,void 0,void 0,function*(){const F=(0,y.disposableTimeout)(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),O=N.onCancellationRequested(()=>F.dispose()),W=yield T.resolve(N);return F.dispose(),O.dispose(),W})),this._currentSuggestionDetails.then(()=>{A>=this._list.length||T!==this._list.element(A)||(this._ignoreFocusEvents=!0,this._list.splice(A,1,[T]),this._list.setFocus([A]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:(0,l.getAriaId)(A)}))}).catch(D.onUnexpectedError)),this._onDidFocus.fire({item:T,index:A,model:this._completionModel})}_setState(P){if(this._state!==P)switch(this._state=P,this.element.domNode.classList.toggle("frozen",P===4),this.element.domNode.classList.remove("message"),P){case 0:L.hide(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=v.LOADING_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,m.status)(v.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=v.NO_SUGGESTIONS_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,m.status)(v.NO_SUGGESTIONS_MESSAGE);break;case 3:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 4:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 5:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet(()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)},100)}showTriggered(P,x){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!P,this._isAuto||(this._loadingTimeout=(0,y.disposableTimeout)(()=>this._setState(1),x)))}showSuggestions(P,x,T,A,N){var F,O;if(this._contentWidget.setPosition(this.editor.getPosition()),(F=this._loadingTimeout)===null||F===void 0||F.dispose(),(O=this._currentSuggestionDetails)===null||O===void 0||O.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==P&&(this._completionModel=P),T&&this._state!==2&&this._state!==0){this._setState(4);return}const W=this._completionModel.items.length,U=W===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(W>1),U){this._setState(A?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(T?4:3),this._list.reveal(x,0),this._list.setFocus(N?[]:[x])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=L.runAtThisOrScheduleAtNextAnimationFrame(()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")})}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):this._state===3&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):((0,d.canExpandCompletionItem)(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(P){this._pendingShowDetails.value=L.runAtThisOrScheduleAtNextAnimationFrame(()=>{this._pendingShowDetails.clear(),this._details.show(),P?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._positionDetails(),this.editor.focus(),this.element.domNode.classList.add("shows-details")})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var P;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(P=this._loadingTimeout)===null||P===void 0||P.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const x=this._persistedSize.restore(),T=Math.ceil(this.getLayoutInfo().itemHeight*4.3);x&&x.heightU&&(W=U);const j=this._completionModel?this._completionModel.stats.pLabelLen*F.typicalHalfwidthCharacterWidth:W,R=F.statusBarHeight+this._list.contentHeight+F.borderHeight,K=F.itemHeight+F.statusBarHeight,G=L.getDomNodePagePosition(this.editor.getDomNode()),Z=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),J=G.top+Z.top+Z.height,X=Math.min(N.height-J-F.verticalPadding,R),H=G.top+Z.top-F.verticalPadding,B=Math.min(H,R);let V=Math.min(Math.max(B,X)+F.borderHeight,R);O===((x=this._cappedHeight)===null||x===void 0?void 0:x.capped)&&(O=this._cappedHeight.wanted),OV&&(O=V);const Y=150;O>X||this._forceRenderingAbove&&H>Y?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),V=B):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),V=X),this.element.preferredSize=new L.Dimension(j,F.defaultSize.height),this.element.maxSize=new L.Dimension(U,V),this.element.minSize=new L.Dimension(220,K),this._cappedHeight=O===R?{wanted:(A=(T=this._cappedHeight)===null||T===void 0?void 0:T.wanted)!==null&&A!==void 0?A:P.height,capped:O}:void 0}this._resize(W,O)}_resize(P,x){const{width:T,height:A}=this.element.maxSize;P=Math.min(T,P),x=Math.min(A,x);const{statusBarHeight:N}=this.getLayoutInfo();this._list.layout(x-N,P),this._listElement.style.height=`${x-N}px`,this.element.layout(x,P),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var P;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((P=this._contentWidget.getPosition())===null||P===void 0?void 0:P.preference[0])===2)}getLayoutInfo(){const P=this.editor.getOption(49),x=(0,_.clamp)(this.editor.getOption(118)||P.lineHeight,8,1e3),T=!this.editor.getOption(116).showStatusBar||this._state===2||this._state===1?0:x,A=this._details.widget.borderWidth,N=2*A;return{itemHeight:x,statusBarHeight:T,borderWidth:A,borderHeight:N,typicalHalfwidthCharacterWidth:P.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new L.Dimension(430,T+12*x+N)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(P){this._storageService.store("expandSuggestionDocs",P,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};e.SuggestWidget=E,E.LOADING_MESSAGE=i.localize(9,null),E.NO_SUGGESTIONS_MESSAGE=i.localize(10,null),e.SuggestWidget=E=v=ke([fe(1,a.IStorageService),fe(2,n.IContextKeyService),fe(3,r.IThemeService),fe(4,t.IInstantiationService)],E);class I{constructor(P,x){this._widget=P,this._editor=x,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return this._hidden||!this._position||!this._preference?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:P,width:x}=this._widget.element.size,{borderWidth:T,horizontalPadding:A}=this._widget.getLayoutInfo();return new L.Dimension(x+2*T+A,P+2*T)}afterRender(P){this._widget._afterRender(P)}setPreference(P){this._preferenceLocked||(this._preference=P)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(P){this._position=P}}e.SuggestContentWidget=I}),define(ne[368],se([1,0,48,40,29,711,31,23,466]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSelectionHighlightDecorationOptions=e.getHighlightDecorationOptions=void 0;const _=(0,S.registerColor)("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},D.localize(0,null),!0);(0,S.registerColor)("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},D.localize(1,null),!0),(0,S.registerColor)("editor.wordHighlightTextBackground",{light:_,dark:_,hcDark:_,hcLight:_},D.localize(2,null),!0);const g=(0,S.registerColor)("editor.wordHighlightBorder",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(3,null));(0,S.registerColor)("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(4,null)),(0,S.registerColor)("editor.wordHighlightTextBorder",{light:g,dark:g,hcDark:g,hcLight:g},D.localize(5,null));const C=(0,S.registerColor)("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},D.localize(6,null),!0),s=(0,S.registerColor)("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hcDark:"#C0A0C0CC",hcLight:"#C0A0C0CC"},D.localize(7,null),!0),i=(0,S.registerColor)("editorOverviewRuler.wordHighlightTextForeground",{dark:S.overviewRulerSelectionHighlightForeground,light:S.overviewRulerSelectionHighlightForeground,hcDark:S.overviewRulerSelectionHighlightForeground,hcLight:S.overviewRulerSelectionHighlightForeground},D.localize(8,null),!0),n=k.ModelDecorationOptions.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:(0,f.themeColorFromId)(s),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),t=k.ModelDecorationOptions.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:(0,f.themeColorFromId)(i),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),a=k.ModelDecorationOptions.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,f.themeColorFromId)(S.overviewRulerSelectionHighlightForeground),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),u=k.ModelDecorationOptions.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),h=k.ModelDecorationOptions.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:(0,f.themeColorFromId)(C),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}});function r(o){return o===y.DocumentHighlightKind.Write?n:o===y.DocumentHighlightKind.Text?t:h}e.getHighlightDecorationOptions=r;function c(o){return o?u:a}e.getSelectionHighlightDecorationOptions=c,(0,f.registerThemingParticipant)((o,d)=>{const l=o.getColor(S.editorSelectionHighlight);l&&d.addRule(`.monaco-editor .selectionHighlight { background-color: ${l.transparent(.5)}; }`)})}),define(ne[896],se([1,0,49,13,63,2,16,205,5,24,21,365,687,30,15,18,368,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),e.FocusPreviousCursor=e.FocusNextCursor=e.SelectionHighlighter=e.CompatChangeAll=e.SelectHighlightsAction=e.MoveSelectionToPreviousFindMatchAction=e.MoveSelectionToNextFindMatchAction=e.AddSelectionToPreviousFindMatchAction=e.AddSelectionToNextFindMatchAction=e.MultiCursorSelectionControllerAction=e.MultiCursorSelectionController=e.MultiCursorSession=e.MultiCursorSessionResult=e.InsertCursorBelow=e.InsertCursorAbove=void 0;function c(R,K){const G=K.filter(Z=>!R.find(J=>J.equals(Z)));if(G.length>=1){const Z=G.map(X=>`line ${X.viewState.position.lineNumber} column ${X.viewState.position.column}`).join(", "),J=G.length===1?i.localize(0,null,Z):i.localize(1,null,Z);(0,L.status)(J)}}class o extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorAbove",label:i.localize(2,null),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(3,null),order:2}})}run(K,G,Z){if(!G.hasModel())return;let J=!0;Z&&Z.logicalLine===!1&&(J=!1);const X=G._getViewModel();if(X.cursorConfig.readOnly)return;X.model.pushStackElement();const H=X.getCursorStates();X.setCursorStates(Z.source,3,f.CursorMoveCommands.addCursorUp(X,H,J)),X.revealTopMostCursor(Z.source),c(H,X.getCursorStates())}}e.InsertCursorAbove=o;class d extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorBelow",label:i.localize(4,null),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(5,null),order:3}})}run(K,G,Z){if(!G.hasModel())return;let J=!0;Z&&Z.logicalLine===!1&&(J=!1);const X=G._getViewModel();if(X.cursorConfig.readOnly)return;X.model.pushStackElement();const H=X.getCursorStates();X.setCursorStates(Z.source,3,f.CursorMoveCommands.addCursorDown(X,H,J)),X.revealBottomMostCursor(Z.source),c(H,X.getCursorStates())}}e.InsertCursorBelow=d;class l extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:i.localize(6,null),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(7,null),order:4}})}getCursorsForSelection(K,G,Z){if(!K.isEmpty()){for(let J=K.startLineNumber;J1&&Z.push(new g.Selection(K.endLineNumber,K.endColumn,K.endLineNumber,K.endColumn))}}run(K,G){if(!G.hasModel())return;const Z=G.getModel(),J=G.getSelections(),X=G._getViewModel(),H=X.getCursorStates(),B=[];J.forEach(V=>this.getCursorsForSelection(V,Z,B)),B.length>0&&G.setSelections(B),c(H,X.getCursorStates())}}class p extends S.EditorAction{constructor(){super({id:"editor.action.addCursorsToBottom",label:i.localize(8,null),alias:"Add Cursors To Bottom",precondition:void 0})}run(K,G){if(!G.hasModel())return;const Z=G.getSelections(),J=G.getModel().getLineCount(),X=[];for(let V=Z[0].startLineNumber;V<=J;V++)X.push(new g.Selection(V,Z[0].startColumn,V,Z[0].endColumn));const H=G._getViewModel(),B=H.getCursorStates();X.length>0&&G.setSelections(X),c(B,H.getCursorStates())}}class m extends S.EditorAction{constructor(){super({id:"editor.action.addCursorsToTop",label:i.localize(9,null),alias:"Add Cursors To Top",precondition:void 0})}run(K,G){if(!G.hasModel())return;const Z=G.getSelections(),J=[];for(let B=Z[0].startLineNumber;B>=1;B--)J.push(new g.Selection(B,Z[0].startColumn,B,Z[0].endColumn));const X=G._getViewModel(),H=X.getCursorStates();J.length>0&&G.setSelections(J),c(H,X.getCursorStates())}}class v{constructor(K,G,Z){this.selections=K,this.revealRange=G,this.revealScrollType=Z}}e.MultiCursorSessionResult=v;class b{static create(K,G){if(!K.hasModel())return null;const Z=G.getState();if(!K.hasTextFocus()&&Z.isRevealed&&Z.searchString.length>0)return new b(K,G,!1,Z.searchString,Z.wholeWord,Z.matchCase,null);let J=!1,X,H;const B=K.getSelections();B.length===1&&B[0].isEmpty()?(J=!0,X=!0,H=!0):(X=Z.wholeWord,H=Z.matchCase);const V=K.getSelection();let Y,ie=null;if(V.isEmpty()){const ae=K.getConfiguredWordAtPosition(V.getStartPosition());if(!ae)return null;Y=ae.word,ie=new g.Selection(V.startLineNumber,ae.startColumn,V.startLineNumber,ae.endColumn)}else Y=K.getModel().getValueInRange(V).replace(/\r\n/g,` -`);return new b(K,G,J,Y,X,H,ie)}constructor(K,G,Z,J,X,H,B){this._editor=K,this.findController=G,this.isDisconnectedFromFindController=Z,this.searchText=J,this.wholeWord=X,this.matchCase=H,this.currentMatch=B}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.concat(K),K,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.slice(0,G.length-1).concat(K),K,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const J=this.currentMatch;return this.currentMatch=null,J}this.findController.highlightFindOptions();const K=this._editor.getSelections(),G=K[K.length-1],Z=this._editor.getModel().findNextMatch(this.searchText,G.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1);return Z?new g.Selection(Z.range.startLineNumber,Z.range.startColumn,Z.range.endLineNumber,Z.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.concat(K),K,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.slice(0,G.length-1).concat(K),K,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const J=this.currentMatch;return this.currentMatch=null,J}this.findController.highlightFindOptions();const K=this._editor.getSelections(),G=K[K.length-1],Z=this._editor.getModel().findPreviousMatch(this.searchText,G.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1);return Z?new g.Selection(Z.range.startLineNumber,Z.range.startColumn,Z.range.endLineNumber,Z.range.endColumn):null}selectAll(K){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const G=this._editor.getModel();return K?G.findMatches(this.searchText,K,!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1,1073741824):G.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1,1073741824)}}e.MultiCursorSession=b;class w extends D.Disposable{static get(K){return K.getContribution(w.ID)}constructor(K){super(),this._sessionDispose=this._register(new D.DisposableStore),this._editor=K,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(K){if(!this._session){const G=b.create(this._editor,K);if(!G)return;this._session=G;const Z={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(Z.wholeWordOverride=1,Z.matchCaseOverride=1,Z.isRegexOverride=2),K.getState().change(Z,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(J=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(K.getState().onFindReplaceStateChange(J=>{(J.matchCase||J.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const K={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(K,!1)}this._session=null}_setSelections(K){this._ignoreSelectionChange=!0,this._editor.setSelections(K),this._ignoreSelectionChange=!1}_expandEmptyToWord(K,G){if(!G.isEmpty())return G;const Z=this._editor.getConfiguredWordAtPosition(G.getStartPosition());return Z?new g.Selection(G.startLineNumber,Z.startColumn,G.startLineNumber,Z.endColumn):G}_applySessionResult(K){K&&(this._setSelections(K.selections),K.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(K.revealRange,K.revealScrollType))}getSession(K){return this._session}addSelectionToNextFindMatch(K){if(this._editor.hasModel()){if(!this._session){const G=this._editor.getSelections();if(G.length>1){const J=K.getState().matchCase;if(!O(this._editor.getModel(),G,J)){const H=this._editor.getModel(),B=[];for(let V=0,Y=G.length;V0&&Z.isRegex){const J=this._editor.getModel();Z.searchScope?G=J.findMatches(Z.searchString,Z.searchScope,Z.isRegex,Z.matchCase,Z.wholeWord?this._editor.getOption(128):null,!1,1073741824):G=J.findMatches(Z.searchString,!0,Z.isRegex,Z.matchCase,Z.wholeWord?this._editor.getOption(128):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(K),!this._session)return;G=this._session.selectAll(Z.searchScope)}if(G.length>0){const J=this._editor.getSelection();for(let X=0,H=G.length;Xnew g.Selection(X.range.startLineNumber,X.range.startColumn,X.range.endLineNumber,X.range.endColumn)))}}}e.MultiCursorSelectionController=w,w.ID="editor.contrib.multiCursorController";class E extends S.EditorAction{run(K,G){const Z=w.get(G);if(!Z)return;const J=G._getViewModel();if(J){const X=J.getCursorStates(),H=s.CommonFindController.get(G);if(H)this._run(Z,H);else{const B=K.get(h.IInstantiationService).createInstance(s.CommonFindController,G);this._run(Z,B),B.dispose()}c(X,J.getCursorStates())}}}e.MultiCursorSelectionControllerAction=E;class I extends E{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:i.localize(10,null),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:2082,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(11,null),order:5}})}_run(K,G){K.addSelectionToNextFindMatch(G)}}e.AddSelectionToNextFindMatchAction=I;class M extends E{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:i.localize(12,null),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(13,null),order:6}})}_run(K,G){K.addSelectionToPreviousFindMatch(G)}}e.AddSelectionToPreviousFindMatchAction=M;class P extends E{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:i.localize(14,null),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:(0,y.KeyChord)(2089,2082),weight:100}})}_run(K,G){K.moveSelectionToNextFindMatch(G)}}e.MoveSelectionToNextFindMatchAction=P;class x extends E{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:i.localize(15,null),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(K,G){K.moveSelectionToPreviousFindMatch(G)}}e.MoveSelectionToPreviousFindMatchAction=x;class T extends E{constructor(){super({id:"editor.action.selectHighlights",label:i.localize(16,null),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:3114,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:"3_multi",title:i.localize(17,null),order:7}})}_run(K,G){K.selectAll(G)}}e.SelectHighlightsAction=T;class A extends E{constructor(){super({id:"editor.action.changeAll",label:i.localize(18,null),alias:"Change All Occurrences",precondition:t.ContextKeyExpr.and(C.EditorContextKeys.writable,C.EditorContextKeys.editorTextFocus),kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(K,G){K.selectAll(G)}}e.CompatChangeAll=A;class N{constructor(K,G,Z,J,X){this._model=K,this._searchText=G,this._matchCase=Z,this._wordSeparators=J,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,X&&this._model===X._model&&this._searchText===X._searchText&&this._matchCase===X._matchCase&&this._wordSeparators===X._wordSeparators&&this._modelVersionId===X._modelVersionId&&(this._cachedFindMatches=X._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(K=>K.range),this._cachedFindMatches.sort(_.Range.compareRangesUsingStarts)),this._cachedFindMatches}}let F=r=class extends D.Disposable{constructor(K,G){super(),this._languageFeaturesService=G,this.editor=K,this._isEnabled=K.getOption(106),this._decorations=K.createDecorationsCollection(),this.updateSoon=this._register(new k.RunOnceScheduler(()=>this._update(),300)),this.state=null,this._register(K.onDidChangeConfiguration(J=>{this._isEnabled=K.getOption(106)})),this._register(K.onDidChangeCursorSelection(J=>{this._isEnabled&&(J.selection.isEmpty()?J.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(K.onDidChangeModel(J=>{this._setState(null)})),this._register(K.onDidChangeModelContent(J=>{this._isEnabled&&this.updateSoon.schedule()}));const Z=s.CommonFindController.get(K);Z&&this._register(Z.getState().onFindReplaceStateChange(J=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(r._createState(this.state,this._isEnabled,this.editor))}static _createState(K,G,Z){if(!G||!Z.hasModel())return null;const J=Z.getSelection();if(J.startLineNumber!==J.endLineNumber)return null;const X=w.get(Z);if(!X)return null;const H=s.CommonFindController.get(Z);if(!H)return null;let B=X.getSession(H);if(!B){const ie=Z.getSelections();if(ie.length>1){const ce=H.getState().matchCase;if(!O(Z.getModel(),ie,ce))return null}B=b.create(Z,H)}if(!B||B.currentMatch||/^[ \t]+$/.test(B.searchText)||B.searchText.length>200)return null;const V=H.getState(),Y=V.matchCase;if(V.isRevealed){let ie=V.searchString;Y||(ie=ie.toLowerCase());let ae=B.searchText;if(Y||(ae=ae.toLowerCase()),ie===ae&&B.matchCase===V.matchCase&&B.wholeWord===V.wholeWord&&!V.isRegex)return null}return new N(Z.getModel(),B.searchText,B.matchCase,B.wholeWord?Z.getOption(128):null,K)}_setState(K){if(this.state=K,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const G=this.editor.getModel();if(G.isTooLargeForTokenization())return;const Z=this.state.findMatches(),J=this.editor.getSelections();J.sort(_.Range.compareRangesUsingStarts);const X=[];for(let V=0,Y=0,ie=Z.length,ae=J.length;V=ae)X.push(ce),V++;else{const de=_.Range.compareRangesUsingStarts(ce,J[Y]);de<0?((J[Y].isEmpty()||!_.Range.areIntersecting(ce,J[Y]))&&X.push(ce),V++):(de>0||V++,Y++)}}const H=this._languageFeaturesService.documentHighlightProvider.has(G)&&this.editor.getOption(79),B=X.map(V=>({range:V,options:(0,u.getSelectionHighlightDecorationOptions)(H)}));this._decorations.set(B)}dispose(){this._setState(null),super.dispose()}};e.SelectionHighlighter=F,F.ID="editor.contrib.selectionHighlighter",e.SelectionHighlighter=F=r=ke([fe(1,a.ILanguageFeaturesService)],F);function O(R,K,G){const Z=W(R,K[0],!G);for(let J=1,X=K.length;J()=>Promise.resolve(N.provideDocumentHighlights(P,x,T)).then(void 0,S.onUnexpectedExternalError)),k.isNonEmptyArray)}e.getOccurrencesAtPosition=c;class o{constructor(P,x,T){this._model=P,this._selection=x,this._wordSeparators=T,this._wordRange=this._getCurrentWordRange(P,x),this._result=null}get result(){return this._result||(this._result=(0,y.createCancelablePromise)(P=>this._compute(this._model,this._selection,this._wordSeparators,P))),this._result}_getCurrentWordRange(P,x){const T=P.getWordAtPosition(x.getPosition());return T?new g.Range(x.startLineNumber,T.startColumn,x.startLineNumber,T.endColumn):null}isValid(P,x,T){const A=x.startLineNumber,N=x.startColumn,F=x.endColumn,O=this._getCurrentWordRange(P,x);let W=!!(this._wordRange&&this._wordRange.equalsRange(O));for(let U=0,j=T.length;!W&&U=F&&(W=!0)}return W}cancel(){this.result.cancel()}}class d extends o{constructor(P,x,T,A){super(P,x,T),this._providers=A}_compute(P,x,T,A){return c(this._providers,P,x.getPosition(),A).then(N=>N||[])}}class l extends o{constructor(P,x,T){super(P,x,T),this._selectionIsEmpty=x.isEmpty()}_compute(P,x,T,A){return(0,y.timeout)(250,A).then(()=>{if(!x.isEmpty())return[];const N=P.getWordAtPosition(x.getPosition());return!N||N.word.length>1e3?[]:P.findMatches(N.word,!0,!1,!0,T,!1).map(O=>({range:O.range,kind:s.DocumentHighlightKind.Text}))})}isValid(P,x,T){const A=x.isEmpty();return this._selectionIsEmpty!==A?!1:super.isValid(P,x,T)}}function p(M,P,x,T){return M.has(P)?new d(P,x,T,M):new l(P,x,T)}(0,_.registerModelAndPositionCommand)("_executeDocumentHighlights",(M,P,x)=>{const T=M.get(t.ILanguageFeaturesService);return c(T.documentHighlightProvider,P,x,D.CancellationToken.None)});class m{constructor(P,x,T,A){this.toUnhook=new f.DisposableStore,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=P,this.providers=x,this.linkedHighlighters=T,this._hasWordHighlights=r.bindTo(A),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(79),this.model=this.editor.getModel(),this.toUnhook.add(P.onDidChangeCursorPosition(N=>{this._ignorePositionChangeEvent||this.occurrencesHighlight&&this._onPositionChanged(N)})),this.toUnhook.add(P.onDidChangeModelContent(N=>{this._stopAll()})),this.toUnhook.add(P.onDidChangeConfiguration(N=>{const F=this.editor.getOption(79);this.occurrencesHighlight!==F&&(this.occurrencesHighlight=F,this._stopAll())})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight&&this._run()}_getSortedHighlights(){return this.decorations.getRanges().sort(g.Range.compareRangesUsingStarts)}moveNext(){const P=this._getSortedHighlights(),T=(P.findIndex(N=>N.containsPosition(this.editor.getPosition()))+1)%P.length,A=P[T];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(A.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(A);const N=this._getWord();if(N){const F=this.editor.getModel().getLineContent(A.startLineNumber);(0,L.alert)(`${F}, ${T+1} of ${P.length} for '${N.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const P=this._getSortedHighlights(),T=(P.findIndex(N=>N.containsPosition(this.editor.getPosition()))-1+P.length)%P.length,A=P[T];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(A.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(A);const N=this._getWord();if(N){const F=this.editor.getModel().getLineContent(A.startLineNumber);(0,L.alert)(`${F}, ${T+1} of ${P.length} for '${N.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeDecorations(){this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1))}_stopAll(){this._removeDecorations(),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(P){if(!this.occurrencesHighlight){this._stopAll();return}if(P.reason!==3){this._stopAll();return}this._run()}_getWord(){const P=this.editor.getSelection(),x=P.startLineNumber,T=P.startColumn;return this.model.getWordAtPosition({lineNumber:x,column:T})}_run(){const P=this.editor.getSelection();if(P.startLineNumber!==P.endLineNumber){this._stopAll();return}const x=P.startColumn,T=P.endColumn,A=this._getWord();if(!A||A.startColumn>x||A.endColumn{F===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=O||[],this._beginRenderDecorations())},S.onUnexpectedError)}}_beginRenderDecorations(){const P=new Date().getTime(),x=this.lastCursorPositionChangeTime+250;P>=x?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},x-P)}renderDecorations(){this.renderDecorationsTimer=-1;const P=[];for(const x of this.workerRequestValue)x.range&&P.push({range:x.range,options:(0,a.getHighlightDecorationOptions)(x.kind)});this.decorations.set(P),this._hasWordHighlights.set(this.hasDecorations());for(const x of this.linkedHighlighters())x?.editor.getModel()===this.editor.getModel()&&(x._stopAll(),x.decorations.set(P),x._hasWordHighlights.set(x.hasDecorations()))}dispose(){this._stopAll(),this.toUnhook.dispose()}}let v=h=class extends f.Disposable{static get(P){return P.getContribution(h.ID)}constructor(P,x,T){super(),this.wordHighlighter=null,this.linkedContributions=new Set;const A=()=>{P.hasModel()&&(this.wordHighlighter=new m(P,T.documentHighlightProvider,()=>u.Iterable.map(this.linkedContributions,N=>N.wordHighlighter),x))};this._register(P.onDidChangeModel(N=>{this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),A()})),A()}saveViewState(){return!!(this.wordHighlighter&&this.wordHighlighter.hasDecorations())}moveNext(){var P;(P=this.wordHighlighter)===null||P===void 0||P.moveNext()}moveBack(){var P;(P=this.wordHighlighter)===null||P===void 0||P.moveBack()}restoreViewState(P){this.wordHighlighter&&P&&this.wordHighlighter.restore()}dispose(){this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),super.dispose()}};e.WordHighlighterContribution=v,v.ID="editor.contrib.wordHighlighter",e.WordHighlighterContribution=v=h=ke([fe(1,n.IContextKeyService),fe(2,t.ILanguageFeaturesService)],v);class b extends _.EditorAction{constructor(P,x){super(x),this._isNext=P}run(P,x){const T=v.get(x);T&&(this._isNext?T.moveNext():T.moveBack())}}class w extends b{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:i.localize(0,null),alias:"Go to Next Symbol Highlight",precondition:r,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:65,weight:100}})}}class E extends b{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:i.localize(1,null),alias:"Go to Previous Symbol Highlight",precondition:r,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:1089,weight:100}})}}class I extends _.EditorAction{constructor(){super({id:"editor.action.wordHighlight.trigger",label:i.localize(2,null),alias:"Trigger Symbol Highlight",precondition:r.toNegated(),kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:0,weight:100}})}run(P,x,T){const A=v.get(x);A&&A.restoreViewState(!0)}}(0,_.registerEditorContribution)(v.ID,v,0),(0,_.registerEditorAction)(w),(0,_.registerEditorAction)(E),(0,_.registerEditorAction)(I)}),define(ne[898],se([1,0,7,130,38,164,2,47,5,40,467]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ZoneWidget=e.OverlayWidgetDelegate=void 0;const C=new y.Color(new y.RGBA(0,122,204)),s={showArrow:!0,showFrame:!0,className:"",frameColor:C,arrowColor:C,keepEditorSelection:!1},i="vs.editor.contrib.zoneWidget";class n{constructor(r,c,o,d,l,p,m,v){this.id="",this.domNode=r,this.afterLineNumber=c,this.afterColumn=o,this.heightInLines=d,this.showInHiddenAreas=m,this.ordinal=v,this._onDomNodeTop=l,this._onComputedHeight=p}onDomNodeTop(r){this._onDomNodeTop(r)}onComputedHeight(r){this._onComputedHeight(r)}}class t{constructor(r,c){this._id=r,this._domNode=c}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}e.OverlayWidgetDelegate=t;class a{constructor(r){this._editor=r,this._ruleName=a._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),L.removeCSSRulesContainingSelector(this._ruleName)}set color(r){this._color!==r&&(this._color=r,this._updateStyle())}set height(r){this._height!==r&&(this._height=r,this._updateStyle())}_updateStyle(){L.removeCSSRulesContainingSelector(this._ruleName),L.createCSSRule(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `)}show(r){r.column===1&&(r={lineNumber:r.lineNumber,column:2}),this._decorations.set([{range:_.Range.fromPositions(r),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}}a._IdGenerator=new D.IdGenerator(".arrow-decoration-");class u{constructor(r,c={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new S.DisposableStore,this.container=null,this._isShowing=!1,this.editor=r,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=f.deepClone(c),f.mixin(this.options,s,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange(o=>{const d=this._getWidth(o);this.domNode.style.width=d+"px",this.domNode.style.left=this._getLeft(o)+"px",this._onWidth(d)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(r=>{this._viewZone&&r.removeZone(this._viewZone.id),this._viewZone=null}),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new a(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(r){r.frameColor&&(this.options.frameColor=r.frameColor),r.arrowColor&&(this.options.arrowColor=r.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const r=this.options.frameColor.toString();this.container.style.borderTopColor=r,this.container.style.borderBottomColor=r}if(this._arrow&&this.options.arrowColor){const r=this.options.arrowColor.toString();this._arrow.color=r}}_getWidth(r){return r.width-r.minimap.minimapWidth-r.verticalScrollbarWidth}_getLeft(r){return r.minimap.minimapWidth>0&&r.minimap.minimapLeft===0?r.minimap.minimapWidth:0}_onViewZoneTop(r){this.domNode.style.top=r+"px"}_onViewZoneHeight(r){var c;if(this.domNode.style.height=`${r}px`,this.container){const o=r-this._decoratingElementsHeight();this.container.style.height=`${o}px`;const d=this.editor.getLayoutInfo();this._doLayout(o,this._getWidth(d))}(c=this._resizeSash)===null||c===void 0||c.layout()}get position(){const r=this._positionMarkerId.getRange(0);if(r)return r.getStartPosition()}show(r,c){const o=_.Range.isIRange(r)?_.Range.lift(r):_.Range.fromPositions(r);this._isShowing=!0,this._showImpl(o,c),this._isShowing=!1,this._positionMarkerId.set([{range:o,options:g.ModelDecorationOptions.EMPTY}])}hide(){var r;this._viewZone&&(this.editor.changeViewZones(c=>{this._viewZone&&c.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(r=this._arrow)===null||r===void 0||r.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const r=this.editor.getOption(65);let c=0;if(this.options.showArrow){const o=Math.round(r/3);c+=2*o}if(this.options.showFrame){const o=Math.round(r/9);c+=2*o}return c}_showImpl(r,c){const o=r.getStartPosition(),d=this.editor.getLayoutInfo(),l=this._getWidth(d);this.domNode.style.width=`${l}px`,this.domNode.style.left=this._getLeft(d)+"px";const p=document.createElement("div");p.style.overflow="hidden";const m=this.editor.getOption(65);if(!this.options.allowUnlimitedHeight){const I=Math.max(12,this.editor.getLayoutInfo().height/m*.8);c=Math.min(c,I)}let v=0,b=0;if(this._arrow&&this.options.showArrow&&(v=Math.round(m/3),this._arrow.height=v,this._arrow.show(o)),this.options.showFrame&&(b=Math.round(m/9)),this.editor.changeViewZones(I=>{this._viewZone&&I.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new n(p,o.lineNumber,o.column,c,M=>this._onViewZoneTop(M),M=>this._onViewZoneHeight(M),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=I.addZone(this._viewZone),this._overlayWidget=new t(i+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const I=this.options.frameWidth?this.options.frameWidth:b;this.container.style.borderTopWidth=I+"px",this.container.style.borderBottomWidth=I+"px"}const w=c*m-this._decoratingElementsHeight();this.container&&(this.container.style.top=v+"px",this.container.style.height=w+"px",this.container.style.overflow="hidden"),this._doLayout(w,l),this.options.keepEditorSelection||this.editor.setSelection(r);const E=this.editor.getModel();if(E){const I=E.validateRange(new _.Range(r.startLineNumber,1,r.endLineNumber+1,1));this.revealRange(I,I.startLineNumber===E.getLineCount())}}revealRange(r,c){c?this.editor.revealLineNearTop(r.endLineNumber,0):this.editor.revealRange(r,0)}setCssClass(r,c){this.container&&(c&&this.container.classList.remove(c),this.container.classList.add(r))}_onWidth(r){}_doLayout(r,c){}_relayout(r){this._viewZone&&this._viewZone.heightInLines!==r&&this.editor.changeViewZones(c=>{this._viewZone&&(this._viewZone.heightInLines=r,c.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new k.Sash(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let r;this._disposables.add(this._resizeSash.onDidStart(c=>{this._viewZone&&(r={startY:c.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{r=void 0})),this._disposables.add(this._resizeSash.onDidChange(c=>{if(r){const o=(c.currentY-r.startY)/this.editor.getOption(65),d=o<0?Math.ceil(o):Math.floor(o),l=r.heightInLines+d;l>5&&l<35&&this._relayout(l)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const r=this.editor.getLayoutInfo();return r.width-r.minimap.minimapWidth}}e.ZoneWidget=u}),define(ne[138],se([1,0,7,68,39,25,26,38,6,47,16,33,162,898,690,160,15,50,8,31,458]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.peekViewEditorMatchHighlightBorder=e.peekViewEditorMatchHighlight=e.peekViewResultsMatchHighlight=e.peekViewEditorStickyScrollBackground=e.peekViewEditorGutterBackground=e.peekViewEditorBackground=e.peekViewResultsSelectionForeground=e.peekViewResultsSelectionBackground=e.peekViewResultsFileForeground=e.peekViewResultsMatchForeground=e.peekViewResultsBackground=e.peekViewBorder=e.peekViewTitleInfoForeground=e.peekViewTitleForeground=e.peekViewTitleBackground=e.PeekViewWidget=e.getOuterEditor=e.PeekContext=e.IPeekViewService=void 0,e.IPeekViewService=(0,r.createDecorator)("IPeekViewService"),(0,h.registerSingleton)(e.IPeekViewService,class{constructor(){this._widgets=new Map}addExclusiveWidget(v,b){const w=this._widgets.get(v);w&&(w.listener.dispose(),w.widget.dispose());const E=()=>{const I=this._widgets.get(v);I&&I.widget===b&&(I.listener.dispose(),this._widgets.delete(v))};this._widgets.set(v,{widget:b,listener:b.onDidClose(E)})}},1);var o;(function(v){v.inPeekEditor=new u.RawContextKey("inReferenceSearchEditor",!0,t.localize(0,null)),v.notInPeekEditor=v.inPeekEditor.toNegated()})(o||(e.PeekContext=o={}));let d=class{constructor(b,w){b instanceof i.EmbeddedCodeEditorWidget&&o.inPeekEditor.bindTo(w)}dispose(){}};d.ID="editor.contrib.referenceController",d=ke([fe(1,u.IContextKeyService)],d),(0,C.registerEditorContribution)(d.ID,d,0);function l(v){const b=v.get(s.ICodeEditorService).getFocusedCodeEditor();return b instanceof i.EmbeddedCodeEditorWidget?b.getParentEditor():b}e.getOuterEditor=l;const p={headerBackgroundColor:f.Color.white,primaryHeadingColor:f.Color.fromHex("#333333"),secondaryHeadingColor:f.Color.fromHex("#6c6c6cb3")};let m=class extends n.ZoneWidget{constructor(b,w,E){super(b,w),this.instantiationService=E,this._onDidClose=new _.Emitter,this.onDidClose=this._onDidClose.event,g.mixin(this.options,p,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(b){const w=this.options;b.headerBackgroundColor&&(w.headerBackgroundColor=b.headerBackgroundColor),b.primaryHeadingColor&&(w.primaryHeadingColor=b.primaryHeadingColor),b.secondaryHeadingColor&&(w.secondaryHeadingColor=b.secondaryHeadingColor),super.style(b)}_applyStyles(){super._applyStyles();const b=this.options;this._headElement&&b.headerBackgroundColor&&(this._headElement.style.backgroundColor=b.headerBackgroundColor.toString()),this._primaryHeading&&b.primaryHeadingColor&&(this._primaryHeading.style.color=b.primaryHeadingColor.toString()),this._secondaryHeading&&b.secondaryHeadingColor&&(this._secondaryHeading.style.color=b.secondaryHeadingColor.toString()),this._bodyElement&&b.frameColor&&(this._bodyElement.style.borderColor=b.frameColor.toString())}_fillContainer(b){this.setCssClass("peekview-widget"),this._headElement=L.$(".head"),this._bodyElement=L.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),b.appendChild(this._headElement),b.appendChild(this._bodyElement)}_fillHead(b,w){this._titleElement=L.$(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),L.addStandardDisposableListener(this._titleElement,"click",M=>this._onTitleClick(M))),L.append(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=L.$("span.filename"),this._secondaryHeading=L.$("span.dirname"),this._metaHeading=L.$("span.meta"),L.append(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const E=L.$(".peekview-actions");L.append(this._headElement,E);const I=this._getActionBarOptions();this._actionbarWidget=new k.ActionBar(E,I),this._disposables.add(this._actionbarWidget),w||this._actionbarWidget.push(new y.Action("peekview.close",t.localize(1,null),S.ThemeIcon.asClassName(D.Codicon.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(b){}_getActionBarOptions(){return{actionViewItemProvider:a.createActionViewItem.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(b){}setTitle(b,w){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=b,this._primaryHeading.setAttribute("title",b),w?this._secondaryHeading.innerText=w:L.clearNode(this._secondaryHeading))}setMetaTitle(b){this._metaHeading&&(b?(this._metaHeading.innerText=b,L.show(this._metaHeading)):L.hide(this._metaHeading))}_doLayout(b,w){if(!this._isShowing&&b<0){this.dispose();return}const E=Math.ceil(this.editor.getOption(65)*1.2),I=Math.round(b-(E+2));this._doLayoutHead(E,w),this._doLayoutBody(I,w)}_doLayoutHead(b,w){this._headElement&&(this._headElement.style.height=`${b}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(b,w){this._bodyElement&&(this._bodyElement.style.height=`${b}px`)}};e.PeekViewWidget=m,e.PeekViewWidget=m=ke([fe(2,r.IInstantiationService)],m),e.peekViewTitleBackground=(0,c.registerColor)("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(2,null)),e.peekViewTitleForeground=(0,c.registerColor)("peekViewTitleLabel.foreground",{dark:f.Color.white,light:f.Color.black,hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(3,null)),e.peekViewTitleInfoForeground=(0,c.registerColor)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},t.localize(4,null)),e.peekViewBorder=(0,c.registerColor)("peekView.border",{dark:c.editorInfoForeground,light:c.editorInfoForeground,hcDark:c.contrastBorder,hcLight:c.contrastBorder},t.localize(5,null)),e.peekViewResultsBackground=(0,c.registerColor)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(6,null)),e.peekViewResultsMatchForeground=(0,c.registerColor)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(7,null)),e.peekViewResultsFileForeground=(0,c.registerColor)("peekViewResult.fileForeground",{dark:f.Color.white,light:"#1E1E1E",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(8,null)),e.peekViewResultsSelectionBackground=(0,c.registerColor)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},t.localize(9,null)),e.peekViewResultsSelectionForeground=(0,c.registerColor)("peekViewResult.selectionForeground",{dark:f.Color.white,light:"#6C6C6C",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(10,null)),e.peekViewEditorBackground=(0,c.registerColor)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(11,null)),e.peekViewEditorGutterBackground=(0,c.registerColor)("peekViewEditorGutter.background",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(12,null)),e.peekViewEditorStickyScrollBackground=(0,c.registerColor)("peekViewEditorStickyScroll.background",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(13,null)),e.peekViewResultsMatchHighlight=(0,c.registerColor)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},t.localize(14,null)),e.peekViewEditorMatchHighlight=(0,c.registerColor)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},t.localize(15,null)),e.peekViewEditorMatchHighlightBorder=(0,c.registerColor)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:c.activeContrastBorder,hcLight:c.activeContrastBorder},t.localize(16,null))}),define(ne[899],se([1,0,7,75,14,38,6,2,45,11,5,138,663,160,30,15,8,158,97,56,789,31,23,445]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";var p;Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerNavigationWidget=void 0;class m{constructor(O,W,U,j,R){this._openerService=j,this._labelService=R,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new f.DisposableStore,this._editor=W;const K=document.createElement("div");K.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),K.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),K.appendChild(this._relatedBlock),this._disposables.add(L.addStandardDisposableListener(this._relatedBlock,"click",G=>{G.preventDefault();const Z=this._relatedDiagnostics.get(G.target);Z&&U(Z)})),this._scrollable=new k.ScrollableElement(K,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),O.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(G=>{K.style.left=`-${G.scrollLeft}px`,K.style.top=`-${G.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){(0,f.dispose)(this._disposables)}update(O){const{source:W,message:U,relatedInformation:j,code:R}=O;let K=(W?.length||0)+2;R&&(typeof R=="string"?K+=R.length:K+=R.value.length);const G=(0,g.splitLines)(U);this._lines=G.length,this._longestLineLength=0;for(const B of G)this._longestLineLength=Math.max(B.length+K,this._longestLineLength);L.clearNode(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(O)),this._editor.applyFontInfo(this._messageBlock);let Z=this._messageBlock;for(const B of G)Z=document.createElement("div"),Z.innerText=B,B===""&&(Z.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(Z);if(W||R){const B=document.createElement("span");if(B.classList.add("details"),Z.appendChild(B),W){const V=document.createElement("span");V.innerText=W,V.classList.add("source"),B.appendChild(V)}if(R)if(typeof R=="string"){const V=document.createElement("span");V.innerText=`(${R})`,V.classList.add("code"),B.appendChild(V)}else{this._codeLink=L.$("a.code-link"),this._codeLink.setAttribute("href",`${R.target.toString()}`),this._codeLink.onclick=Y=>{this._openerService.open(R.target,{allowCommands:!0}),Y.preventDefault(),Y.stopPropagation()};const V=L.append(this._codeLink,L.$("span"));V.innerText=R.value,B.appendChild(this._codeLink)}}if(L.clearNode(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,y.isNonEmptyArray)(j)){const B=this._relatedBlock.appendChild(document.createElement("div"));B.style.paddingTop=`${Math.floor(this._editor.getOption(65)*.66)}px`,this._lines+=1;for(const V of j){const Y=document.createElement("div"),ie=document.createElement("a");ie.classList.add("filename"),ie.innerText=`${this._labelService.getUriBasenameLabel(V.resource)}(${V.startLineNumber}, ${V.startColumn}): `,ie.title=this._labelService.getUriLabel(V.resource),this._relatedDiagnostics.set(ie,V);const ae=document.createElement("span");ae.innerText=V.message,Y.appendChild(ie),Y.appendChild(ae),this._lines+=1,B.appendChild(Y)}}const J=this._editor.getOption(49),X=Math.ceil(J.typicalFullwidthCharacterWidth*this._longestLineLength*.75),H=J.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:X,scrollHeight:H})}layout(O,W){this._scrollable.getDomNode().style.height=`${O}px`,this._scrollable.getDomNode().style.width=`${W}px`,this._scrollable.setScrollDimensions({width:W,height:O})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(O){let W="";switch(O.severity){case r.MarkerSeverity.Error:W=i.localize(0,null);break;case r.MarkerSeverity.Warning:W=i.localize(1,null);break;case r.MarkerSeverity.Info:W=i.localize(2,null);break;case r.MarkerSeverity.Hint:W=i.localize(3,null);break}let U=i.localize(4,null,W,O.startLineNumber+":"+O.startColumn);const j=this._editor.getModel();return j&&O.startLineNumber<=j.getLineCount()&&O.startLineNumber>=1&&(U=`${j.getLineContent(O.startLineNumber)}, ${U}`),U}}let v=p=class extends s.PeekViewWidget{constructor(O,W,U,j,R,K,G){super(O,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},R),this._themeService=W,this._openerService=U,this._menuService=j,this._contextKeyService=K,this._labelService=G,this._callOnDispose=new f.DisposableStore,this._onDidSelectRelatedInformation=new S.Emitter,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=r.MarkerSeverity.Warning,this._backgroundColor=D.Color.white,this._applyTheme(W.getColorTheme()),this._callOnDispose.add(W.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(O){this._backgroundColor=O.getColor(N);let W=I,U=M;this._severity===r.MarkerSeverity.Warning?(W=P,U=x):this._severity===r.MarkerSeverity.Info&&(W=T,U=A);const j=O.getColor(W),R=O.getColor(U);this.style({arrowColor:j,frameColor:j,headerBackgroundColor:R,primaryHeadingColor:O.getColor(s.peekViewTitleForeground),secondaryHeadingColor:O.getColor(s.peekViewTitleInfoForeground)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(O){super._fillHead(O),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(j=>this.editor.focus()));const W=[],U=this._menuService.createMenu(p.TitleMenu,this._contextKeyService);(0,n.createAndFillInActionBarActions)(U,void 0,W),this._actionbarWidget.push(W,{label:!1,icon:!0,index:0}),U.dispose()}_fillTitleIcon(O){this._icon=L.append(O,L.$(""))}_fillBody(O){this._parentContainer=O,O.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),O.appendChild(this._container),this._message=new m(this._container,this.editor,W=>this._onDidSelectRelatedInformation.fire(W),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(O,W,U){this._container.classList.remove("stale"),this._message.update(O),this._severity=O.severity,this._applyTheme(this._themeService.getColorTheme());const j=C.Range.lift(O),R=this.editor.getPosition(),K=R&&j.containsPosition(R)?R:j.getStartPosition();super.show(K,this.computeRequiredHeight());const G=this.editor.getModel();if(G){const Z=U>1?i.localize(5,null,W,U):i.localize(6,null,W,U);this.setTitle((0,_.basename)(G.uri),Z)}this._icon.className=`codicon ${o.SeverityIcon.className(r.MarkerSeverity.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(K,0),this.editor.focus()}updateMarker(O){this._container.classList.remove("stale"),this._message.update(O)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(O,W){super._doLayoutBody(O,W),this._heightInPixel=O,this._message.layout(O,W),this._container.style.height=`${O}px`}_onWidth(O){this._message.layout(this._heightInPixel,O)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};e.MarkerNavigationWidget=v,v.TitleMenu=new t.MenuId("gotoErrorTitleMenu"),e.MarkerNavigationWidget=v=p=ke([fe(1,l.IThemeService),fe(2,c.IOpenerService),fe(3,t.IMenuService),fe(4,u.IInstantiationService),fe(5,a.IContextKeyService),fe(6,h.ILabelService)],v);const b=(0,d.oneOf)(d.editorErrorForeground,d.editorErrorBorder),w=(0,d.oneOf)(d.editorWarningForeground,d.editorWarningBorder),E=(0,d.oneOf)(d.editorInfoForeground,d.editorInfoBorder),I=(0,d.registerColor)("editorMarkerNavigationError.background",{dark:b,light:b,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(7,null)),M=(0,d.registerColor)("editorMarkerNavigationError.headerBackground",{dark:(0,d.transparent)(I,.1),light:(0,d.transparent)(I,.1),hcDark:null,hcLight:null},i.localize(8,null)),P=(0,d.registerColor)("editorMarkerNavigationWarning.background",{dark:w,light:w,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(9,null)),x=(0,d.registerColor)("editorMarkerNavigationWarning.headerBackground",{dark:(0,d.transparent)(P,.1),light:(0,d.transparent)(P,.1),hcDark:"#0C141F",hcLight:(0,d.transparent)(P,.2)},i.localize(10,null)),T=(0,d.registerColor)("editorMarkerNavigationInfo.background",{dark:E,light:E,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(11,null)),A=(0,d.registerColor)("editorMarkerNavigationInfo.headerBackground",{dark:(0,d.transparent)(T,.1),light:(0,d.transparent)(T,.1),hcDark:null,hcLight:null},i.localize(12,null)),N=(0,d.registerColor)("editorMarkerNavigation.background",{dark:d.editorBackground,light:d.editorBackground,hcDark:d.editorBackground,hcLight:d.editorBackground},i.localize(13,null))}),define(ne[369],se([1,0,25,2,16,33,12,5,21,766,662,30,15,8,62,899]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.NextMarkerAction=e.MarkerController=void 0;let h=u=class{static get(b){return b.getContribution(u.ID)}constructor(b,w,E,I,M){this._markerNavigationService=w,this._contextKeyService=E,this._editorService=I,this._instantiationService=M,this._sessionDispoables=new k.DisposableStore,this._editor=b,this._widgetVisible=p.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(b){if(this._model&&this._model.matches(b))return this._model;let w=!1;return this._model&&(w=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(b),w&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(a.MarkerNavigationWidget,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(E=>{var I,M,P;(!(!((I=this._model)===null||I===void 0)&&I.selected)||!f.Range.containsPosition((M=this._model)===null||M===void 0?void 0:M.selected.marker,E.position))&&((P=this._model)===null||P===void 0||P.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const E=this._model.find(this._editor.getModel().uri,this._widget.position);E?this._widget.updateMarker(E.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(E=>{this._editorService.openCodeEditor({resource:E.resource,options:{pinned:!0,revealIfOpened:!0,selection:f.Range.lift(E).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(b=!0){this._cleanUp(),b&&this._editor.focus()}showAtMarker(b){if(this._editor.hasModel()){const w=this._getOrCreateModel(this._editor.getModel().uri);w.resetIndex(),w.move(!0,this._editor.getModel(),new S.Position(b.startLineNumber,b.startColumn)),w.selected&&this._widget.showAtMarker(w.selected.marker,w.selected.index,w.selected.total)}}nagivate(b,w){var E,I;return we(this,void 0,void 0,function*(){if(this._editor.hasModel()){const M=this._getOrCreateModel(w?void 0:this._editor.getModel().uri);if(M.move(b,this._editor.getModel(),this._editor.getPosition()),!M.selected)return;if(M.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const P=yield this._editorService.openCodeEditor({resource:M.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:M.selected.marker}},this._editor);P&&((E=u.get(P))===null||E===void 0||E.close(),(I=u.get(P))===null||I===void 0||I.nagivate(b,w))}else this._widget.showAtMarker(M.selected.marker,M.selected.index,M.selected.total)}})}};e.MarkerController=h,h.ID="editor.contrib.markerController",e.MarkerController=h=u=ke([fe(1,g.IMarkerNavigationService),fe(2,i.IContextKeyService),fe(3,D.ICodeEditorService),fe(4,n.IInstantiationService)],h);class r extends y.EditorAction{constructor(b,w,E){super(E),this._next=b,this._multiFile=w}run(b,w){var E;return we(this,void 0,void 0,function*(){w.hasModel()&&((E=h.get(w))===null||E===void 0||E.nagivate(this._next,this._multiFile))})}}class c extends r{constructor(){super(!0,!1,{id:c.ID,label:c.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:578,weight:100},menuOpts:{menuId:a.MarkerNavigationWidget.TitleMenu,title:c.LABEL,icon:(0,t.registerIcon)("marker-navigation-next",L.Codicon.arrowDown,C.localize(1,null)),group:"navigation",order:1}})}}e.NextMarkerAction=c,c.ID="editor.action.marker.next",c.LABEL=C.localize(0,null);class o extends r{constructor(){super(!1,!1,{id:o.ID,label:o.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:1602,weight:100},menuOpts:{menuId:a.MarkerNavigationWidget.TitleMenu,title:o.LABEL,icon:(0,t.registerIcon)("marker-navigation-previous",L.Codicon.arrowUp,C.localize(3,null)),group:"navigation",order:2}})}}o.ID="editor.action.marker.prev",o.LABEL=C.localize(2,null);class d extends r{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:C.localize(4,null),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:66,weight:100},menuOpts:{menuId:s.MenuId.MenubarGoMenu,title:C.localize(5,null),group:"6_problem_nav",order:1}})}}class l extends r{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:C.localize(6,null),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:1090,weight:100},menuOpts:{menuId:s.MenuId.MenubarGoMenu,title:C.localize(7,null),group:"6_problem_nav",order:2}})}}(0,y.registerEditorContribution)(h.ID,h,4),(0,y.registerEditorAction)(c),(0,y.registerEditorAction)(o),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(l);const p=new i.RawContextKey("markersNavigationVisible",!1),m=y.EditorCommand.bindToContribution(h.get);(0,y.registerEditorCommand)(new m({id:"closeMarkersNavigation",precondition:p,handler:v=>v.close(),kbOpts:{weight:100+50,kbExpr:_.EditorContextKeys.focus,primary:9,secondary:[1033]}}))}),define(ne[900],se([1,0,7,311,38,6,2,54,45,162,5,40,32,78,41,69,824,138,668,8,34,158,191,23,192,155,447]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReferenceWidget=e.LayoutData=void 0;class b{constructor(P,x){this._editor=P,this._model=x,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new S.DisposableStore,this._callOnModelChange=new S.DisposableStore,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const P=this._editor.getModel();if(P){for(const x of this._model.references)if(x.uri.toString()===P.uri.toString()){this._addDecorations(x.parent);return}}}_addDecorations(P){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const x=[],T=[];for(let A=0,N=P.children.length;A{const N=A.deltaDecorations([],x);for(let F=0;F{N.equals(9)&&(this._keybindingService.dispatchEvent(N,N.target),N.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(E,"ReferencesWidget",this._treeContainer,new u.Delegate,[this._instantiationService.createInstance(u.FileReferencesRenderer),this._instantiationService.createInstance(u.OneReferenceRenderer)],this._instantiationService.createInstance(u.DataSource),T),this._splitView.addView({onDidChange:D.Event.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:N=>{this._preview.layout({height:this._dim.height,width:N})}},k.Sizing.Distribute),this._splitView.addView({onDidChange:D.Event.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:N=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${N}px`,this._tree.layout(this._dim.height,N)}},k.Sizing.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const A=(N,F)=>{N instanceof v.OneReference&&(F==="show"&&this._revealReference(N,!1),this._onDidSelectReference.fire({element:N,kind:F,source:"tree"}))};this._tree.onDidOpen(N=>{N.sideBySide?A(N.element,"side"):N.editorOptions.pinned?A(N.element,"goto"):A(N.element,"show")}),L.hide(this._treeContainer)}_onWidth(P){this._dim&&this._doLayoutBody(this._dim.height,P)}_doLayoutBody(P,x){super._doLayoutBody(P,x),this._dim=new L.Dimension(x,P),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(x),this._splitView.resizeView(0,x*this.layoutData.ratio)}setSelection(P){return this._revealReference(P,!0).then(()=>{this._model&&(this._tree.setSelection([P]),this._tree.setFocus([P]))})}setModel(P){return this._disposeOnNewModel.clear(),this._model=P,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=r.localize(1,null),L.show(this._messageContainer),Promise.resolve(void 0)):(L.hide(this._messageContainer),this._decorationsManager=new b(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(P=>this._tree.rerender(P))),this._disposeOnNewModel.add(this._preview.onMouseDown(P=>{const{event:x,target:T}=P;if(x.detail!==2)return;const A=this._getFocusedReference();A&&this._onDidSelectReference.fire({element:{uri:A.uri,range:T.range},kind:x.ctrlKey||x.metaKey||x.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),L.show(this._treeContainer),L.show(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[P]=this._tree.getFocus();if(P instanceof v.OneReference)return P;if(P instanceof v.FileReferences&&P.children.length>0)return P.children[0]}revealReference(P){return we(this,void 0,void 0,function*(){yield this._revealReference(P,!1),this._onDidSelectReference.fire({element:P,kind:"goto",source:"tree"})})}_revealReference(P,x){return we(this,void 0,void 0,function*(){if(this._revealedReference===P)return;this._revealedReference=P,P.uri.scheme!==f.Schemas.inMemory?this.setTitle((0,_.basenameOrAuthority)(P.uri),this._uriLabel.getUriLabel((0,_.dirname)(P.uri))):this.setTitle(r.localize(2,null));const T=this._textModelResolverService.createModelReference(P.uri);this._tree.getInput()===P.parent?this._tree.reveal(P):(x&&this._tree.reveal(P.parent),yield this._tree.expand(P.parent),this._tree.reveal(P));const A=yield T;if(!this._model){A.dispose();return}(0,S.dispose)(this._previewModelReference);const N=A.object;if(N){const F=this._preview.getModel()===N.textEditorModel?0:1,O=C.Range.lift(P.range).collapseToStart();this._previewModelReference=A,this._preview.setModel(N.textEditorModel),this._preview.setSelection(O),this._preview.revealRangeInCenter(O,F)}else this._preview.setModel(this._previewNotAvailableMessage),A.dispose()})}};e.ReferenceWidget=I,e.ReferenceWidget=I=ke([fe(3,p.IThemeService),fe(4,a.ITextModelService),fe(5,c.IInstantiationService),fe(6,h.IPeekViewService),fe(7,d.ILabelService),fe(8,m.IUndoRedoService),fe(9,o.IKeybindingService),fe(10,t.ILanguageService),fe(11,i.ILanguageConfigurationService)],I)}),define(ne[370],se([1,0,13,9,63,2,33,12,5,138,666,27,28,15,8,118,191,43,87,155,900]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.ReferencesController=e.ctxReferenceSearchVisible=void 0,e.ctxReferenceSearchVisible=new n.RawContextKey("referenceSearchVisible",!1,C.localize(0,null));let l=d=class{static get(v){return v.getContribution(d.ID)}constructor(v,b,w,E,I,M,P,x){this._defaultTreeKeyboardSupport=v,this._editor=b,this._editorService=E,this._notificationService=I,this._instantiationService=M,this._storageService=P,this._configurationService=x,this._disposables=new D.DisposableStore,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=e.ctxReferenceSearchVisible.bindTo(w)}dispose(){var v,b;this._referenceSearchVisible.reset(),this._disposables.dispose(),(v=this._widget)===null||v===void 0||v.dispose(),(b=this._model)===null||b===void 0||b.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(v,b,w){let E;if(this._widget&&(E=this._widget.position),this.closeWidget(),E&&v.containsPosition(E))return;this._peekMode=w,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const I="peekViewLayout",M=o.LayoutData.fromJSON(this._storageService.get(I,0,"{}"));this._widget=this._instantiationService.createInstance(o.ReferenceWidget,this._editor,this._defaultTreeKeyboardSupport,M),this._widget.setTitle(C.localize(1,null)),this._widget.show(v),this._disposables.add(this._widget.onDidClose(()=>{b.cancel(),this._widget&&(this._storageService.store(I,JSON.stringify(this._widget.layoutData),0,1),this._widget=void 0),this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(x=>{const{element:T,kind:A}=x;if(T)switch(A){case"open":(x.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(T,!1,!1);break;case"side":this.openReference(T,!0,!1);break;case"goto":w?this._gotoReference(T,!0):this.openReference(T,!1,!0);break}}));const P=++this._requestIdPool;b.then(x=>{var T;if(P!==this._requestIdPool||!this._widget){x.dispose();return}return(T=this._model)===null||T===void 0||T.dispose(),this._model=x,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(C.localize(2,null,this._model.title,this._model.references.length));const A=this._editor.getModel().uri,N=new f.Position(v.startLineNumber,v.startColumn),F=this._model.nearestReference(A,N);if(F)return this._widget.setSelection(F).then(()=>{this._widget&&this._editor.getOption(85)==="editor"&&this._widget.focusOnPreviewEditor()})}})},x=>{this._notificationService.error(x)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}goToNextOrPreviousReference(v){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!this._model||!this._widget)return;const b=this._widget.position;if(!b)return;const w=this._model.nearestReference(this._editor.getModel().uri,b);if(!w)return;const E=this._model.nextOrPreviousReference(w,v),I=this._editor.hasTextFocus(),M=this._widget.isPreviewEditorFocused();yield this._widget.setSelection(E),yield this._gotoReference(E,!1),I?this._editor.focus():this._widget&&M&&this._widget.focusOnPreviewEditor()})}revealReference(v){return we(this,void 0,void 0,function*(){!this._editor.hasModel()||!this._model||!this._widget||(yield this._widget.revealReference(v))})}closeWidget(v=!0){var b,w;(b=this._widget)===null||b===void 0||b.dispose(),(w=this._model)===null||w===void 0||w.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,v&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(v,b){var w;(w=this._widget)===null||w===void 0||w.hide(),this._ignoreModelChangeEvent=!0;const E=_.Range.lift(v.range).collapseToStart();return this._editorService.openCodeEditor({resource:v.uri,options:{selection:E,selectionSource:"code.jump",pinned:b}},this._editor).then(I=>{var M;if(this._ignoreModelChangeEvent=!1,!I||!this._widget){this.closeWidget();return}if(this._editor===I)this._widget.show(E),this._widget.focusOnReferenceTree();else{const P=d.get(I),x=this._model.clone();this.closeWidget(),I.focus(),P?.toggleWidget(E,(0,L.createCancelablePromise)(T=>Promise.resolve(x)),(M=this._peekMode)!==null&&M!==void 0?M:!1)}},I=>{this._ignoreModelChangeEvent=!1,(0,k.onUnexpectedError)(I)})}openReference(v,b,w){b||this.closeWidget();const{uri:E,range:I}=v;this._editorService.openCodeEditor({resource:E,options:{selection:I,selectionSource:"code.jump",pinned:w}},this._editor,b)}};e.ReferencesController=l,l.ID="editor.contrib.referencesController",e.ReferencesController=l=d=ke([fe(2,n.IContextKeyService),fe(3,S.ICodeEditorService),fe(4,h.INotificationService),fe(5,t.IInstantiationService),fe(6,r.IStorageService),fe(7,i.IConfigurationService)],l);function p(m,v){const b=(0,g.getOuterEditor)(m);if(!b)return;const w=l.get(b);w&&v(w)}a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:(0,y.KeyChord)(2089,60),when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.changeFocusBetweenPreviewAndReferences()})}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToNextReference",weight:100-10,primary:62,secondary:[70],when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.goToNextOrPreviousReference(!0)})}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:100-10,primary:1086,secondary:[1094],when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.goToNextOrPreviousReference(!1)})}}),s.CommandsRegistry.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference"),s.CommandsRegistry.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference"),s.CommandsRegistry.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch"),s.CommandsRegistry.registerCommand("closeReferenceSearch",m=>p(m,v=>v.closeWidget())),a.KeybindingsRegistry.registerKeybindingRule({id:"closeReferenceSearch",weight:100-101,primary:9,secondary:[1033],when:n.ContextKeyExpr.and(g.PeekContext.inPeekEditor,n.ContextKeyExpr.not("config.editor.stablePeek"))}),a.KeybindingsRegistry.registerKeybindingRule({id:"closeReferenceSearch",weight:200+50,primary:9,secondary:[1033],when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,n.ContextKeyExpr.not("config.editor.stablePeek"))}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,u.WorkbenchListFocusContextKey,u.WorkbenchTreeElementCanCollapse.negate(),u.WorkbenchTreeElementCanExpand.negate()),handler(m){var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.revealReference(w[0]))}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,u.WorkbenchListFocusContextKey,u.WorkbenchTreeElementCanCollapse.negate(),u.WorkbenchTreeElementCanExpand.negate()),handler(m){var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.openReference(w[0],!0,!0))}}),s.CommandsRegistry.registerCommand("openReference",m=>{var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.openReference(w[0],!1,!0))})}),define(ne[257],se([1,0,49,13,63,20,22,104,177,16,33,162,12,5,21,29,370,155,804,190,138,664,30,27,15,8,43,77,247,18,46,238]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P){"use strict";var x,T,A,N,F,O,W,U;Object.defineProperty(e,"__esModule",{value:!0}),e.DefinitionAction=e.SymbolNavigationAction=e.SymbolNavigationAnchor=void 0,l.MenuRegistry.appendMenuItem(l.MenuId.EditorContext,{submenu:l.MenuId.EditorContextPeek,title:d.localize(0,null),group:"navigation",order:100});class j{static is(V){return!V||typeof V!="object"?!1:!!(V instanceof j||i.Position.isIPosition(V.position)&&V.model)}constructor(V,Y){this.model=V,this.position=Y}}e.SymbolNavigationAnchor=j;class R extends g.EditorAction2{static all(){return R._allSymbolNavigationCommands.values()}static _patchConfig(V){const Y=Object.assign(Object.assign({},V),{f1:!0});if(Y.menu)for(const ie of M.Iterable.wrap(Y.menu))(ie.id===l.MenuId.EditorContext||ie.id===l.MenuId.EditorContextPeek)&&(ie.when=m.ContextKeyExpr.and(V.precondition,ie.when));return Y}constructor(V,Y){super(R._patchConfig(Y)),this.configuration=V,R._allSymbolNavigationCommands.set(Y.id,this)}runEditorCommand(V,Y,ie,ae){if(!Y.hasModel())return Promise.resolve(void 0);const ce=V.get(b.INotificationService),de=V.get(C.ICodeEditorService),he=V.get(w.IEditorProgressService),ue=V.get(r.ISymbolNavigationService),te=V.get(I.ILanguageFeaturesService),q=V.get(v.IInstantiationService),z=Y.getModel(),ee=Y.getPosition(),$=j.is(ie)?ie:new j(z,ee),re=new f.EditorStateCancellationTokenSource(Y,5),oe=(0,k.raceCancellation)(this._getLocationModel(te,$.model,$.position,re.token),re.token).then(ge=>we(this,void 0,void 0,function*(){var ve;if(!ge||re.token.isCancellationRequested)return;(0,L.alert)(ge.ariaMessage);let Se;if(ge.referenceAt(z.uri,ee)){const De=this._getAlternativeCommand(Y);!R._activeAlternativeCommands.has(De)&&R._allSymbolNavigationCommands.has(De)&&(Se=R._allSymbolNavigationCommands.get(De))}const Le=ge.references.length;if(Le===0){if(!this.configuration.muteMessage){const De=z.getWordAtPosition(ee);(ve=c.MessageController.get(Y))===null||ve===void 0||ve.showMessage(this._getNoResultFoundMessage(De),ee)}}else if(Le===1&&Se)R._activeAlternativeCommands.add(this.desc.id),q.invokeFunction(De=>Se.runEditorCommand(De,Y,ie,ae).finally(()=>{R._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(de,ue,Y,ge,ae)}),ge=>{ce.error(ge)}).finally(()=>{re.dispose()});return he.showWhile(oe,250),oe}_onResult(V,Y,ie,ae,ce){return we(this,void 0,void 0,function*(){const de=this._getGoToPreference(ie);if(!(ie instanceof s.EmbeddedCodeEditorWidget)&&(this.configuration.openInPeek||de==="peek"&&ae.references.length>1))this._openInPeek(ie,ae,ce);else{const he=ae.firstReference(),ue=ae.references.length>1&&de==="gotoAndPeek",te=yield this._openReference(ie,V,he,this.configuration.openToSide,!ue);ue&&te?this._openInPeek(te,ae,ce):ae.dispose(),de==="goto"&&Y.put(he)}})}_openReference(V,Y,ie,ae,ce){return we(this,void 0,void 0,function*(){let de;if((0,a.isLocationLink)(ie)&&(de=ie.targetSelectionRange),de||(de=ie.range),!de)return;const he=yield Y.openCodeEditor({resource:ie.uri,options:{selection:n.Range.collapseToStart(de),selectionRevealType:3,selectionSource:"code.jump"}},V,ae);if(he){if(ce){const ue=he.getModel(),te=he.createDecorationsCollection([{range:de,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{he.getModel()===ue&&te.clear()},350)}return he}})}_openInPeek(V,Y,ie){const ae=u.ReferencesController.get(V);ae&&V.hasModel()?ae.toggleWidget(ie??V.getSelection(),(0,k.createCancelablePromise)(ce=>Promise.resolve(Y)),this.configuration.openInPeek):Y.dispose()}}e.SymbolNavigationAction=R,R._allSymbolNavigationCommands=new Map,R._activeAlternativeCommands=new Set;class K extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getDefinitionsAtPosition)(V.definitionProvider,Y,ie,ae),d.localize(1,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(2,null,V.word):d.localize(3,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeDefinitionCommand}_getGoToPreference(V){return V.getOption(57).multipleDefinitions}}e.DefinitionAction=K,(0,l.registerAction2)((x=class extends K{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:x.id,title:{value:d.localize(4,null),original:"Go to Definition",mnemonicTitle:d.localize(5,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:70,weight:100},{when:m.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,P.IsWebContext),primary:2118,weight:100}],menu:[{id:l.MenuId.EditorContext,group:"navigation",order:1.1},{id:l.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),p.CommandsRegistry.registerCommandAlias("editor.action.goToDeclaration",x.id)}},x.id="editor.action.revealDefinition",x)),(0,l.registerAction2)((T=class extends K{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:T.id,title:{value:d.localize(6,null),original:"Open Definition to the Side"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,70),weight:100},{when:m.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,P.IsWebContext),primary:(0,y.KeyChord)(2089,2118),weight:100}]}),p.CommandsRegistry.registerCommandAlias("editor.action.openDeclarationToTheSide",T.id)}},T.id="editor.action.revealDefinitionAside",T)),(0,l.registerAction2)((A=class extends K{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:A.id,title:{value:d.localize(7,null),original:"Peek Definition"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:l.MenuId.EditorContextPeek,group:"peek",order:2}}),p.CommandsRegistry.registerCommandAlias("editor.action.previewDeclaration",A.id)}},A.id="editor.action.peekDefinition",A));class G extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getDeclarationsAtPosition)(V.declarationProvider,Y,ie,ae),d.localize(8,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(9,null,V.word):d.localize(10,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeDeclarationCommand}_getGoToPreference(V){return V.getOption(57).multipleDeclarations}}(0,l.registerAction2)((N=class extends G{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:N.id,title:{value:d.localize(11,null),original:"Go to Declaration",mnemonicTitle:d.localize(12,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:[{id:l.MenuId.EditorContext,group:"navigation",order:1.3},{id:l.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(13,null,V.word):d.localize(14,null)}},N.id="editor.action.revealDeclaration",N)),(0,l.registerAction2)(class extends G{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:{value:d.localize(15,null),original:"Peek Declaration"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:"peek",order:3}})}});class Z extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getTypeDefinitionsAtPosition)(V.typeDefinitionProvider,Y,ie,ae),d.localize(16,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(17,null,V.word):d.localize(18,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeTypeDefinitionCommand}_getGoToPreference(V){return V.getOption(57).multipleTypeDefinitions}}(0,l.registerAction2)((F=class extends Z{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:F.ID,title:{value:d.localize(19,null),original:"Go to Type Definition",mnemonicTitle:d.localize(20,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasTypeDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:0,weight:100},menu:[{id:l.MenuId.EditorContext,group:"navigation",order:1.4},{id:l.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},F.ID="editor.action.goToTypeDefinition",F)),(0,l.registerAction2)((O=class extends Z{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:O.ID,title:{value:d.localize(21,null),original:"Peek Type Definition"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasTypeDefinitionProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:"peek",order:4}})}},O.ID="editor.action.peekTypeDefinition",O));class J extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getImplementationsAtPosition)(V.implementationProvider,Y,ie,ae),d.localize(22,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(23,null,V.word):d.localize(24,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeImplementationCommand}_getGoToPreference(V){return V.getOption(57).multipleImplementations}}(0,l.registerAction2)((W=class extends J{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:W.ID,title:{value:d.localize(25,null),original:"Go to Implementations",mnemonicTitle:d.localize(26,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasImplementationProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:2118,weight:100},menu:[{id:l.MenuId.EditorContext,group:"navigation",order:1.45},{id:l.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},W.ID="editor.action.goToImplementation",W)),(0,l.registerAction2)((U=class extends J{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:U.ID,title:{value:d.localize(27,null),original:"Peek Implementations"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasImplementationProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:3142,weight:100},menu:{id:l.MenuId.EditorContextPeek,group:"peek",order:5}})}},U.ID="editor.action.peekImplementation",U));class X extends R{_getNoResultFoundMessage(V){return V?d.localize(28,null,V.word):d.localize(29,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeReferenceCommand}_getGoToPreference(V){return V.getOption(57).multipleReferences}}(0,l.registerAction2)(class extends X{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{value:d.localize(30,null),original:"Go to References",mnemonicTitle:d.localize(31,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:1094,weight:100},menu:[{id:l.MenuId.EditorContext,group:"navigation",order:1.45},{id:l.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getReferencesAtPosition)(V.referenceProvider,Y,ie,!0,ae),d.localize(32,null))})}}),(0,l.registerAction2)(class extends X{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:{value:d.localize(33,null),original:"Peek References"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:"peek",order:6}})}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getReferencesAtPosition)(V.referenceProvider,Y,ie,!1,ae),d.localize(34,null))})}});class H extends R{constructor(V,Y,ie){super(V,{id:"editor.action.goToLocation",title:{value:d.localize(35,null),original:"Go to Any Symbol"},precondition:m.ContextKeyExpr.and(o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated())}),this._references=Y,this._gotoMultipleBehaviour=ie}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(this._references,d.localize(36,null))})}_getNoResultFoundMessage(V){return V&&d.localize(37,null,V.word)||""}_getGoToPreference(V){var Y;return(Y=this._gotoMultipleBehaviour)!==null&&Y!==void 0?Y:V.getOption(57).multipleReferences}_getAlternativeCommand(){return""}}p.CommandsRegistry.registerCommand({id:"editor.action.goToLocations",description:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:S.URI},{name:"position",description:"The position at which to start",constraint:i.Position.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:(B,V,Y,ie,ae,ce,de)=>we(void 0,void 0,void 0,function*(){(0,D.assertType)(S.URI.isUri(V)),(0,D.assertType)(i.Position.isIPosition(Y)),(0,D.assertType)(Array.isArray(ie)),(0,D.assertType)(typeof ae>"u"||typeof ae=="string"),(0,D.assertType)(typeof de>"u"||typeof de=="boolean");const he=B.get(C.ICodeEditorService),ue=yield he.openCodeEditor({resource:V},he.getFocusedCodeEditor());if((0,_.isCodeEditor)(ue))return ue.setPosition(Y),ue.revealPositionInCenterIfOutsideViewport(Y,0),ue.invokeWithinContext(te=>{const q=new class extends H{_getNoResultFoundMessage(z){return ce||super._getNoResultFoundMessage(z)}}({muteMessage:!ce,openInPeek:!!de,openToSide:!1},ie,ae);te.get(v.IInstantiationService).invokeFunction(q.run.bind(q),ue)})})}),p.CommandsRegistry.registerCommand({id:"editor.action.peekLocations",description:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:S.URI},{name:"position",description:"The position at which to start",constraint:i.Position.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"}]},handler:(B,V,Y,ie,ae)=>we(void 0,void 0,void 0,function*(){B.get(p.ICommandService).executeCommand("editor.action.goToLocations",V,Y,ie,ae,void 0,!0)})}),p.CommandsRegistry.registerCommand({id:"editor.action.findReferences",handler:(B,V,Y)=>{(0,D.assertType)(S.URI.isUri(V)),(0,D.assertType)(i.Position.isIPosition(Y));const ie=B.get(I.ILanguageFeaturesService),ae=B.get(C.ICodeEditorService);return ae.openCodeEditor({resource:V},ae.getFocusedCodeEditor()).then(ce=>{if(!(0,_.isCodeEditor)(ce)||!ce.hasModel())return;const de=u.ReferencesController.get(ce);if(!de)return;const he=(0,k.createCancelablePromise)(te=>(0,E.getReferencesAtPosition)(ie.referenceProvider,ce.getModel(),i.Position.lift(Y),!1,te).then(q=>new h.ReferencesModel(q,d.localize(38,null)))),ue=new n.Range(Y.lineNumber,Y.column,Y.lineNumber,Y.column);return Promise.resolve(de.toggleWidget(ue,he,!1))})}}),p.CommandsRegistry.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations")}),define(ne[371],se([1,0,13,9,55,2,104,16,5,41,69,186,138,665,15,257,247,18,40,446]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.GotoDefinitionAtPositionEditorContribution=void 0;let o=c=class{constructor(l,p,m,v){this.textModelResolverService=p,this.languageService=m,this.languageFeaturesService=v,this.toUnhook=new D.DisposableStore,this.toUnhookForKeyboard=new D.DisposableStore,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=l,this.linkDecorations=this.editor.createDecorationsCollection();const b=new s.ClickLinkGesture(l);this.toUnhook.add(b),this.toUnhook.add(b.onMouseMoveOrRelevantKeyDown(([w,E])=>{this.startFindDefinitionFromMouse(w,E??void 0)})),this.toUnhook.add(b.onExecute(w=>{this.isEnabled(w)&&this.gotoDefinition(w.target.position,w.hasSideBySideModifier).catch(E=>{(0,k.onUnexpectedError)(E)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(b.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(l){return l.getContribution(c.ID)}startFindDefinitionFromCursor(l){return we(this,void 0,void 0,function*(){yield this.startFindDefinition(l),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(p=>{p&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))})}startFindDefinitionFromMouse(l,p){if(l.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(l,p)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const m=l.target.position;this.startFindDefinition(m)}startFindDefinition(l){var p;return we(this,void 0,void 0,function*(){this.toUnhookForKeyboard.clear();const m=l?(p=this.editor.getModel())===null||p===void 0?void 0:p.getWordAtPosition(l):null;if(!m){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===m.startColumn&&this.currentWordAtPosition.endColumn===m.endColumn&&this.currentWordAtPosition.word===m.word)return;this.currentWordAtPosition=m;const v=new S.EditorState(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,L.createCancelablePromise)(E=>this.findDefinition(l,E));let b;try{b=yield this.previousPromise}catch(E){(0,k.onUnexpectedError)(E);return}if(!b||!b.length||!v.validate(this.editor)){this.removeLinkDecorations();return}const w=b[0].originSelectionRange?_.Range.lift(b[0].originSelectionRange):new _.Range(l.lineNumber,m.startColumn,l.lineNumber,m.endColumn);if(b.length>1){let E=w;for(const{originSelectionRange:I}of b)I&&(E=_.Range.plusRange(E,I));this.addDecoration(E,new y.MarkdownString().appendText(n.localize(0,null,b.length)))}else{const E=b[0];if(!E.uri)return;this.textModelResolverService.createModelReference(E.uri).then(I=>{if(!I.object||!I.object.textEditorModel){I.dispose();return}const{object:{textEditorModel:M}}=I,{startLineNumber:P}=E.range;if(P<1||P>M.getLineCount()){I.dispose();return}const x=this.getPreviewValue(M,P,E),T=this.languageService.guessLanguageIdByFilepathOrFirstLine(M.uri);this.addDecoration(w,x?new y.MarkdownString().appendCodeblock(T||"",x):void 0),I.dispose()})}})}getPreviewValue(l,p,m){let v=m.range;return v.endLineNumber-v.startLineNumber>=c.MAX_SOURCE_PREVIEW_LINES&&(v=this.getPreviewRangeBasedOnIndentation(l,p)),this.stripIndentationFromPreviewRange(l,p,v)}stripIndentationFromPreviewRange(l,p,m){let b=l.getLineFirstNonWhitespaceColumn(p);for(let E=p+1;E{const v=!p&&this.editor.getOption(86)&&!this.isInPeekEditor(m);return new a.DefinitionAction({openToSide:p,openInPeek:v,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(m)})}isInPeekEditor(l){const p=l.get(t.IContextKeyService);return i.PeekContext.inPeekEditor.getValue(p)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}};e.GotoDefinitionAtPositionEditorContribution=o,o.ID="editor.contrib.gotodefinitionatposition",o.MAX_SOURCE_PREVIEW_LINES=8,e.GotoDefinitionAtPositionEditorContribution=o=c=ke([fe(1,C.ITextModelService),fe(2,g.ILanguageService),fe(3,h.ILanguageFeaturesService)],o),(0,f.registerEditorContribution)(o.ID,o,2)}),define(ne[901],se([1,0,7,14,13,9,2,45,5,18,233,137,250,113,369,673,97,56,77]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerHoverParticipant=e.MarkerHover=void 0;const c=L.$;class o{constructor(m,v,b){this.owner=m,this.range=v,this.marker=b}isValidForHoverAnchor(m){return m.type===1&&this.range.startColumn<=m.range.startColumn&&this.range.endColumn>=m.range.endColumn}}e.MarkerHover=o;const d={type:1,filter:{include:n.CodeActionKind.QuickFix},triggerAction:n.CodeActionTriggerSource.QuickFixHover};let l=class{constructor(m,v,b,w){this._editor=m,this._markerDecorationsService=v,this._openerService=b,this._languageFeaturesService=w,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(m,v){if(!this._editor.hasModel()||m.type!==1&&!m.supportsMarkerHover)return[];const b=this._editor.getModel(),w=m.range.startLineNumber,E=b.getLineMaxColumn(w),I=[];for(const M of v){const P=M.range.startLineNumber===w?M.range.startColumn:1,x=M.range.endLineNumber===w?M.range.endColumn:E,T=this._markerDecorationsService.getMarker(b.uri,M);if(!T)continue;const A=new _.Range(m.range.startLineNumber,P,m.range.startLineNumber,x);I.push(new o(this,A,T))}return I}renderHoverParts(m,v){if(!v.length)return S.Disposable.None;const b=new S.DisposableStore;v.forEach(E=>m.fragment.appendChild(this.renderMarkerHover(E,b)));const w=v.length===1?v[0]:v.sort((E,I)=>u.MarkerSeverity.compare(E.marker.severity,I.marker.severity))[0];return this.renderMarkerStatusbar(m,w,b),b}renderMarkerHover(m,v){const b=c("div.hover-row"),w=L.append(b,c("div.marker.hover-contents")),{source:E,message:I,code:M,relatedInformation:P}=m.marker;this._editor.applyFontInfo(w);const x=L.append(w,c("span"));if(x.style.whiteSpace="pre-wrap",x.innerText=I,E||M)if(M&&typeof M!="string"){const T=c("span");if(E){const O=L.append(T,c("span"));O.innerText=E}const A=L.append(T,c("a.code-link"));A.setAttribute("href",M.target.toString()),v.add(L.addDisposableListener(A,"click",O=>{this._openerService.open(M.target,{allowCommands:!0}),O.preventDefault(),O.stopPropagation()}));const N=L.append(A,c("span"));N.innerText=M.value;const F=L.append(w,T);F.style.opacity="0.6",F.style.paddingLeft="6px"}else{const T=L.append(w,c("span"));T.style.opacity="0.6",T.style.paddingLeft="6px",T.innerText=E&&M?`${E}(${M})`:E||`(${M})`}if((0,k.isNonEmptyArray)(P))for(const{message:T,resource:A,startLineNumber:N,startColumn:F}of P){const O=L.append(w,c("div"));O.style.marginTop="8px";const W=L.append(O,c("a"));W.innerText=`${(0,f.basename)(A)}(${N}, ${F}): `,W.style.cursor="pointer",v.add(L.addDisposableListener(W,"click",j=>{j.stopPropagation(),j.preventDefault(),this._openerService&&this._openerService.open(A,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:N,startColumn:F}}}).catch(D.onUnexpectedError)}));const U=L.append(O,c("span"));U.innerText=T,this._editor.applyFontInfo(U)}return b}renderMarkerStatusbar(m,v,b){if((v.marker.severity===u.MarkerSeverity.Error||v.marker.severity===u.MarkerSeverity.Warning||v.marker.severity===u.MarkerSeverity.Info)&&m.statusBar.addAction({label:a.localize(0,null),commandId:t.NextMarkerAction.ID,run:()=>{var w;m.hide(),(w=t.MarkerController.get(this._editor))===null||w===void 0||w.showAtMarker(v.marker),this._editor.focus()}}),!this._editor.getOption(89)){const w=m.statusBar.append(c("div"));this.recentMarkerCodeActionsInfo&&(u.IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker)===u.IMarkerData.makeKey(v.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(w.textContent=a.localize(1,null)):this.recentMarkerCodeActionsInfo=void 0);const E=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?S.Disposable.None:b.add((0,y.disposableTimeout)(()=>w.textContent=a.localize(2,null),200));w.textContent||(w.textContent=String.fromCharCode(160));const I=this.getCodeActions(v.marker);b.add((0,S.toDisposable)(()=>I.cancel())),I.then(M=>{if(E.dispose(),this.recentMarkerCodeActionsInfo={marker:v.marker,hasCodeActions:M.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){M.dispose(),w.textContent=a.localize(3,null);return}w.style.display="none";let P=!1;b.add((0,S.toDisposable)(()=>{P||M.dispose()})),m.statusBar.addAction({label:a.localize(4,null),commandId:s.quickFixCommandId,run:x=>{P=!0;const T=i.CodeActionController.get(this._editor),A=L.getDomNodePagePosition(x);m.hide(),T?.showCodeActions(d,M,{x:A.left,y:A.top,width:A.width,height:A.height})}})},D.onUnexpectedError)}}getCodeActions(m){return(0,y.createCancelablePromise)(v=>(0,s.getCodeActions)(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new _.Range(m.startLineNumber,m.startColumn,m.endLineNumber,m.endColumn),d,r.Progress.None,v))}};e.MarkerHoverParticipant=l,e.MarkerHoverParticipant=l=ke([fe(1,C.IMarkerDecorationsService),fe(2,h.IOpenerService),fe(3,g.ILanguageFeaturesService)],l)}),define(ne[372],se([1,0,63,2,16,5,21,41,371,367,781,8,56,31,23,103,248,901,253,34,671,448]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.ModesHoverController=void 0;const l=!1;let p=d=class{static get(N){return N.getContribution(d.ID)}constructor(N,F,O,W,U){this._editor=N,this._instantiationService=F,this._openerService=O,this._languageService=W,this._keybindingService=U,this._toUnhook=new k.DisposableStore,this._hoverActivatedByColorDecoratorClick=!1,this._isMouseDown=!1,this._hoverClicked=!1,this._contentWidget=null,this._glyphWidget=null,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration(j=>{j.hasChanged(59)&&(this._unhookEvents(),this._hookEvents())})}_hookEvents(){const N=()=>this._hideWidgets(),F=this._editor.getOption(59);this._isHoverEnabled=F.enabled,this._isHoverSticky=F.sticky,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown(O=>this._onEditorMouseDown(O))),this._toUnhook.add(this._editor.onMouseUp(O=>this._onEditorMouseUp(O))),this._toUnhook.add(this._editor.onMouseMove(O=>this._onEditorMouseMove(O))),this._toUnhook.add(this._editor.onKeyDown(O=>this._onKeyDown(O)))):(this._toUnhook.add(this._editor.onMouseMove(O=>this._onEditorMouseMove(O))),this._toUnhook.add(this._editor.onKeyDown(O=>this._onKeyDown(O)))),this._toUnhook.add(this._editor.onMouseLeave(O=>this._onEditorMouseLeave(O))),this._toUnhook.add(this._editor.onDidChangeModel(N)),this._toUnhook.add(this._editor.onDidScrollChange(O=>this._onEditorScrollChanged(O)))}_unhookEvents(){this._toUnhook.clear()}_onEditorScrollChanged(N){(N.scrollTopChanged||N.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(N){var F;this._isMouseDown=!0;const O=N.target;if(O.type===9&&O.detail===g.ContentHoverWidget.ID){this._hoverClicked=!0;return}O.type===12&&O.detail===C.MarginHoverWidget.ID||(O.type!==12&&(this._hoverClicked=!1),!((F=this._contentWidget)===null||F===void 0)&&F.widget.isResizing||this._hideWidgets())}_onEditorMouseUp(N){this._isMouseDown=!1}_onEditorMouseLeave(N){var F,O;const W=N.event.browserEvent.relatedTarget;!((F=this._contentWidget)===null||F===void 0)&&F.widget.isResizing||!((O=this._contentWidget)===null||O===void 0)&&O.containsNode(W)||l||this._hideWidgets()}_onEditorMouseMove(N){var F,O,W,U,j,R,K,G,Z,J,X;const H=N.target;if(!((F=this._contentWidget)===null||F===void 0)&&F.isFocused||!((O=this._contentWidget)===null||O===void 0)&&O.isResizing||this._isMouseDown&&this._hoverClicked||this._isHoverSticky&&H.type===9&&H.detail===g.ContentHoverWidget.ID||this._isHoverSticky&&(!((W=this._contentWidget)===null||W===void 0)&&W.containsNode((U=N.event.browserEvent.view)===null||U===void 0?void 0:U.document.activeElement))&&!(!((R=(j=N.event.browserEvent.view)===null||j===void 0?void 0:j.getSelection())===null||R===void 0)&&R.isCollapsed)||!this._isHoverSticky&&H.type===9&&H.detail===g.ContentHoverWidget.ID&&(!((K=this._contentWidget)===null||K===void 0)&&K.isColorPickerVisible)||this._isHoverSticky&&H.type===12&&H.detail===C.MarginHoverWidget.ID||this._isHoverSticky&&(!((G=this._contentWidget)===null||G===void 0)&&G.isVisibleFromKeyboard))return;const B=(Z=H.element)===null||Z===void 0?void 0:Z.classList.contains("colorpicker-color-decoration"),V=this._editor.getOption(145);if(B&&(V==="click"&&!this._hoverActivatedByColorDecoratorClick||V==="hover"&&!this._isHoverEnabled&&!l||V==="clickAndHover"&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick)||!B&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick){this._hideWidgets();return}if(this._getOrCreateContentWidget().maybeShowAt(N)){(J=this._glyphWidget)===null||J===void 0||J.hide();return}if(H.type===2&&H.position){(X=this._contentWidget)===null||X===void 0||X.hide(),this._glyphWidget||(this._glyphWidget=new C.MarginHoverWidget(this._editor,this._languageService,this._openerService)),this._glyphWidget.startShowingAt(H.position.lineNumber);return}l||this._hideWidgets()}_onKeyDown(N){var F;if(!this._editor.hasModel())return;const O=this._keybindingService.softDispatch(N,this._editor.getDomNode()),W=O.kind===1||O.kind===2&&O.commandId==="editor.action.showHover"&&((F=this._contentWidget)===null||F===void 0?void 0:F.isVisible);N.keyCode!==5&&N.keyCode!==6&&N.keyCode!==57&&N.keyCode!==4&&!W&&this._hideWidgets()}_hideWidgets(){var N,F,O;l||this._isMouseDown&&this._hoverClicked&&(!((N=this._contentWidget)===null||N===void 0)&&N.isColorPickerVisible)||r.InlineSuggestionHintsContentWidget.dropDownVisible||(this._hoverActivatedByColorDecoratorClick=!1,this._hoverClicked=!1,(F=this._glyphWidget)===null||F===void 0||F.hide(),(O=this._contentWidget)===null||O===void 0||O.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(g.ContentHoverController,this._editor)),this._contentWidget}showContentHover(N,F,O,W,U=!1){this._hoverActivatedByColorDecoratorClick=U,this._getOrCreateContentWidget().startShowingAtRange(N,F,O,W)}focus(){var N;(N=this._contentWidget)===null||N===void 0||N.focus()}scrollUp(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollUp()}scrollDown(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollDown()}scrollLeft(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollLeft()}scrollRight(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollRight()}pageUp(){var N;(N=this._contentWidget)===null||N===void 0||N.pageUp()}pageDown(){var N;(N=this._contentWidget)===null||N===void 0||N.pageDown()}goToTop(){var N;(N=this._contentWidget)===null||N===void 0||N.goToTop()}goToBottom(){var N;(N=this._contentWidget)===null||N===void 0||N.goToBottom()}get isColorPickerVisible(){var N;return(N=this._contentWidget)===null||N===void 0?void 0:N.isColorPickerVisible}get isHoverVisible(){var N;return(N=this._contentWidget)===null||N===void 0?void 0:N.isVisible}dispose(){var N,F;this._unhookEvents(),this._toUnhook.dispose(),this._didChangeConfigurationHandler.dispose(),(N=this._glyphWidget)===null||N===void 0||N.dispose(),(F=this._contentWidget)===null||F===void 0||F.dispose()}};e.ModesHoverController=p,p.ID="editor.contrib.hover",e.ModesHoverController=p=d=ke([fe(1,s.IInstantiationService),fe(2,i.IOpenerService),fe(3,f.ILanguageService),fe(4,c.IKeybindingService)],p);class m extends y.EditorAction{constructor(){super({id:"editor.action.showHover",label:o.localize(0,null),description:{description:"Show or Focus Hover",args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if when triggered with the keyboard, the hover should take focus immediately.",type:"boolean",default:!1}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:S.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2087),weight:100}})}run(N,F,O){if(!F.hasModel())return;const W=p.get(F);if(!W)return;const U=F.getPosition(),j=new D.Range(U.lineNumber,U.column,U.lineNumber,U.column),R=F.getOption(2)===2||!!O?.focus;W.isHoverVisible?W.focus():W.showContentHover(j,1,1,R)}}class v extends y.EditorAction{constructor(){super({id:"editor.action.showDefinitionPreviewHover",label:o.localize(1,null),alias:"Show Definition Preview Hover",precondition:void 0})}run(N,F){const O=p.get(F);if(!O)return;const W=F.getPosition();if(!W)return;const U=new D.Range(W.lineNumber,W.column,W.lineNumber,W.column),j=_.GotoDefinitionAtPositionEditorContribution.get(F);if(!j)return;j.startFindDefinitionFromCursor(W).then(()=>{O.showContentHover(U,1,1,!0)})}}class b extends y.EditorAction{constructor(){super({id:"editor.action.scrollUpHover",label:o.localize(2,null),alias:"Scroll Up Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:16,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollUp()}}class w extends y.EditorAction{constructor(){super({id:"editor.action.scrollDownHover",label:o.localize(3,null),alias:"Scroll Down Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:18,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollDown()}}class E extends y.EditorAction{constructor(){super({id:"editor.action.scrollLeftHover",label:o.localize(4,null),alias:"Scroll Left Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:15,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollLeft()}}class I extends y.EditorAction{constructor(){super({id:"editor.action.scrollRightHover",label:o.localize(5,null),alias:"Scroll Right Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:17,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollRight()}}class M extends y.EditorAction{constructor(){super({id:"editor.action.pageUpHover",label:o.localize(6,null),alias:"Page Up Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:11,secondary:[528],weight:100}})}run(N,F){const O=p.get(F);O&&O.pageUp()}}class P extends y.EditorAction{constructor(){super({id:"editor.action.pageDownHover",label:o.localize(7,null),alias:"Page Down Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:12,secondary:[530],weight:100}})}run(N,F){const O=p.get(F);O&&O.pageDown()}}class x extends y.EditorAction{constructor(){super({id:"editor.action.goToTopHover",label:o.localize(8,null),alias:"Go To Bottom Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:14,secondary:[2064],weight:100}})}run(N,F){const O=p.get(F);O&&O.goToTop()}}class T extends y.EditorAction{constructor(){super({id:"editor.action.goToBottomHover",label:o.localize(9,null),alias:"Go To Bottom Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:13,secondary:[2066],weight:100}})}run(N,F){const O=p.get(F);O&&O.goToBottom()}}(0,y.registerEditorContribution)(p.ID,p,2),(0,y.registerEditorAction)(m),(0,y.registerEditorAction)(v),(0,y.registerEditorAction)(b),(0,y.registerEditorAction)(w),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(P),(0,y.registerEditorAction)(x),(0,y.registerEditorAction)(T),a.HoverParticipantRegistry.register(u.MarkdownHoverParticipant),a.HoverParticipantRegistry.register(h.MarkerHoverParticipant),(0,t.registerThemingParticipant)((A,N)=>{const F=A.getColor(n.editorHoverBorder);F&&(N.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${F.transparent(.5)}; }`),N.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${F.transparent(.5)}; }`),N.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${F.transparent(.5)}; }`))})}),define(ne[902],se([1,0,2,16,5,363,364,372,103]),function(Q,e,L,k,y,D,S,f,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorContribution=void 0;class g extends L.Disposable{constructor(s){super(),this._editor=s,this._register(s.onMouseDown(i=>this.onMouseDown(i)))}dispose(){super.dispose()}onMouseDown(s){const i=this._editor.getOption(145);if(i!=="click"&&i!=="clickAndHover")return;const n=s.target;if(n.type!==6||!n.detail.injectedText||n.detail.injectedText.options.attachedData!==D.ColorDecorationInjectedTextMarker||!n.range)return;const t=this._editor.getContribution(f.ModesHoverController.ID);if(t&&!t.isColorPickerVisible){const a=new y.Range(n.range.startLineNumber,n.range.startColumn+1,n.range.endLineNumber,n.range.endColumn+1);t.showContentHover(a,1,0,!1,!0)}}}e.ColorContribution=g,g.ID="editor.contrib.colorContribution",(0,k.registerEditorContribution)(g.ID,g,2),_.HoverParticipantRegistry.register(S.ColorHoverParticipant)}),define(ne[373],se([1,0,7,39,19,170,5,69,257,138,30,27,15,57,8,43]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.goToDefinitionWithLocation=e.showGoToContextMenu=void 0;function u(r,c,o,d){var l;return we(this,void 0,void 0,function*(){const p=r.get(f.ITextModelService),m=r.get(n.IContextMenuService),v=r.get(s.ICommandService),b=r.get(t.IInstantiationService),w=r.get(a.INotificationService);if(yield d.item.resolve(y.CancellationToken.None),!d.part.location)return;const E=d.part.location,I=[],M=new Set(C.MenuRegistry.getMenuItems(C.MenuId.EditorContext).map(x=>(0,C.isIMenuItem)(x)?x.command.id:(0,D.generateUuid)()));for(const x of _.SymbolNavigationAction.all())M.has(x.desc.id)&&I.push(new k.Action(x.desc.id,C.MenuItemAction.label(x.desc,{renderShortTitle:!0}),void 0,!0,()=>we(this,void 0,void 0,function*(){const T=yield p.createModelReference(E.uri);try{const A=new _.SymbolNavigationAnchor(T.object.textEditorModel,S.Range.getStartPosition(E.range)),N=d.item.anchor.range;yield b.invokeFunction(x.runEditorCommand.bind(x),c,A,N)}finally{T.dispose()}})));if(d.part.command){const{command:x}=d.part;I.push(new k.Separator),I.push(new k.Action(x.id,x.title,void 0,!0,()=>we(this,void 0,void 0,function*(){var T;try{yield v.executeCommand(x.id,...(T=x.arguments)!==null&&T!==void 0?T:[])}catch(A){w.notify({severity:a.Severity.Error,source:d.item.provider.displayName,message:A})}})))}const P=c.getOption(125);m.showContextMenu({domForShadowRoot:P&&(l=c.getDomNode())!==null&&l!==void 0?l:void 0,getAnchor:()=>{const x=L.getDomNodePagePosition(o);return{x:x.left,y:x.top+x.height+8}},getActions:()=>I,onHide:()=>{c.focus()},autoSelectFirstItem:!0})})}e.showGoToContextMenu=u;function h(r,c,o,d){return we(this,void 0,void 0,function*(){const p=yield r.get(f.ITextModelService).createModelReference(d.uri);yield o.invokeWithinContext(m=>we(this,void 0,void 0,function*(){const v=c.hasSideBySideModifier,b=m.get(i.IContextKeyService),w=g.PeekContext.inPeekEditor.getValue(b),E=!v&&o.getOption(86)&&!w;return new _.DefinitionAction({openToSide:v,openInPeek:E,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(m,new _.SymbolNavigationAnchor(p.object.textEditorModel,S.Range.getStartPosition(d.range)),S.Range.lift(d.range))})),p.dispose()})}e.goToDefinitionWithLocation=h}),define(ne[374],se([1,0,7,14,13,19,9,2,65,20,22,159,108,36,73,5,29,48,40,76,18,69,186,322,373,27,50,8,43,31,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){"use strict";var P;Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintsController=e.RenderedInlayHintLabelPart=void 0;class x{constructor(){this._entries=new _.LRUCache(50)}get(U){const j=x._key(U);return this._entries.get(j)}set(U,j){const R=x._key(U);this._entries.set(R,j)}static _key(U){return`${U.uri.toString()}/${U.getVersionId()}`}}const T=(0,w.createDecorator)("IInlayHintsCache");(0,b.registerSingleton)(T,x,1);class A{constructor(U,j){this.item=U,this.index=j}get part(){const U=this.item.hint.label;return typeof U=="string"?{label:U}:U[this.index]}}e.RenderedInlayHintLabelPart=A;class N{constructor(U,j){this.part=U,this.hasTriggerModifier=j}}let F=P=class{static get(U){var j;return(j=U.getContribution(P.ID))!==null&&j!==void 0?j:void 0}constructor(U,j,R,K,G,Z,J){this._editor=U,this._languageFeaturesService=j,this._inlayHintsCache=K,this._commandService=G,this._notificationService=Z,this._instaService=J,this._disposables=new f.DisposableStore,this._sessionDisposables=new f.DisposableStore,this._decorationsMetadata=new Map,this._ruleFactory=new s.DynamicCssRules(this._editor),this._activeRenderMode=0,this._debounceInfo=R.for(j.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(j.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(U.onDidChangeModel(()=>this._update())),this._disposables.add(U.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(U.onDidChangeConfiguration(X=>{X.hasChanged(138)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const U=this._editor.getOption(138);if(U.enabled==="off")return;const j=this._editor.getModel();if(!j||!this._languageFeaturesService.inlayHintsProvider.has(j))return;const R=this._inlayHintsCache.get(j);R&&this._updateHintsDecorators([j.getFullModelRange()],R),this._sessionDisposables.add((0,f.toDisposable)(()=>{j.isDisposed()||this._cacheHintsForFastRestore(j)}));let K;const G=new Set,Z=new y.RunOnceScheduler(()=>we(this,void 0,void 0,function*(){const J=Date.now();K?.dispose(!0),K=new D.CancellationTokenSource;const X=j.onWillDispose(()=>K?.cancel());try{const H=K.token,B=yield p.InlayHintsFragments.create(this._languageFeaturesService.inlayHintsProvider,j,this._getHintsRanges(),H);if(Z.delay=this._debounceInfo.update(j,Date.now()-J),H.isCancellationRequested){B.dispose();return}for(const V of B.provider)typeof V.onDidChangeInlayHints=="function"&&!G.has(V)&&(G.add(V),this._sessionDisposables.add(V.onDidChangeInlayHints(()=>{Z.isScheduled()||Z.schedule()})));this._sessionDisposables.add(B),this._updateHintsDecorators(B.ranges,B.items),this._cacheHintsForFastRestore(j)}catch(H){(0,S.onUnexpectedError)(H)}finally{K.dispose(),X.dispose()}}),this._debounceInfo.get(j));if(this._sessionDisposables.add(Z),this._sessionDisposables.add((0,f.toDisposable)(()=>K?.dispose(!0))),Z.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(J=>{(J.scrollTopChanged||!Z.isScheduled())&&Z.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(J=>{const X=Math.max(Z.delay,1250);Z.schedule(X)})),U.enabled==="on")this._activeRenderMode=0;else{let J,X;U.enabled==="onUnlessPressed"?(J=0,X=1):(J=1,X=0),this._activeRenderMode=J,this._sessionDisposables.add(L.ModifierKeyEmitter.getInstance().event(H=>{if(!this._editor.hasModel())return;const B=H.altKey&&H.ctrlKey&&!(H.shiftKey||H.metaKey)?X:J;if(B!==this._activeRenderMode){this._activeRenderMode=B;const V=this._editor.getModel(),Y=this._copyInlayHintsWithCurrentAnchor(V);this._updateHintsDecorators([V.getFullModelRange()],Y),Z.schedule(0)}}))}this._sessionDisposables.add(this._installDblClickGesture(()=>Z.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const U=new f.DisposableStore,j=U.add(new l.ClickLinkGesture(this._editor)),R=new f.DisposableStore;return U.add(R),U.add(j.onMouseMoveOrRelevantKeyDown(K=>{const[G]=K,Z=this._getInlayHintLabelPart(G),J=this._editor.getModel();if(!Z||!J){R.clear();return}const X=new D.CancellationTokenSource;R.add((0,f.toDisposable)(()=>X.dispose(!0))),Z.item.resolve(X.token),this._activeInlayHintPart=Z.part.command||Z.part.location?new N(Z,G.hasTriggerModifier):void 0;const H=J.validatePosition(Z.item.hint.position).lineNumber,B=new a.Range(H,1,H,J.getLineMaxColumn(H)),V=this._getInlineHintsForRange(B);this._updateHintsDecorators([B],V),R.add((0,f.toDisposable)(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([B],V)}))})),U.add(j.onCancel(()=>R.clear())),U.add(j.onExecute(K=>we(this,void 0,void 0,function*(){const G=this._getInlayHintLabelPart(K);if(G){const Z=G.part;Z.location?this._instaService.invokeFunction(m.goToDefinitionWithLocation,K,this._editor,Z.location):u.Command.is(Z.command)&&(yield this._invokeCommand(Z.command,G.item))}}))),U}_getInlineHintsForRange(U){const j=new Set;for(const R of this._decorationsMetadata.values())U.containsRange(R.item.anchor.range)&&j.add(R.item);return Array.from(j)}_installDblClickGesture(U){return this._editor.onMouseUp(j=>we(this,void 0,void 0,function*(){if(j.event.detail!==2)return;const R=this._getInlayHintLabelPart(j);if(R&&(j.event.preventDefault(),yield R.item.resolve(D.CancellationToken.None),(0,k.isNonEmptyArray)(R.item.hint.textEdits))){const K=R.item.hint.textEdits.map(G=>t.EditOperation.replace(a.Range.lift(G.range),G.text));this._editor.executeEdits("inlayHint.default",K),U()}}))}_installContextMenu(){return this._editor.onContextMenu(U=>we(this,void 0,void 0,function*(){if(!(U.event.target instanceof HTMLElement))return;const j=this._getInlayHintLabelPart(U);j&&(yield this._instaService.invokeFunction(m.showGoToContextMenu,this._editor,U.event.target,j))}))}_getInlayHintLabelPart(U){var j;if(U.target.type!==6)return;const R=(j=U.target.detail.injectedText)===null||j===void 0?void 0:j.options;if(R instanceof r.ModelDecorationInjectedTextOptions&&R?.attachedData instanceof A)return R.attachedData}_invokeCommand(U,j){var R;return we(this,void 0,void 0,function*(){try{yield this._commandService.executeCommand(U.id,...(R=U.arguments)!==null&&R!==void 0?R:[])}catch(K){this._notificationService.notify({severity:E.Severity.Error,source:j.provider.displayName,message:K})}})}_cacheHintsForFastRestore(U){const j=this._copyInlayHintsWithCurrentAnchor(U);this._inlayHintsCache.set(U,j)}_copyInlayHintsWithCurrentAnchor(U){const j=new Map;for(const[R,K]of this._decorationsMetadata){if(j.has(K.item))continue;const G=U.getDecorationRange(R);if(G){const Z=new p.InlayHintAnchor(G,K.item.anchor.direction),J=K.item.with({anchor:Z});j.set(K.item,J)}}return Array.from(j.values())}_getHintsRanges(){const j=this._editor.getModel(),R=this._editor.getVisibleRangesPlusViewportAboveBelow(),K=[];for(const G of R.sort(a.Range.compareRangesUsingStarts)){const Z=j.validateRange(new a.Range(G.startLineNumber-30,G.startColumn,G.endLineNumber+30,G.endColumn));K.length===0||!a.Range.areIntersectingOrTouching(K[K.length-1],Z)?K.push(Z):K[K.length-1]=a.Range.plusRange(K[K.length-1],Z)}return K}_updateHintsDecorators(U,j){var R,K;const G=[],Z=(ce,de,he,ue,te)=>{const q={content:he,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:de.className,cursorStops:ue,attachedData:te};G.push({item:ce,classNameRef:de,decoration:{range:ce.anchor.range,options:{description:"InlayHint",showIfCollapsed:ce.anchor.range.isEmpty(),collapseOnReplaceEdit:!ce.anchor.range.isEmpty(),stickiness:0,[ce.anchor.direction]:this._activeRenderMode===0?q:void 0}}})},J=(ce,de)=>{const he=this._ruleFactory.createClassNameRef({width:`${X/3|0}px`,display:"inline-block"});Z(ce,he,"\u200A",de?h.InjectedTextCursorStops.Right:h.InjectedTextCursorStops.None)},{fontSize:X,fontFamily:H,padding:B,isUniform:V}=this._getLayoutInfo(),Y="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(Y,H);for(const ce of j){ce.hint.paddingLeft&&J(ce,!1);const de=typeof ce.hint.label=="string"?[{label:ce.hint.label}]:ce.hint.label;for(let he=0;heP._MAX_DECORATORS)break}const ie=[];for(const ce of U)for(const{id:de}of(K=this._editor.getDecorationsInRange(ce))!==null&&K!==void 0?K:[]){const he=this._decorationsMetadata.get(de);he&&(ie.push(de),he.classNameRef.dispose(),this._decorationsMetadata.delete(de))}const ae=i.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(ce=>{const de=ce.deltaDecorations(ie,G.map(he=>he.decoration));for(let he=0;heR)&&(G=R);const Z=U.fontFamily||K;return{fontSize:G,fontFamily:Z,padding:j,isUniform:!j&&Z===K&&G===R}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const U of this._decorationsMetadata.values())U.classNameRef.dispose();this._decorationsMetadata.clear()}};e.InlayHintsController=F,F.ID="editor.contrib.InlayHints",F._MAX_DECORATORS=1500,e.InlayHintsController=F=P=ke([fe(1,o.ILanguageFeaturesService),fe(2,c.ILanguageFeatureDebounceService),fe(3,T),fe(4,v.ICommandService),fe(5,E.INotificationService),fe(6,w.IInstantiationService)],F);function O(W){const U="\xA0";return W.replace(/[ \t]/g,U)}v.CommandsRegistry.registerCommand("_executeInlayHintProvider",(W,...U)=>we(void 0,void 0,void 0,function*(){const[j,R]=U;(0,g.assertType)(C.URI.isUri(j)),(0,g.assertType)(a.Range.isIRange(R));const{inlayHintsProvider:K}=W.get(o.ILanguageFeaturesService),G=yield W.get(d.ITextModelService).createModelReference(j);try{const Z=yield p.InlayHintsFragments.create(K,G.object.textEditorModel,[a.Range.lift(R)],D.CancellationToken.None),J=Z.items.map(X=>X.hint);return setTimeout(()=>Z.dispose(),0),J}finally{G.dispose()}}))});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values=="function"?__values(Q):Q[Symbol.iterator](),L={},k("next"),k("throw"),k("return"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[903],se([1,0,13,55,12,40,103,41,69,352,248,374,28,56,18,676,17,322,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintsHover=void 0;class c extends S.HoverForeignElementAnchor{constructor(l,p,m,v){super(10,p,l.item.anchor.range,m,v,!0),this.part=l}}let o=class extends C.MarkdownHoverParticipant{constructor(l,p,m,v,b,w){super(l,p,m,v,w),this._resolverService=b,this.hoverOrdinal=6}suggestHoverAnchor(l){var p;if(!s.InlayHintsController.get(this._editor)||l.target.type!==6)return null;const v=(p=l.target.detail.injectedText)===null||p===void 0?void 0:p.options;return v instanceof D.ModelDecorationInjectedTextOptions&&v.attachedData instanceof s.RenderedInlayHintLabelPart?new c(v.attachedData,this,l.event.posx,l.event.posy):null}computeSync(){return[]}computeAsync(l,p,m){return l instanceof c?new L.AsyncIterableObject(v=>we(this,void 0,void 0,function*(){var b,w,E,I;const{part:M}=l;if(yield M.item.resolve(m),m.isCancellationRequested)return;let P;typeof M.item.hint.tooltip=="string"?P=new k.MarkdownString().appendText(M.item.hint.tooltip):M.item.hint.tooltip&&(P=M.item.hint.tooltip),P&&v.emitOne(new C.MarkdownHover(this,l.range,[P],!1,0)),(0,r.isNonEmptyArray)(M.item.hint.textEdits)&&v.emitOne(new C.MarkdownHover(this,l.range,[new k.MarkdownString().appendText((0,a.localize)(0,null))],!1,10001));let x;if(typeof M.part.tooltip=="string"?x=new k.MarkdownString().appendText(M.part.tooltip):M.part.tooltip&&(x=M.part.tooltip),x&&v.emitOne(new C.MarkdownHover(this,l.range,[x],!1,1)),M.part.location||M.part.command){let O;const U=this._editor.getOption(76)==="altKey"?u.isMacintosh?(0,a.localize)(1,null):(0,a.localize)(2,null):u.isMacintosh?(0,a.localize)(3,null):(0,a.localize)(4,null);M.part.location&&M.part.command?O=new k.MarkdownString().appendText((0,a.localize)(5,null,U)):M.part.location?O=new k.MarkdownString().appendText((0,a.localize)(6,null,U)):M.part.command&&(O=new k.MarkdownString(`[${(0,a.localize)(7,null)}](${(0,h.asCommandLink)(M.part.command)} "${M.part.command.title}") (${U})`,{isTrusted:!0})),O&&v.emitOne(new C.MarkdownHover(this,l.range,[O],!1,1e4))}const T=yield this._resolveInlayHintLabelPartHover(M,m);try{for(var A=!0,N=Lt(T),F;F=yield N.next(),b=F.done,!b;A=!0){I=F.value,A=!1;const O=I;v.emitOne(O)}}catch(O){w={error:O}}finally{try{!A&&!b&&(E=N.return)&&(yield E.call(N))}finally{if(w)throw w.error}}})):L.AsyncIterableObject.EMPTY}_resolveInlayHintLabelPartHover(l,p){return we(this,void 0,void 0,function*(){if(!l.part.location)return L.AsyncIterableObject.EMPTY;const{uri:m,range:v}=l.part.location,b=yield this._resolverService.createModelReference(m);try{const w=b.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(w)?(0,g.getHover)(this._languageFeaturesService.hoverProvider,w,new y.Position(v.startLineNumber,v.startColumn),p).filter(E=>!(0,k.isEmptyMarkdownString)(E.hover.contents)).map(E=>new C.MarkdownHover(this,l.item.anchor.range,E.hover.contents,!1,2+E.ordinal)):L.AsyncIterableObject.EMPTY}finally{b.dispose()}})}};e.InlayHintsHover=o,e.InlayHintsHover=o=ke([fe(1,f.ILanguageService),fe(2,n.IOpenerService),fe(3,i.IConfigurationService),fe(4,_.ITextModelService),fe(5,t.ILanguageFeaturesService)],o)}),define(ne[904],se([1,0,16,103,374,903]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(y.InlayHintsController.ID,y.InlayHintsController,1),k.HoverParticipantRegistry.register(D.InlayHintsHover)}),define(ne[375],se([1,0,2,18,894,893,8,57,30,15,21,186,5,247,373,12,19,32,76,7,299,60]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){"use strict";var l;Object.defineProperty(e,"__esModule",{value:!0}),e.StickyScrollController=void 0;let p=l=class extends L.Disposable{constructor(v,b,w,E,I,M,P){super(),this._editor=v,this._contextMenuService=b,this._languageFeaturesService=w,this._instaService=E,this._contextKeyService=P,this._sessionStore=new L.DisposableStore,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._showEndForLine=null,this._stickyScrollWidget=new y.StickyScrollWidget(this._editor),this._stickyLineCandidateProvider=new D.StickyLineCandidateProvider(this._editor,w,I),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new y.StickyScrollWidgetState([],[],0),this._readConfiguration();const x=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(A=>{(A.hasChanged(113)||A.hasChanged(71)||A.hasChanged(65)||A.hasChanged(108))&&this._readConfiguration()})),this._register(c.addDisposableListener(x,c.EventType.CONTEXT_MENU,A=>we(this,void 0,void 0,function*(){this._onContextMenu(A)}))),this._stickyScrollFocusedContextKey=C.EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=C.EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);const T=this._register(c.trackFocus(x));this._register(T.onDidBlur(A=>{this._positionRevealed===!1&&x.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(T.onDidFocus(A=>{this.focus()})),this._registerMouseListeners(),this._register(c.addDisposableListener(x,c.EventType.MOUSE_DOWN,A=>{this._onMouseDown=!0}))}static get(v){return v.getContribution(l.ID)}_disposeFocusStickyScrollStore(){var v;this._stickyScrollFocusedContextKey.set(!1),(v=this._focusDisposableStore)===null||v===void 0||v.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new L.DisposableStore,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(v){this._focusedStickyElementIndex=v?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const v=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:v[this._focusedStickyElementIndex],column:1})}_revealPosition(v){this._reveaInEditor(v,()=>this._editor.revealPosition(v))}_revealLineInCenterIfOutsideViewport(v){this._reveaInEditor(v,()=>this._editor.revealLineInCenterIfOutsideViewport(v.lineNumber,0))}_reveaInEditor(v,b){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,b(),this._editor.setSelection(i.Range.fromPositions(v)),this._editor.focus()}_registerMouseListeners(){const v=this._register(new L.DisposableStore),b=this._register(new s.ClickLinkGesture(this._editor,{extractLineNumberFromMouseEvent:I=>{const M=this._stickyScrollWidget.getEditorPositionFromNode(I.target.element);return M?M.lineNumber:0}})),w=I=>{if(!this._editor.hasModel()||I.target.type!==12||I.target.detail!==this._stickyScrollWidget.getId())return null;const M=I.target.element;if(!M||M.innerText!==M.innerHTML)return null;const P=this._stickyScrollWidget.getEditorPositionFromNode(M);return P?{range:new i.Range(P.lineNumber,P.column,P.lineNumber,P.column+M.innerText.length),textElement:M}:null},E=this._stickyScrollWidget.getDomNode();this._register(c.addStandardDisposableListener(E,c.EventType.CLICK,I=>{if(I.ctrlKey||I.altKey||I.metaKey||!I.leftButton)return;if(I.shiftKey){const P=this._stickyScrollWidget.getStickyLineIndexFromChildDomNode(I.target);if(P===null)return;const x=new a.Position(this._endLineNumbers[P],1);this._revealLineInCenterIfOutsideViewport(x);return}let M=this._stickyScrollWidget.getEditorPositionFromNode(I.target);if(!M){const P=this._stickyScrollWidget.getLineNumberFromChildDomNode(I.target);if(P===null)return;M=new a.Position(P,1)}this._revealPosition(M)})),this._register(c.addStandardDisposableListener(E,c.EventType.MOUSE_MOVE,I=>{if(I.shiftKey){const M=this._stickyScrollWidget.getStickyLineIndexFromChildDomNode(I.target);if(M===null||this._showEndForLine!==null&&this._showEndForLine===M)return;this._showEndForLine=M,this._renderStickyScroll();return}this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(c.addDisposableListener(E,c.EventType.MOUSE_LEAVE,I=>{this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(b.onMouseMoveOrRelevantKeyDown(([I,M])=>{const P=w(I);if(!P||!I.hasTriggerModifier||!this._editor.hasModel()){v.clear();return}const{range:x,textElement:T}=P;if(!x.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=x,v.clear();else if(T.style.textDecoration==="underline")return;const A=new u.CancellationTokenSource;v.add((0,L.toDisposable)(()=>A.dispose(!0)));let N;(0,n.getDefinitionsAtPosition)(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new a.Position(x.startLineNumber,x.startColumn+1),A.token).then(F=>{if(!A.token.isCancellationRequested)if(F.length!==0){this._candidateDefinitionsLength=F.length;const O=T;N!==O?(v.clear(),N=O,N.style.textDecoration="underline",v.add((0,L.toDisposable)(()=>{N.style.textDecoration="none"}))):N||(N=O,N.style.textDecoration="underline",v.add((0,L.toDisposable)(()=>{N.style.textDecoration="none"})))}else v.clear()})})),this._register(b.onCancel(()=>{v.clear()})),this._register(b.onExecute(I=>we(this,void 0,void 0,function*(){if(I.target.type!==12||I.target.detail!==this._stickyScrollWidget.getId())return;const M=this._stickyScrollWidget.getEditorPositionFromNode(I.target.element);M&&(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:M.lineNumber,column:1})),this._instaService.invokeFunction(t.goToDefinitionWithLocation,I,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor}))})))}_onContextMenu(v){const b=new d.StandardMouseEvent(v);this._contextMenuService.showContextMenu({menuId:_.MenuId.StickyScrollContext,getAnchor:()=>b})}_readConfiguration(){const v=this._editor.getOption(113);if(v.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else v.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(w=>{w.scrollTopChanged&&(this._showEndForLine=null,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(w=>this._onTokensChange(w))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=null,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(66).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=null,this._renderStickyScroll()}))}_needsUpdate(v){const b=this._stickyScrollWidget.getCurrentLines();for(const w of b)for(const E of v.ranges)if(w>=E.fromLineNumber&&w<=E.toLineNumber)return!0;return!1}_onTokensChange(v){this._needsUpdate(v)&&this._renderStickyScroll()}_onDidResize(){const b=this._editor.getLayoutInfo().height/this._editor.getOption(65);this._maxStickyLines=Math.round(b*.25)}_renderStickyScroll(){const v=this._editor.getModel();if(!v||v.isTooLargeForTokenization()){this._stickyScrollWidget.setState(void 0);return}const b=this._stickyLineCandidateProvider.getVersionId();if(b===void 0||b===v.getVersionId())if(this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(this._widgetState.startLineNumbers.length!==0),!this._focused)this._stickyScrollWidget.setState(this._widgetState);else if(this._focusedStickyElementIndex===-1)this._stickyScrollWidget.setState(this._widgetState),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const w=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];this._stickyScrollWidget.setState(this._widgetState),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(w)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}findScrollWidgetState(){const v=this._editor.getOption(65),b=Math.min(this._maxStickyLines,this._editor.getOption(113).maxLineCount),w=this._editor.getScrollTop();let E=0;const I=[],M=[],P=this._editor.getVisibleRanges();if(P.length!==0){const x=new o.StickyRange(P[0].startLineNumber,P[P.length-1].endLineNumber),T=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(x);for(const A of T){const N=A.startLineNumber,F=A.endLineNumber,O=A.nestingDepth;if(F-N>0){const W=(O-1)*v,U=O*v,j=this._editor.getBottomForLineNumber(N)-w,R=this._editor.getTopForLineNumber(F)-w,K=this._editor.getBottomForLineNumber(F)-w;if(W>R&&W<=K){I.push(N),M.push(F+1),E=K-U;break}else U>j&&U<=K&&(I.push(N),M.push(F+1));if(I.length===b)break}}}return this._endLineNumbers=M,new y.StickyScrollWidgetState(I,M,E,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};e.StickyScrollController=p,p.ID="store.contrib.stickyScrollController",e.StickyScrollController=p=l=ke([fe(1,f.IContextMenuService),fe(2,k.ILanguageFeaturesService),fe(3,S.IInstantiationService),fe(4,h.ILanguageConfigurationService),fe(5,r.ILanguageFeatureDebounceService),fe(6,g.IContextKeyService)],p)}),define(ne[905],se([1,0,16,699,741,30,28,15,21,375]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectEditor=e.GoToStickyScrollLine=e.SelectPreviousStickyScrollLine=e.SelectNextStickyScrollLine=e.FocusStickyScroll=e.ToggleStickyScroll=void 0;class C extends D.Action2{constructor(){super({id:"editor.action.toggleStickyScroll",title:{value:(0,k.localize)(0,null),mnemonicTitle:(0,k.localize)(1,null),original:"Toggle Sticky Scroll"},category:y.Categories.View,toggled:{condition:f.ContextKeyExpr.equals("config.editor.stickyScroll.enabled",!0),title:(0,k.localize)(2,null),mnemonicTitle:(0,k.localize)(3,null)},menu:[{id:D.MenuId.CommandPalette},{id:D.MenuId.MenubarAppearanceMenu,group:"4_editor",order:3},{id:D.MenuId.StickyScrollContext}]})}run(r){return we(this,void 0,void 0,function*(){const c=r.get(S.IConfigurationService),o=!c.getValue("editor.stickyScroll.enabled");return c.updateValue("editor.stickyScroll.enabled",o)})}}e.ToggleStickyScroll=C;const s=100;class i extends L.EditorAction2{constructor(){super({id:"editor.action.focusStickyScroll",title:{value:(0,k.localize)(4,null),mnemonicTitle:(0,k.localize)(5,null),original:"Focus Sticky Scroll"},precondition:f.ContextKeyExpr.and(f.ContextKeyExpr.has("config.editor.stickyScroll.enabled"),_.EditorContextKeys.stickyScrollVisible),menu:[{id:D.MenuId.CommandPalette}]})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focus()}}e.FocusStickyScroll=i;class n extends L.EditorAction2{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:{value:(0,k.localize)(6,null),original:"Select next sticky scroll line"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:18}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focusNext()}}e.SelectNextStickyScrollLine=n;class t extends L.EditorAction2{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:{value:(0,k.localize)(7,null),original:"Select previous sticky scroll line"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:16}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focusPrevious()}}e.SelectPreviousStickyScrollLine=t;class a extends L.EditorAction2{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:{value:(0,k.localize)(8,null),original:"Go to focused sticky scroll line"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:3}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.goToFocused()}}e.GoToStickyScrollLine=a;class u extends L.EditorAction2{constructor(){super({id:"editor.action.selectEditor",title:{value:(0,k.localize)(9,null),original:"Select Editor"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:9}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.selectEditor()}}e.SelectEditor=u}),define(ne[906],se([1,0,16,905,375,30]),function(Q,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(y.StickyScrollController.ID,y.StickyScrollController,1),(0,D.registerAction2)(k.ToggleStickyScroll),(0,D.registerAction2)(k.FocusStickyScroll),(0,D.registerAction2)(k.SelectPreviousStickyScrollLine),(0,D.registerAction2)(k.SelectNextStickyScrollLine),(0,D.registerAction2)(k.GoToStickyScrollLine),(0,D.registerAction2)(k.SelectEditor)}),define(ne[907],se([1,0,16,33,370,28,15,8,43,87]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneReferencesController=void 0;let C=class extends y.ReferencesController{constructor(i,n,t,a,u,h,r){super(!0,i,n,t,a,u,h,r)}};e.StandaloneReferencesController=C,e.StandaloneReferencesController=C=ke([fe(1,S.IContextKeyService),fe(2,k.ICodeEditorService),fe(3,_.INotificationService),fe(4,f.IInstantiationService),fe(5,g.IStorageService),fe(6,D.IConfigurationService)],C),(0,L.registerEditorContribution)(y.ReferencesController.ID,C,4)}),define(ne[908],se([1,0,9,2,54,101,738,156,50,43,192]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UndoRedoService=void 0;const s=!1;function i(p){return p.scheme===y.Schemas.file?p.fsPath:p.path}let n=0;class t{constructor(m,v,b,w,E,I,M){this.id=++n,this.type=0,this.actual=m,this.label=m.label,this.confirmBeforeUndo=m.confirmBeforeUndo||!1,this.resourceLabel=v,this.strResource=b,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=w,this.groupOrder=E,this.sourceId=I,this.sourceOrder=M,this.isValid=!0}setValid(m){this.isValid=m}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?" VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class a{constructor(m,v){this.resourceLabel=m,this.reason=v}}class u{constructor(){this.elements=new Map}createMessage(){const m=[],v=[];for(const[,w]of this.elements)(w.reason===0?m:v).push(w.resourceLabel);const b=[];return m.length>0&&b.push(S.localize(0,null,m.join(", "))),v.length>0&&b.push(S.localize(1,null,v.join(", "))),b.join(` -`)}get size(){return this.elements.size}has(m){return this.elements.has(m)}set(m,v){this.elements.set(m,v)}delete(m){return this.elements.delete(m)}}class h{constructor(m,v,b,w,E,I,M){this.id=++n,this.type=1,this.actual=m,this.label=m.label,this.confirmBeforeUndo=m.confirmBeforeUndo||!1,this.resourceLabels=v,this.strResources=b,this.groupId=w,this.groupOrder=E,this.sourceId=I,this.sourceOrder=M,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split=="function"}removeResource(m,v,b){this.removedResources||(this.removedResources=new u),this.removedResources.has(v)||this.removedResources.set(v,new a(m,b))}setValid(m,v,b){b?this.invalidatedResources&&(this.invalidatedResources.delete(v),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new u),this.invalidatedResources.has(v)||this.invalidatedResources.set(v,new a(m,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":" VALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class r{constructor(m,v){this.resourceLabel=m,this.strResource=v,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const m of this._past)m.type===1&&m.removeResource(this.resourceLabel,this.strResource,0);for(const m of this._future)m.type===1&&m.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const m=[];m.push(`* ${this.strResource}:`);for(let v=0;v=0;v--)m.push(` * [REDO] ${this._future[v]}`);return m.join(` -`)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(m,v){m.type===1?m.setValid(this.resourceLabel,this.strResource,v):m.setValid(v)}setElementsValidFlag(m,v){for(const b of this._past)v(b.actual)&&this._setElementValidFlag(b,m);for(const b of this._future)v(b.actual)&&this._setElementValidFlag(b,m)}pushElement(m){for(const v of this._future)v.type===1&&v.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(m),this.versionId++}createSnapshot(m){const v=[];for(let b=0,w=this._past.length;b=0;b--)v.push(this._future[b].id);return new C.ResourceEditStackSnapshot(m,v)}restoreSnapshot(m){const v=m.elements.length;let b=!0,w=0,E=-1;for(let M=0,P=this._past.length;M=v||x.id!==m.elements[w])&&(b=!1,E=0),!b&&x.type===1&&x.removeResource(this.resourceLabel,this.strResource,0)}let I=-1;for(let M=this._future.length-1;M>=0;M--,w++){const P=this._future[M];b&&(w>=v||P.id!==m.elements[w])&&(b=!1,I=M),!b&&P.type===1&&P.removeResource(this.resourceLabel,this.strResource,0)}E!==-1&&(this._past=this._past.slice(0,E)),I!==-1&&(this._future=this._future.slice(I+1)),this.versionId++}getElements(){const m=[],v=[];for(const b of this._past)m.push(b.actual);for(const b of this._future)v.push(b.actual);return{past:m,future:v}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(m,v){for(let b=this._past.length-1;b>=0;b--)if(this._past[b]===m){v.has(this.strResource)?this._past[b]=v.get(this.strResource):this._past.splice(b,1);break}this.versionId++}splitFutureWorkspaceElement(m,v){for(let b=this._future.length-1;b>=0;b--)if(this._future[b]===m){v.has(this.strResource)?this._future[b]=v.get(this.strResource):this._future.splice(b,1);break}this.versionId++}moveBackward(m){this._past.pop(),this._future.push(m),this.versionId++}moveForward(m){this._future.pop(),this._past.push(m),this.versionId++}}class c{constructor(m){this.editStacks=m,this._versionIds=[];for(let v=0,b=this.editStacks.length;vv.sourceOrder)&&(v=I,b=w)}return[v,b]}canUndo(m){if(m instanceof C.UndoRedoSource){const[,b]=this._findClosestUndoElementWithSource(m.id);return!!b}const v=this.getUriComparisonKey(m);return this._editStacks.has(v)?this._editStacks.get(v).hasPastElements():!1}_onError(m,v){(0,L.onUnexpectedError)(m);for(const b of v.strResources)this.removeElements(b);this._notificationService.error(m)}_acquireLocks(m){for(const v of m.editStacks)if(v.locked)throw new Error("Cannot acquire edit stack lock");for(const v of m.editStacks)v.locked=!0;return()=>{for(const v of m.editStacks)v.locked=!1}}_safeInvokeWithLocks(m,v,b,w,E){const I=this._acquireLocks(b);let M;try{M=v()}catch(P){return I(),w.dispose(),this._onError(P,m)}return M?M.then(()=>(I(),w.dispose(),E()),P=>(I(),w.dispose(),this._onError(P,m))):(I(),w.dispose(),E())}_invokeWorkspacePrepare(m){return we(this,void 0,void 0,function*(){if(typeof m.actual.prepareUndoRedo>"u")return k.Disposable.None;const v=m.actual.prepareUndoRedo();return typeof v>"u"?k.Disposable.None:v})}_invokeResourcePrepare(m,v){if(m.actual.type!==1||typeof m.actual.prepareUndoRedo>"u")return v(k.Disposable.None);const b=m.actual.prepareUndoRedo();return b?(0,k.isDisposable)(b)?v(b):b.then(w=>v(w)):v(k.Disposable.None)}_getAffectedEditStacks(m){const v=[];for(const b of m.strResources)v.push(this._editStacks.get(b)||o);return new c(v)}_tryToSplitAndUndo(m,v,b,w){if(v.canSplit())return this._splitPastWorkspaceElement(v,b),this._notificationService.warn(w),new l(this._undo(m,0,!0));for(const E of v.strResources)this.removeElements(E);return this._notificationService.warn(w),new l}_checkWorkspaceUndo(m,v,b,w){if(v.removedResources)return this._tryToSplitAndUndo(m,v,v.removedResources,S.localize(2,null,v.label,v.removedResources.createMessage()));if(w&&v.invalidatedResources)return this._tryToSplitAndUndo(m,v,v.invalidatedResources,S.localize(3,null,v.label,v.invalidatedResources.createMessage()));const E=[];for(const M of b.editStacks)M.getClosestPastElement()!==v&&E.push(M.resourceLabel);if(E.length>0)return this._tryToSplitAndUndo(m,v,null,S.localize(4,null,v.label,E.join(", ")));const I=[];for(const M of b.editStacks)M.locked&&I.push(M.resourceLabel);return I.length>0?this._tryToSplitAndUndo(m,v,null,S.localize(5,null,v.label,I.join(", "))):b.isValid()?null:this._tryToSplitAndUndo(m,v,null,S.localize(6,null,v.label))}_workspaceUndo(m,v,b){const w=this._getAffectedEditStacks(v),E=this._checkWorkspaceUndo(m,v,w,!1);return E?E.returnValue:this._confirmAndExecuteWorkspaceUndo(m,v,w,b)}_isPartOfUndoGroup(m){if(!m.groupId)return!1;for(const[,v]of this._editStacks){const b=v.getClosestPastElement();if(b){if(b===m){const w=v.getSecondClosestPastElement();if(w&&w.groupId===m.groupId)return!0}if(b.groupId===m.groupId)return!0}}return!1}_confirmAndExecuteWorkspaceUndo(m,v,b,w){return we(this,void 0,void 0,function*(){if(v.canSplit()&&!this._isPartOfUndoGroup(v)){let M;(function(T){T[T.All=0]="All",T[T.This=1]="This",T[T.Cancel=2]="Cancel"})(M||(M={}));const{result:P}=yield this._dialogService.prompt({type:D.default.Info,message:S.localize(7,null,v.label),buttons:[{label:S.localize(8,null,b.editStacks.length),run:()=>M.All},{label:S.localize(9,null),run:()=>M.This}],cancelButton:{run:()=>M.Cancel}});if(P===M.Cancel)return;if(P===M.This)return this._splitPastWorkspaceElement(v,null),this._undo(m,0,!0);const x=this._checkWorkspaceUndo(m,v,b,!1);if(x)return x.returnValue;w=!0}let E;try{E=yield this._invokeWorkspacePrepare(v)}catch(M){return this._onError(M,v)}const I=this._checkWorkspaceUndo(m,v,b,!0);if(I)return E.dispose(),I.returnValue;for(const M of b.editStacks)M.moveBackward(v);return this._safeInvokeWithLocks(v,()=>v.actual.undo(),b,E,()=>this._continueUndoInGroup(v.groupId,w))})}_resourceUndo(m,v,b){if(!v.isValid){m.flushAllElements();return}if(m.locked){const w=S.localize(10,null,v.label);this._notificationService.warn(w);return}return this._invokeResourcePrepare(v,w=>(m.moveBackward(v),this._safeInvokeWithLocks(v,()=>v.actual.undo(),new c([m]),w,()=>this._continueUndoInGroup(v.groupId,b))))}_findClosestUndoElementInGroup(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestPastElement();I&&I.groupId===m&&(!v||I.groupOrder>v.groupOrder)&&(v=I,b=w)}return[v,b]}_continueUndoInGroup(m,v){if(!m)return;const[,b]=this._findClosestUndoElementInGroup(m);if(b)return this._undo(b,0,v)}undo(m){if(m instanceof C.UndoRedoSource){const[,v]=this._findClosestUndoElementWithSource(m.id);return v?this._undo(v,m.id,!1):void 0}return typeof m=="string"?this._undo(m,0,!1):this._undo(this.getUriComparisonKey(m),0,!1)}_undo(m,v=0,b){if(!this._editStacks.has(m))return;const w=this._editStacks.get(m),E=w.getClosestPastElement();if(!E)return;if(E.groupId){const[M,P]=this._findClosestUndoElementInGroup(E.groupId);if(E!==M&&P)return this._undo(P,v,b)}if((E.sourceId!==v||E.confirmBeforeUndo)&&!b)return this._confirmAndContinueUndo(m,v,E);try{return E.type===1?this._workspaceUndo(m,E,b):this._resourceUndo(w,E,b)}finally{s&&this._print("undo")}}_confirmAndContinueUndo(m,v,b){return we(this,void 0,void 0,function*(){if((yield this._dialogService.confirm({message:S.localize(11,null,b.label),primaryButton:S.localize(12,null),cancelButton:S.localize(13,null)})).confirmed)return this._undo(m,v,!0)})}_findClosestRedoElementWithSource(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.sourceId===m&&(!v||I.sourceOrder0)return this._tryToSplitAndRedo(m,v,null,S.localize(16,null,v.label,E.join(", ")));const I=[];for(const M of b.editStacks)M.locked&&I.push(M.resourceLabel);return I.length>0?this._tryToSplitAndRedo(m,v,null,S.localize(17,null,v.label,I.join(", "))):b.isValid()?null:this._tryToSplitAndRedo(m,v,null,S.localize(18,null,v.label))}_workspaceRedo(m,v){const b=this._getAffectedEditStacks(v),w=this._checkWorkspaceRedo(m,v,b,!1);return w?w.returnValue:this._executeWorkspaceRedo(m,v,b)}_executeWorkspaceRedo(m,v,b){return we(this,void 0,void 0,function*(){let w;try{w=yield this._invokeWorkspacePrepare(v)}catch(I){return this._onError(I,v)}const E=this._checkWorkspaceRedo(m,v,b,!0);if(E)return w.dispose(),E.returnValue;for(const I of b.editStacks)I.moveForward(v);return this._safeInvokeWithLocks(v,()=>v.actual.redo(),b,w,()=>this._continueRedoInGroup(v.groupId))})}_resourceRedo(m,v){if(!v.isValid){m.flushAllElements();return}if(m.locked){const b=S.localize(19,null,v.label);this._notificationService.warn(b);return}return this._invokeResourcePrepare(v,b=>(m.moveForward(v),this._safeInvokeWithLocks(v,()=>v.actual.redo(),new c([m]),b,()=>this._continueRedoInGroup(v.groupId))))}_findClosestRedoElementInGroup(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.groupId===m&&(!v||I.groupOrder"u")return typeof t=="string"?{id:(0,k.basename)(t)}:a?e.EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE:e.UNKNOWN_EMPTY_WINDOW_WORKSPACE;const u=t;return u.configuration?{id:u.id,configPath:u.configuration}:u.folders.length===1?{id:u.id,uri:u.folders[0].uri}:{id:u.id}}e.toWorkspaceIdentifier=g;function C(t){const a=t;return typeof a?.id=="string"&&D.URI.isUri(a.configPath)}e.isWorkspaceIdentifier=C;class s{constructor(a,u,h,r,c){this._id=a,this._transient=h,this._configuration=r,this._ignorePathCasing=c,this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0),this.folders=u}get folders(){return this._folders}set folders(a){this._folders=a,this.updateFoldersMap()}get id(){return this._id}get transient(){return this._transient}get configuration(){return this._configuration}set configuration(a){this._configuration=a}getFolder(a){return a&&this._foldersMap.findSubstr(a)||null}updateFoldersMap(){this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0);for(const a of this.folders)this._foldersMap.set(a.uri,a)}toJSON(){return{id:this.id,folders:this.folders,transient:this.transient,configuration:this.configuration}}}e.Workspace=s;class i{constructor(a,u){this.raw=u,this.uri=a.uri,this.index=a.index,this.name=a.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}e.WorkspaceFolder=i,e.WORKSPACE_EXTENSION="code-workspace",e.WORKSPACE_FILTER=[{name:(0,L.localize)(0,null),extensions:[e.WORKSPACE_EXTENSION]}],e.STANDALONE_EDITOR_WORKSPACE_ID="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function n(t){return t.id===e.STANDALONE_EDITOR_WORKSPACE_ID}e.isStandaloneEditorWorkspace=n}),define(ne[909],se([1,0,7,131,39,2,17,16,21,647,30,15,57,34,28,163]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuController=void 0;let h=u=class{static get(o){return o.getContribution(u.ID)}constructor(o,d,l,p,m,v,b,w){this._contextMenuService=d,this._contextViewService=l,this._contextKeyService=p,this._keybindingService=m,this._menuService=v,this._configurationService=b,this._workspaceContextService=w,this._toDispose=new D.DisposableStore,this._contextMenuIsBeingShownCount=0,this._editor=o,this._toDispose.add(this._editor.onContextMenu(E=>this._onContextMenu(E))),this._toDispose.add(this._editor.onMouseWheel(E=>{if(this._contextMenuIsBeingShownCount>0){const I=this._contextViewService.getContextViewElement(),M=E.srcElement;M.shadowRoot&&L.getShadowRoot(I)===M.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(E=>{this._editor.getOption(23)&&E.keyCode===58&&(E.preventDefault(),E.stopPropagation(),this.showContextMenu())}))}_onContextMenu(o){if(!this._editor.hasModel())return;if(!this._editor.getOption(23)){this._editor.focus(),o.target.position&&!this._editor.getSelection().containsPosition(o.target.position)&&this._editor.setPosition(o.target.position);return}if(o.target.type===12||o.target.type===6&&o.target.detail.injectedText)return;if(o.event.preventDefault(),o.event.stopPropagation(),o.target.type===11)return this._showScrollbarContextMenu(o.event);if(o.target.type!==6&&o.target.type!==7&&o.target.type!==1)return;if(this._editor.focus(),o.target.position){let l=!1;for(const p of this._editor.getSelections())if(p.containsPosition(o.target.position)){l=!0;break}l||this._editor.setPosition(o.target.position)}let d=null;o.target.type!==1&&(d=o.event),this.showContextMenu(d)}showContextMenu(o){if(!this._editor.getOption(23)||!this._editor.hasModel())return;const d=this._getMenuActions(this._editor.getModel(),this._editor.isSimpleWidget?C.MenuId.SimpleEditorContext:C.MenuId.EditorContext);d.length>0&&this._doShowContextMenu(d,o)}_getMenuActions(o,d){const l=[],p=this._menuService.createMenu(d,this._contextKeyService),m=p.getActions({arg:o.uri});p.dispose();for(const v of m){const[,b]=v;let w=0;for(const E of b)if(E instanceof C.SubmenuItemAction){const I=this._getMenuActions(o,E.item.submenu);I.length>0&&(l.push(new y.SubmenuAction(E.id,E.label,I)),w++)}else l.push(E),w++;w&&l.push(new y.Separator)}return l.length&&l.pop(),l}_doShowContextMenu(o,d=null){if(!this._editor.hasModel())return;const l=this._editor.getOption(59);this._editor.updateOptions({hover:{enabled:!1}});let p=d;if(!p){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const v=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),b=L.getDomNodePagePosition(this._editor.getDomNode()),w=b.left+v.left,E=b.top+v.top+v.height;p={x:w,y:E}}const m=this._editor.getOption(125)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:m?this._editor.getDomNode():void 0,getAnchor:()=>p,getActions:()=>o,getActionViewItem:v=>{const b=this._keybindingFor(v);if(b)return new k.ActionViewItem(v,v,{label:!0,keybinding:b.getLabel(),isMenu:!0});const w=v;return typeof w.getActionViewItem=="function"?w.getActionViewItem():new k.ActionViewItem(v,v,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:v=>this._keybindingFor(v),onHide:v=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:l})}})}_showScrollbarContextMenu(o){if(!this._editor.hasModel()||(0,a.isStandaloneEditorWorkspace)(this._workspaceContextService.getWorkspace()))return;const d=this._editor.getOption(71);let l=0;const p=E=>({id:`menu-action-${++l}`,label:E.label,tooltip:"",class:void 0,enabled:typeof E.enabled>"u"?!0:E.enabled,checked:E.checked,run:E.run}),m=(E,I)=>new y.SubmenuAction(`menu-action-${++l}`,E,I,void 0),v=(E,I,M,P,x)=>{if(!I)return p({label:E,enabled:I,run:()=>{}});const T=N=>()=>{this._configurationService.updateValue(M,N)},A=[];for(const N of x)A.push(p({label:N.label,checked:P===N.value,run:T(N.value)}));return m(E,A)},b=[];b.push(p({label:g.localize(0,null),checked:d.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!d.enabled)}})),b.push(new y.Separator),b.push(p({label:g.localize(1,null),enabled:d.enabled,checked:d.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!d.renderCharacters)}})),b.push(v(g.localize(2,null),d.enabled,"editor.minimap.size",d.size,[{label:g.localize(3,null),value:"proportional"},{label:g.localize(4,null),value:"fill"},{label:g.localize(5,null),value:"fit"}])),b.push(v(g.localize(6,null),d.enabled,"editor.minimap.showSlider",d.showSlider,[{label:g.localize(7,null),value:"mouseover"},{label:g.localize(8,null),value:"always"}]));const w=this._editor.getOption(125)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:w?this._editor.getDomNode():void 0,getAnchor:()=>o,getActions:()=>b,onHide:E=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(o){return this._keybindingService.lookupKeybinding(o.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};e.ContextMenuController=h,h.ID="editor.contrib.contextmenu",e.ContextMenuController=h=u=ke([fe(1,i.IContextMenuService),fe(2,i.IContextViewService),fe(3,s.IContextKeyService),fe(4,n.IKeybindingService),fe(5,C.IMenuService),fe(6,t.IConfigurationService),fe(7,a.IWorkspaceContextService)],h);class r extends f.EditorAction{constructor(){super({id:"editor.action.showContextMenu",label:g.localize(9,null),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.textInputFocus,primary:1092,weight:100}})}run(o,d){var l;(l=h.get(d))===null||l===void 0||l.showContextMenu()}}(0,f.registerEditorContribution)(h.ID,h,2),(0,f.registerEditorAction)(r)}),define(ne[376],se([1,0,14,171,2,107,54,45,22,18,651,163]),function(Q,e,L,k,y,D,S,f,_,g,C,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultPasteProvidersFeature=e.DefaultDropProvidersFeature=void 0;const i=(0,C.localize)(0,null);class n{provideDocumentPasteEdits(d,l,p,m){return we(this,void 0,void 0,function*(){const v=yield this.getEdit(p,m);return v?{insertText:v.insertText,label:v.label,detail:v.detail,handledMimeType:v.handledMimeType,yieldTo:v.yieldTo}:void 0})}provideDocumentOnDropEdits(d,l,p,m){return we(this,void 0,void 0,function*(){const v=yield this.getEdit(p,m);return v?{insertText:v.insertText,label:v.label,handledMimeType:v.handledMimeType,yieldTo:v.yieldTo}:void 0})}}class t extends n{constructor(){super(...arguments),this.id="text",this.dropMimeTypes=[D.Mimes.text],this.pasteMimeTypes=[D.Mimes.text]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=d.get(D.Mimes.text);if(!p||d.has(D.Mimes.uriList))return;const m=yield p.asString();return{handledMimeType:D.Mimes.text,label:(0,C.localize)(1,null),detail:i,insertText:m}})}}class a extends n{constructor(){super(...arguments),this.id="uri",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=yield h(d);if(!p.length||l.isCancellationRequested)return;let m=0;const v=p.map(({uri:w,originalText:E})=>w.scheme===S.Schemas.file?w.fsPath:(m++,E)).join(" ");let b;return m>0?b=p.length>1?(0,C.localize)(2,null):(0,C.localize)(3,null):b=p.length>1?(0,C.localize)(4,null):(0,C.localize)(5,null),{handledMimeType:D.Mimes.uriList,insertText:v,label:b,detail:i}})}}let u=class extends n{constructor(d){super(),this._workspaceContextService=d,this.id="relativePath",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=yield h(d);if(!p.length||l.isCancellationRequested)return;const m=(0,L.coalesce)(p.map(({uri:v})=>{const b=this._workspaceContextService.getWorkspaceFolder(v);return b?(0,f.relativePath)(b.uri,v):void 0}));if(m.length)return{handledMimeType:D.Mimes.uriList,insertText:m.join(" "),label:p.length>1?(0,C.localize)(6,null):(0,C.localize)(7,null),detail:i}})}};u=ke([fe(0,s.IWorkspaceContextService)],u);function h(o){return we(this,void 0,void 0,function*(){const d=o.get(D.Mimes.uriList);if(!d)return[];const l=yield d.asString(),p=[];for(const m of k.UriList.parse(l))try{p.push({uri:_.URI.parse(m),originalText:m})}catch{}return p})}let r=class extends y.Disposable{constructor(d,l){super(),this._register(d.documentOnDropEditProvider.register("*",new t)),this._register(d.documentOnDropEditProvider.register("*",new a)),this._register(d.documentOnDropEditProvider.register("*",new u(l)))}};e.DefaultDropProvidersFeature=r,e.DefaultDropProvidersFeature=r=ke([fe(0,g.ILanguageFeaturesService),fe(1,s.IWorkspaceContextService)],r);let c=class extends y.Disposable{constructor(d,l){super(),this._register(d.documentPasteEditProvider.register("*",new t)),this._register(d.documentPasteEditProvider.register("*",new a)),this._register(d.documentPasteEditProvider.register("*",new u(l)))}};e.DefaultPasteProvidersFeature=c,e.DefaultPasteProvidersFeature=c=ke([fe(0,g.ILanguageFeaturesService),fe(1,s.IWorkspaceContextService)],c)}),define(ne[910],se([1,0,16,149,888,376,649]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(y.CopyPasteController.ID,y.CopyPasteController,0),(0,k.registerEditorFeature)(D.DefaultPasteProvidersFeature),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:y.changePasteTypeCommandId,precondition:y.pasteWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(f,_,g){var C;return(C=y.CopyPasteController.get(_))===null||C===void 0?void 0:C.changePasteType()}}),(0,L.registerEditorAction)(class extends L.EditorAction{constructor(){super({id:"editor.action.pasteAs",label:S.localize(0,null),alias:"Paste As...",precondition:void 0,description:{description:"Paste as",args:[{name:"args",schema:{type:"object",properties:{id:{type:"string",description:S.localize(1,null)}}}}]}})}run(f,_,g){var C;const s=typeof g?.id=="string"?g.id:void 0;return(C=y.CopyPasteController.get(_))===null||C===void 0?void 0:C.pasteAs(s)}})}),define(ne[911],se([1,0,16,241,149,376,652,98,37,889]),function(Q,e,L,k,y,D,S,f,_,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(g.DropIntoEditorController.ID,g.DropIntoEditorController,2),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:g.changeDropTypeCommandId,precondition:g.dropWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(C,s,i){var n;(n=g.DropIntoEditorController.get(s))===null||n===void 0||n.changeDropType()}}),(0,y.registerEditorFeature)(D.DefaultDropProvidersFeature),_.Registry.as(f.Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({},k.editorConfigurationBaseNode),{properties:{[g.defaultProviderConfig]:{type:"object",scope:5,description:S.localize(0,null),default:{},additionalProperties:{type:"string"}}}}))}),define(ne[912],se([1,0,571,92,45,11,170,32,128,698,163]),function(Q,e,L,k,y,D,S,f,_,g,C){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RandomBasedVariableResolver=e.WorkspaceBasedVariableResolver=e.TimeBasedVariableResolver=e.CommentBasedVariableResolver=e.ClipboardBasedVariableResolver=e.ModelBasedVariableResolver=e.SelectionBasedVariableResolver=e.CompositeSnippetVariableResolver=e.KnownSnippetVariableNames=void 0,e.KnownSnippetVariableNames=Object.freeze({CURRENT_YEAR:!0,CURRENT_YEAR_SHORT:!0,CURRENT_MONTH:!0,CURRENT_DATE:!0,CURRENT_HOUR:!0,CURRENT_MINUTE:!0,CURRENT_SECOND:!0,CURRENT_DAY_NAME:!0,CURRENT_DAY_NAME_SHORT:!0,CURRENT_MONTH_NAME:!0,CURRENT_MONTH_NAME_SHORT:!0,CURRENT_SECONDS_UNIX:!0,CURRENT_TIMEZONE_OFFSET:!0,SELECTION:!0,CLIPBOARD:!0,TM_SELECTED_TEXT:!0,TM_CURRENT_LINE:!0,TM_CURRENT_WORD:!0,TM_LINE_INDEX:!0,TM_LINE_NUMBER:!0,TM_FILENAME:!0,TM_FILENAME_BASE:!0,TM_DIRECTORY:!0,TM_FILEPATH:!0,CURSOR_INDEX:!0,CURSOR_NUMBER:!0,RELATIVE_FILEPATH:!0,BLOCK_COMMENT_START:!0,BLOCK_COMMENT_END:!0,LINE_COMMENT:!0,WORKSPACE_NAME:!0,WORKSPACE_FOLDER:!0,RANDOM:!0,RANDOM_HEX:!0,UUID:!0});class s{constructor(o){this._delegates=o}resolve(o){for(const d of this._delegates){const l=d.resolve(o);if(l!==void 0)return l}}}e.CompositeSnippetVariableResolver=s;class i{constructor(o,d,l,p){this._model=o,this._selection=d,this._selectionIdx=l,this._overtypingCapturer=p}resolve(o){const{name:d}=o;if(d==="SELECTION"||d==="TM_SELECTED_TEXT"){let l=this._model.getValueInRange(this._selection)||void 0,p=this._selection.startLineNumber!==this._selection.endLineNumber;if(!l&&this._overtypingCapturer){const m=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);m&&(l=m.value,p=m.multiline)}if(l&&p&&o.snippet){const m=this._model.getLineContent(this._selection.startLineNumber),v=(0,D.getLeadingWhitespace)(m,0,this._selection.startColumn-1);let b=v;o.snippet.walk(E=>E===o?!1:(E instanceof _.Text&&(b=(0,D.getLeadingWhitespace)((0,D.splitLines)(E.value).pop())),!0));const w=(0,D.commonPrefixLength)(b,v);l=l.replace(/(\r\n|\r|\n)(.*)/g,(E,I,M)=>`${I}${b.substr(w)}${M}`)}return l}else{if(d==="TM_CURRENT_LINE")return this._model.getLineContent(this._selection.positionLineNumber);if(d==="TM_CURRENT_WORD"){const l=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return l&&l.word||void 0}else{if(d==="TM_LINE_INDEX")return String(this._selection.positionLineNumber-1);if(d==="TM_LINE_NUMBER")return String(this._selection.positionLineNumber);if(d==="CURSOR_INDEX")return String(this._selectionIdx);if(d==="CURSOR_NUMBER")return String(this._selectionIdx+1)}}}}e.SelectionBasedVariableResolver=i;class n{constructor(o,d){this._labelService=o,this._model=d}resolve(o){const{name:d}=o;if(d==="TM_FILENAME")return k.basename(this._model.uri.fsPath);if(d==="TM_FILENAME_BASE"){const l=k.basename(this._model.uri.fsPath),p=l.lastIndexOf(".");return p<=0?l:l.slice(0,p)}else{if(d==="TM_DIRECTORY")return k.dirname(this._model.uri.fsPath)==="."?"":this._labelService.getUriLabel((0,y.dirname)(this._model.uri));if(d==="TM_FILEPATH")return this._labelService.getUriLabel(this._model.uri);if(d==="RELATIVE_FILEPATH")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}e.ModelBasedVariableResolver=n;class t{constructor(o,d,l,p){this._readClipboardText=o,this._selectionIdx=d,this._selectionCount=l,this._spread=p}resolve(o){if(o.name!=="CLIPBOARD")return;const d=this._readClipboardText();if(d){if(this._spread){const l=d.split(/\r\n|\n|\r/).filter(p=>!(0,D.isFalsyOrWhitespace)(p));if(l.length===this._selectionCount)return l[this._selectionIdx]}return d}}}e.ClipboardBasedVariableResolver=t;let a=class{constructor(o,d,l){this._model=o,this._selection=d,this._languageConfigurationService=l}resolve(o){const{name:d}=o,l=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),p=this._languageConfigurationService.getLanguageConfiguration(l).comments;if(p){if(d==="LINE_COMMENT")return p.lineCommentToken||void 0;if(d==="BLOCK_COMMENT_START")return p.blockCommentStartToken||void 0;if(d==="BLOCK_COMMENT_END")return p.blockCommentEndToken||void 0}}};e.CommentBasedVariableResolver=a,e.CommentBasedVariableResolver=a=ke([fe(2,f.ILanguageConfigurationService)],a);class u{constructor(){this._date=new Date}resolve(o){const{name:d}=o;if(d==="CURRENT_YEAR")return String(this._date.getFullYear());if(d==="CURRENT_YEAR_SHORT")return String(this._date.getFullYear()).slice(-2);if(d==="CURRENT_MONTH")return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if(d==="CURRENT_DATE")return String(this._date.getDate().valueOf()).padStart(2,"0");if(d==="CURRENT_HOUR")return String(this._date.getHours().valueOf()).padStart(2,"0");if(d==="CURRENT_MINUTE")return String(this._date.getMinutes().valueOf()).padStart(2,"0");if(d==="CURRENT_SECOND")return String(this._date.getSeconds().valueOf()).padStart(2,"0");if(d==="CURRENT_DAY_NAME")return u.dayNames[this._date.getDay()];if(d==="CURRENT_DAY_NAME_SHORT")return u.dayNamesShort[this._date.getDay()];if(d==="CURRENT_MONTH_NAME")return u.monthNames[this._date.getMonth()];if(d==="CURRENT_MONTH_NAME_SHORT")return u.monthNamesShort[this._date.getMonth()];if(d==="CURRENT_SECONDS_UNIX")return String(Math.floor(this._date.getTime()/1e3));if(d==="CURRENT_TIMEZONE_OFFSET"){const l=this._date.getTimezoneOffset(),p=l>0?"-":"+",m=Math.trunc(Math.abs(l/60)),v=m<10?"0"+m:m,b=Math.abs(l)-m*60,w=b<10?"0"+b:b;return p+v+":"+w}}}e.TimeBasedVariableResolver=u,u.dayNames=[g.localize(0,null),g.localize(1,null),g.localize(2,null),g.localize(3,null),g.localize(4,null),g.localize(5,null),g.localize(6,null)],u.dayNamesShort=[g.localize(7,null),g.localize(8,null),g.localize(9,null),g.localize(10,null),g.localize(11,null),g.localize(12,null),g.localize(13,null)],u.monthNames=[g.localize(14,null),g.localize(15,null),g.localize(16,null),g.localize(17,null),g.localize(18,null),g.localize(19,null),g.localize(20,null),g.localize(21,null),g.localize(22,null),g.localize(23,null),g.localize(24,null),g.localize(25,null)],u.monthNamesShort=[g.localize(26,null),g.localize(27,null),g.localize(28,null),g.localize(29,null),g.localize(30,null),g.localize(31,null),g.localize(32,null),g.localize(33,null),g.localize(34,null),g.localize(35,null),g.localize(36,null),g.localize(37,null)];class h{constructor(o){this._workspaceService=o}resolve(o){if(!this._workspaceService)return;const d=(0,C.toWorkspaceIdentifier)(this._workspaceService.getWorkspace());if(!(0,C.isEmptyWorkspaceIdentifier)(d)){if(o.name==="WORKSPACE_NAME")return this._resolveWorkspaceName(d);if(o.name==="WORKSPACE_FOLDER")return this._resoveWorkspacePath(d)}}_resolveWorkspaceName(o){if((0,C.isSingleFolderWorkspaceIdentifier)(o))return k.basename(o.uri.path);let d=k.basename(o.configPath.path);return d.endsWith(C.WORKSPACE_EXTENSION)&&(d=d.substr(0,d.length-C.WORKSPACE_EXTENSION.length-1)),d}_resoveWorkspacePath(o){if((0,C.isSingleFolderWorkspaceIdentifier)(o))return(0,L.normalizeDriveLetter)(o.uri.fsPath);const d=k.basename(o.configPath.path);let l=o.configPath.fsPath;return l.endsWith(d)&&(l=l.substr(0,l.length-d.length-1)),l?(0,L.normalizeDriveLetter)(l):"/"}}e.WorkspaceBasedVariableResolver=h;class r{resolve(o){const{name:d}=o;if(d==="RANDOM")return Math.random().toString().slice(-6);if(d==="RANDOM_HEX")return Math.random().toString(16).slice(-6);if(d==="UUID")return(0,S.generateUuid)()}}e.RandomBasedVariableResolver=r}),define(ne[377],se([1,0,14,2,11,73,5,24,32,40,158,163,128,912,460]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetSession=e.OneSnippet=void 0;class a{constructor(c,o,d){this._editor=c,this._snippet=o,this._snippetLineLeadingWhitespace=d,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=(0,L.groupBy)(o.placeholders,i.Placeholder.compareByIndex),this._placeholderGroupsIdx=-1}initialize(c){this._offset=c.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const c=this._editor.getModel();this._editor.changeDecorations(o=>{for(const d of this._snippet.placeholders){const l=this._snippet.offset(d),p=this._snippet.fullLen(d),m=S.Range.fromPositions(c.getPositionAt(this._offset+l),c.getPositionAt(this._offset+l+p)),v=d.isFinalTabstop?a._decor.inactiveFinal:a._decor.inactive,b=o.addDecoration(m,v);this._placeholderDecorations.set(d,b)}})}move(c){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const l=[];for(const p of this._placeholderGroups[this._placeholderGroupsIdx])if(p.transform){const m=this._placeholderDecorations.get(p),v=this._editor.getModel().getDecorationRange(m),b=this._editor.getModel().getValueInRange(v),w=p.transform.resolve(b).split(/\r\n|\r|\n/);for(let E=1;E0&&this._editor.executeEdits("snippet.placeholderTransform",l)}let o=!1;c===!0&&this._placeholderGroupsIdx0&&(this._placeholderGroupsIdx-=1,o=!0);const d=this._editor.getModel().changeDecorations(l=>{const p=new Set,m=[];for(const v of this._placeholderGroups[this._placeholderGroupsIdx]){const b=this._placeholderDecorations.get(v),w=this._editor.getModel().getDecorationRange(b);m.push(new f.Selection(w.startLineNumber,w.startColumn,w.endLineNumber,w.endColumn)),o=o&&this._hasPlaceholderBeenCollapsed(v),l.changeDecorationOptions(b,v.isFinalTabstop?a._decor.activeFinal:a._decor.active),p.add(v);for(const E of this._snippet.enclosingPlaceholders(v)){const I=this._placeholderDecorations.get(E);l.changeDecorationOptions(I,E.isFinalTabstop?a._decor.activeFinal:a._decor.active),p.add(E)}}for(const[v,b]of this._placeholderDecorations)p.has(v)||l.changeDecorationOptions(b,v.isFinalTabstop?a._decor.inactiveFinal:a._decor.inactive);return m});return o?this.move(c):d??[]}_hasPlaceholderBeenCollapsed(c){let o=c;for(;o;){if(o instanceof i.Placeholder){const d=this._placeholderDecorations.get(o);if(this._editor.getModel().getDecorationRange(d).isEmpty()&&o.toString().length>0)return!0}o=o.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[c]=this._snippet.placeholders;if(c.isFinalTabstop&&this._snippet.rightMostDescendant===c)return!0}return!1}computePossibleSelections(){const c=new Map;for(const o of this._placeholderGroups){let d;for(const l of o){if(l.isFinalTabstop)break;d||(d=[],c.set(l.index,d));const p=this._placeholderDecorations.get(l),m=this._editor.getModel().getDecorationRange(p);if(!m){c.delete(l.index);break}d.push(m)}}return c}get activeChoice(){if(!this._placeholderDecorations)return;const c=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!c?.choice)return;const o=this._placeholderDecorations.get(c);if(!o)return;const d=this._editor.getModel().getDecorationRange(o);if(d)return{range:d,choice:c.choice}}get hasChoice(){let c=!1;return this._snippet.walk(o=>(c=o instanceof i.Choice,!c)),c}merge(c){const o=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(d=>{for(const l of this._placeholderGroups[this._placeholderGroupsIdx]){const p=c.shift();console.assert(p._offset!==-1),console.assert(!p._placeholderDecorations);const m=p._snippet.placeholderInfo.last.index;for(const b of p._snippet.placeholderInfo.all)b.isFinalTabstop?b.index=l.index+(m+1)/this._nestingLevel:b.index=l.index+b.index/this._nestingLevel;this._snippet.replace(l,p._snippet.children);const v=this._placeholderDecorations.get(l);d.removeDecoration(v),this._placeholderDecorations.delete(l);for(const b of p._snippet.placeholders){const w=p._snippet.offset(b),E=p._snippet.fullLen(b),I=S.Range.fromPositions(o.getPositionAt(p._offset+w),o.getPositionAt(p._offset+w+E)),M=d.addDecoration(I,a._decor.inactive);this._placeholderDecorations.set(b,M)}}this._placeholderGroups=(0,L.groupBy)(this._snippet.placeholders,i.Placeholder.compareByIndex)})}}e.OneSnippet=a,a._decor={active:g.ModelDecorationOptions.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:g.ModelDecorationOptions.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:g.ModelDecorationOptions.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:g.ModelDecorationOptions.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};const u={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let h=t=class{static adjustWhitespace(c,o,d,l,p){const m=c.getLineContent(o.lineNumber),v=(0,y.getLeadingWhitespace)(m,0,o.column-1);let b;return l.walk(w=>{if(!(w instanceof i.Text)||w.parent instanceof i.Choice||p&&!p.has(w))return!0;const E=w.value.split(/\r\n|\r|\n/);if(d){const M=l.offset(w);if(M===0)E[0]=c.normalizeIndentation(E[0]);else{b=b??l.toString();const P=b.charCodeAt(M-1);(P===10||P===13)&&(E[0]=c.normalizeIndentation(v+E[0]))}for(let P=1;PW.get(s.IWorkspaceContextService)),x=c.invokeWithinContext(W=>new n.ModelBasedVariableResolver(W.get(C.ILabelService),M)),T=()=>v,A=M.getValueInRange(t.adjustSelection(M,c.getSelection(),d,0)),N=M.getValueInRange(t.adjustSelection(M,c.getSelection(),0,l)),F=M.getLineFirstNonWhitespaceColumn(c.getSelection().positionLineNumber),O=c.getSelections().map((W,U)=>({selection:W,idx:U})).sort((W,U)=>S.Range.compareRangesUsingStarts(W.selection,U.selection));for(const{selection:W,idx:U}of O){let j=t.adjustSelection(M,W,d,0),R=t.adjustSelection(M,W,0,l);A!==M.getValueInRange(j)&&(j=W),N!==M.getValueInRange(R)&&(R=W);const K=W.setStartPosition(j.startLineNumber,j.startColumn).setEndPosition(R.endLineNumber,R.endColumn),G=new i.SnippetParser().parse(o,!0,p),Z=K.getStartPosition(),J=t.adjustWhitespace(M,Z,m||U>0&&F!==M.getLineFirstNonWhitespaceColumn(W.positionLineNumber),G);G.resolveVariables(new n.CompositeSnippetVariableResolver([x,new n.ClipboardBasedVariableResolver(T,U,O.length,c.getOption(77)==="spread"),new n.SelectionBasedVariableResolver(M,W,U,b),new n.CommentBasedVariableResolver(M,W,w),new n.TimeBasedVariableResolver,new n.WorkspaceBasedVariableResolver(P),new n.RandomBasedVariableResolver])),E[U]=D.EditOperation.replace(K,G.toString()),E[U].identifier={major:U,minor:0},E[U]._isTracked=!0,I[U]=new a(c,G,J)}return{edits:E,snippets:I}}static createEditsAndSnippetsFromEdits(c,o,d,l,p,m,v){if(!c.hasModel()||o.length===0)return{edits:[],snippets:[]};const b=[],w=c.getModel(),E=new i.SnippetParser,I=new i.TextmateSnippet,M=new n.CompositeSnippetVariableResolver([c.invokeWithinContext(x=>new n.ModelBasedVariableResolver(x.get(C.ILabelService),w)),new n.ClipboardBasedVariableResolver(()=>p,0,c.getSelections().length,c.getOption(77)==="spread"),new n.SelectionBasedVariableResolver(w,c.getSelection(),0,m),new n.CommentBasedVariableResolver(w,c.getSelection(),v),new n.TimeBasedVariableResolver,new n.WorkspaceBasedVariableResolver(c.invokeWithinContext(x=>x.get(s.IWorkspaceContextService))),new n.RandomBasedVariableResolver]);o=o.sort((x,T)=>S.Range.compareRangesUsingStarts(x.range,T.range));let P=0;for(let x=0;x0){const U=o[x-1].range,j=S.Range.fromPositions(U.getEndPosition(),T.getStartPosition()),R=new i.Text(w.getValueInRange(j));I.appendChild(R),P+=R.value.length}const N=E.parseFragment(A,I);t.adjustWhitespace(w,T.getStartPosition(),!0,I,new Set(N)),I.resolveVariables(M);const F=I.toString(),O=F.slice(P);P=F.length;const W=D.EditOperation.replace(T,O);W.identifier={major:x,minor:0},W._isTracked=!0,b.push(W)}return E.ensureFinalTabstop(I,d,!0),{edits:b,snippets:[new a(c,I,"")]}}constructor(c,o,d=u,l){this._editor=c,this._template=o,this._options=d,this._languageConfigurationService=l,this._templateMerges=[],this._snippets=[]}dispose(){(0,k.dispose)(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:c,snippets:o}=typeof this._template=="string"?t.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):t.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=o,this._editor.executeEdits("snippet",c,d=>{const l=d.filter(p=>!!p.identifier);for(let p=0;pf.Selection.fromPositions(p.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(c,o=u){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,c]);const{edits:d,snippets:l}=t.createEditsAndSnippetsFromSelections(this._editor,c,o.overwriteBefore,o.overwriteAfter,!0,o.adjustWhitespace,o.clipboardText,o.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",d,p=>{const m=p.filter(b=>!!b.identifier);for(let b=0;bf.Selection.fromPositions(b.range.getEndPosition()))})}next(){const c=this._move(!0);this._editor.setSelections(c),this._editor.revealPositionInCenterIfOutsideViewport(c[0].getPosition())}prev(){const c=this._move(!1);this._editor.setSelections(c),this._editor.revealPositionInCenterIfOutsideViewport(c[0].getPosition())}_move(c){const o=[];for(const d of this._snippets){const l=d.move(c);o.push(...l)}return o}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const c=this._editor.getSelections();if(c.length{p.push(...l.get(m))})}c.sort(S.Range.compareRangesUsingStarts);for(const[d,l]of o){if(l.length!==c.length){o.delete(d);continue}l.sort(S.Range.compareRangesUsingStarts);for(let p=0;p0}};e.SnippetSession=h,e.SnippetSession=h=t=ke([fe(3,_.ILanguageConfigurationService)],h)}),define(ne[194],se([1,0,2,20,16,12,21,32,18,135,697,15,70,377]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetController2=void 0;const a={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let u=t=class{static get(c){return c.getContribution(t.ID)}constructor(c,o,d,l,p){this._editor=c,this._logService=o,this._languageFeaturesService=d,this._languageConfigurationService=p,this._snippetListener=new L.DisposableStore,this._modelVersionId=-1,this._inSnippet=t.InSnippetMode.bindTo(l),this._hasNextTabstop=t.HasNextTabstop.bindTo(l),this._hasPrevTabstop=t.HasPrevTabstop.bindTo(l)}dispose(){var c;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(c=this._session)===null||c===void 0||c.dispose(),this._snippetListener.dispose()}insert(c,o){try{this._doInsert(c,typeof o>"u"?a:Object.assign(Object.assign({},a),o))}catch(d){this.cancel(),this._logService.error(d),this._logService.error("snippet_error"),this._logService.error("insert_template=",c),this._logService.error("existing_template=",this._session?this._session._logInfo():"")}}_doInsert(c,o){var d;if(this._editor.hasModel()){if(this._snippetListener.clear(),o.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof c!="string"&&this.cancel(),this._session?((0,k.assertType)(typeof c=="string"),this._session.merge(c,o)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new n.SnippetSession(this._editor,c,o,this._languageConfigurationService),this._session.insert()),o.undoStopAfter&&this._editor.getModel().pushStackElement(),!((d=this._session)===null||d===void 0)&&d.hasChoice){const l={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(E,I)=>{if(!this._session||E!==this._editor.getModel()||!D.Position.equals(this._editor.getPosition(),I))return;const{activeChoice:M}=this._session;if(!M||M.choice.options.length===0)return;const P=E.getValueInRange(M.range),x=!!M.choice.options.find(A=>A.value===P),T=[];for(let A=0;A{m?.dispose(),v=!1},w=()=>{v||(m=this._languageFeaturesService.completionProvider.register({language:p.getLanguageId(),pattern:p.uri.fsPath,scheme:p.uri.scheme,exclusive:!0},l),this._snippetListener.add(m),v=!0)};this._choiceCompletions={provider:l,enable:w,disable:b}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(l=>l.isFlush&&this.cancel())),this._snippetListener.add(this._editor.onDidChangeModel(()=>this.cancel())),this._snippetListener.add(this._editor.onDidChangeCursorSelection(()=>this._updateState()))}}_updateState(){if(!(!this._session||!this._editor.hasModel())){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var c;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:o}=this._session;if(!o||!this._choiceCompletions){(c=this._choiceCompletions)===null||c===void 0||c.disable(),this._currentChoice=void 0;return}this._currentChoice!==o.choice&&(this._currentChoice=o.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{(0,g.showSimpleSuggestions)(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(c=!1){var o;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(o=this._session)===null||o===void 0||o.dispose(),this._session=void 0,this._modelVersionId=-1,c&&this._editor.setSelections([this._editor.getSelection()])}prev(){var c;(c=this._session)===null||c===void 0||c.prev(),this._updateState()}next(){var c;(c=this._session)===null||c===void 0||c.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}};e.SnippetController2=u,u.ID="snippetController2",u.InSnippetMode=new s.RawContextKey("inSnippetMode",!1,(0,C.localize)(0,null)),u.HasNextTabstop=new s.RawContextKey("hasNextTabstop",!1,(0,C.localize)(1,null)),u.HasPrevTabstop=new s.RawContextKey("hasPrevTabstop",!1,(0,C.localize)(2,null)),e.SnippetController2=u=t=ke([fe(1,i.ILogService),fe(2,_.ILanguageFeaturesService),fe(3,s.IContextKeyService),fe(4,f.ILanguageConfigurationService)],u),(0,y.registerEditorContribution)(u.ID,u,4);const h=y.EditorCommand.bindToContribution(u.get);(0,y.registerEditorCommand)(new h({id:"jumpToNextSnippetPlaceholder",precondition:s.ContextKeyExpr.and(u.InSnippetMode,u.HasNextTabstop),handler:r=>r.next(),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:2}})),(0,y.registerEditorCommand)(new h({id:"jumpToPrevSnippetPlaceholder",precondition:s.ContextKeyExpr.and(u.InSnippetMode,u.HasPrevTabstop),handler:r=>r.prev(),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:1026}})),(0,y.registerEditorCommand)(new h({id:"leaveSnippet",precondition:u.InSnippetMode,handler:r=>r.cancel(!0),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new h({id:"acceptSnippet",precondition:u.InSnippetMode,handler:r=>r.finish()}))}),define(ne[913],se([1,0,14,9,2,42,20,73,12,5,29,32,215,779,151,194,27,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionsModel=e.VersionIdChangeReason=void 0;var r;(function(o){o[o.Undo=0]="Undo",o[o.Redo=1]="Redo",o[o.AcceptWord=2]="AcceptWord",o[o.Other=3]="Other"})(r||(e.VersionIdChangeReason=r={}));let c=class extends y.Disposable{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(d,l,p,m,v,b,w,E,I,M,P,x){super(),this.textModel=d,this.selectedSuggestItem=l,this.cursorPosition=p,this.textModelVersionId=m,this._debounceValue=v,this._suggestPreviewEnabled=b,this._suggestPreviewMode=w,this._inlineSuggestMode=E,this._enabled=I,this._instantiationService=M,this._commandService=P,this._languageConfigurationService=x,this._source=this._register(this._instantiationService.createInstance(n.InlineCompletionsSource,this.textModel,this.textModelVersionId,this._debounceValue)),this._isActive=(0,D.observableValue)("isActive",!1),this._forceUpdate=(0,D.observableSignal)("forceUpdate"),this._selectedInlineCompletionId=(0,D.observableValue)("selectedInlineCompletionId",void 0),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([r.Redo,r.Undo,r.AcceptWord]),this._fetchInlineCompletions=(0,D.derivedHandleChanges)("fetch inline completions",{createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:C.InlineCompletionTriggerKind.Automatic}),handleChange:(A,N)=>(A.didChange(this.textModelVersionId)&&this._preserveCurrentCompletionReasons.has(A.change)?N.preserveCurrentCompletion=!0:A.didChange(this._forceUpdate)&&(N.inlineCompletionTriggerKind=A.change),!0)},(A,N)=>{if(this._forceUpdate.read(A),!(this._enabled.read(A)&&this.selectedSuggestItem.read(A)||this._isActive.read(A))){this._source.cancelUpdate();return}this.textModelVersionId.read(A);const O=this.selectedInlineCompletion.get(),W=N.preserveCurrentCompletion||O?.forwardStable?O:void 0,U=this._source.suggestWidgetInlineCompletions.get(),j=this.selectedSuggestItem.read(A);if(U&&!j){const G=this._source.inlineCompletions.get();(0,D.transaction)(Z=>{G&&U.request.versionId>G.request.versionId&&this._source.inlineCompletions.set(U.clone(),Z),this._source.clearSuggestWidgetInlineCompletions(Z)})}const R=this.cursorPosition.read(A),K={triggerKind:N.inlineCompletionTriggerKind,selectedSuggestionInfo:j?.toSelectedSuggestionInfo()};return this._source.fetch(R,K,W)}),this._filteredInlineCompletionItems=(0,D.derived)(A=>{const N=this._source.inlineCompletions.read(A);if(!N)return[];const F=this.cursorPosition.read(A);return N.inlineCompletions.filter(W=>W.isVisible(this.textModel,F,A))}),this.selectedInlineCompletionIndex=(0,D.derived)(A=>{const N=this._selectedInlineCompletionId.read(A),F=this._filteredInlineCompletionItems.read(A),O=this._selectedInlineCompletionId===void 0?-1:F.findIndex(W=>W.semanticId===N);return O===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):O}),this.selectedInlineCompletion=(0,D.derived)(A=>{const N=this._filteredInlineCompletionItems.read(A),F=this.selectedInlineCompletionIndex.read(A);return N[F]}),this.lastTriggerKind=this._source.inlineCompletions.map(A=>A?.request.context.triggerKind),this.inlineCompletionsCount=(0,D.derived)(A=>{if(this.lastTriggerKind.read(A)===C.InlineCompletionTriggerKind.Explicit)return this._filteredInlineCompletionItems.read(A).length}),this.state=(0,D.derivedOpts)({equalityComparer:(A,N)=>!A||!N?A===N:(0,i.ghostTextOrReplacementEquals)(A.ghostText,N.ghostText)&&A.inlineCompletion===N.inlineCompletion&&A.suggestItem===N.suggestItem},A=>{var N;const F=this.textModel,O=this.selectedSuggestItem.read(A);if(O){const W=O.toSingleTextEdit().removeCommonPrefix(F),U=this._computeAugmentedCompletion(W,A);if(!this._suggestPreviewEnabled.read(A)&&!U)return;const R=(N=U?.edit)!==null&&N!==void 0?N:W,K=U?U.edit.text.length-W.text.length:0,G=this._suggestPreviewMode.read(A),Z=this.cursorPosition.read(A),J=R.computeGhostText(F,G,Z,K);return{ghostText:J??new i.GhostText(R.range.endLineNumber,[]),inlineCompletion:U?.completion,suggestItem:O}}else{if(!this._isActive.read(A))return;const W=this.selectedInlineCompletion.read(A);if(!W)return;const U=W.toSingleTextEdit(A),j=this._inlineSuggestMode.read(A),R=this.cursorPosition.read(A),K=U.computeGhostText(F,j,R);return K?{ghostText:K,inlineCompletion:W,suggestItem:void 0}:void 0}}),this.ghostText=(0,D.derivedOpts)({equalityComparer:i.ghostTextOrReplacementEquals},A=>{const N=this.state.read(A);if(N)return N.ghostText}),this._register((0,D.keepAlive)(this._fetchInlineCompletions,!0));let T;this._register((0,D.autorun)(A=>{var N,F;const O=this.state.read(A),W=O?.inlineCompletion;if(W?.semanticId!==T?.semanticId&&(T=W,W)){const U=W.inlineCompletion,j=U.source;(F=(N=j.provider).handleItemDidShow)===null||F===void 0||F.call(N,j.inlineCompletions,U.sourceInlineCompletion,U.insertText)}}))}trigger(d){return we(this,void 0,void 0,function*(){this._isActive.set(!0,d),yield this._fetchInlineCompletions.get()})}triggerExplicitly(d){return we(this,void 0,void 0,function*(){(0,D.subtransaction)(d,l=>{this._isActive.set(!0,l),this._forceUpdate.trigger(l,C.InlineCompletionTriggerKind.Explicit)}),yield this._fetchInlineCompletions.get()})}stop(d){(0,D.subtransaction)(d,l=>{this._isActive.set(!1,l),this._source.clear(l)})}_computeAugmentedCompletion(d,l){const p=this.textModel,m=this._source.suggestWidgetInlineCompletions.read(l),v=m?m.inlineCompletions:[this.selectedInlineCompletion.read(l)].filter(S.isDefined);return(0,L.mapFind)(v,w=>{let E=w.toSingleTextEdit(l);return E=E.removeCommonPrefix(p,g.Range.fromPositions(E.range.getStartPosition(),d.range.getEndPosition())),E.augments(d)?{edit:E,completion:w}:void 0})}_deltaSelectedInlineCompletionIndex(d){return we(this,void 0,void 0,function*(){yield this.triggerExplicitly();const l=this._filteredInlineCompletionItems.get()||[];if(l.length>0){const p=(this.selectedInlineCompletionIndex.get()+d+l.length)%l.length;this._selectedInlineCompletionId.set(l[p].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)})}next(){return we(this,void 0,void 0,function*(){yield this._deltaSelectedInlineCompletionIndex(1)})}previous(){return we(this,void 0,void 0,function*(){yield this._deltaSelectedInlineCompletionIndex(-1)})}accept(d){var l;return we(this,void 0,void 0,function*(){if(d.getModel()!==this.textModel)throw new k.BugIndicatingError;const p=this.state.get();if(!p||p.ghostText.isEmpty()||!p.inlineCompletion)return;const m=p.inlineCompletion.toInlineCompletion(void 0);d.pushUndoStop(),m.snippetInfo?(d.executeEdits("inlineSuggestion.accept",[f.EditOperation.replaceMove(m.range,""),...m.additionalTextEdits]),d.setPosition(m.snippetInfo.range.getStartPosition()),(l=a.SnippetController2.get(d))===null||l===void 0||l.insert(m.snippetInfo.snippet,{undoStopBefore:!1})):d.executeEdits("inlineSuggestion.accept",[f.EditOperation.replaceMove(m.range,m.insertText),...m.additionalTextEdits]),m.command&&m.source.addRef(),(0,D.transaction)(v=>{this._source.clear(v),this._isActive.set(!1,v)}),m.command&&(yield this._commandService.executeCommand(m.command.id,...m.command.arguments||[]).then(void 0,k.onUnexpectedExternalError),m.source.removeRef())})}acceptNextWord(d){return we(this,void 0,void 0,function*(){yield this._acceptNext(d,(l,p)=>{const m=this.textModel.getLanguageIdAtPosition(l.lineNumber,l.column),v=this._languageConfigurationService.getLanguageConfiguration(m),b=new RegExp(v.wordDefinition.source,v.wordDefinition.flags.replace("g","")),w=p.match(b);let E=0;w&&w.index!==void 0?w.index===0?E=w[0].length:E=w.index:E=p.length;const M=/\s+/g.exec(p);return M&&M.index!==void 0&&M.index+M[0].length{const m=p.match(/\n/);return m&&m.index!==void 0?m.index+1:p.length})})}_acceptNext(d,l){return we(this,void 0,void 0,function*(){if(d.getModel()!==this.textModel)throw new k.BugIndicatingError;const p=this.state.get();if(!p||p.ghostText.isEmpty()||!p.inlineCompletion)return;const m=p.ghostText,v=p.inlineCompletion.toInlineCompletion(void 0);if(v.snippetInfo||v.filterText!==v.insertText){yield this.accept(d);return}const b=m.parts[0],w=new _.Position(m.lineNumber,b.column),E=b.lines.join(` -`),I=l(w,E);if(I===E.length&&m.parts.length===1){this.accept(d);return}const M=E.substring(0,I);this._isAcceptingPartially=!0;try{d.pushUndoStop(),d.executeEdits("inlineSuggestion.accept",[f.EditOperation.replace(g.Range.fromPositions(w),M)]);const P=(0,t.lengthOfText)(M);d.setPosition((0,t.addPositions)(w,P))}finally{this._isAcceptingPartially=!1}if(v.source.provider.handlePartialAccept){const P=g.Range.fromPositions(v.range.getStartPosition(),(0,t.addPositions)(w,(0,t.lengthOfText)(M))),x=d.getModel().getValueInRange(P,1);v.source.provider.handlePartialAccept(v.source.inlineCompletions,v.sourceInlineCompletion,x.length)}})}handleSuggestAccepted(d){var l,p;const m=d.toSingleTextEdit().removeCommonPrefix(this.textModel),v=this._computeAugmentedCompletion(m,void 0);if(!v)return;const b=v.completion.inlineCompletion;(p=(l=b.source.provider).handlePartialAccept)===null||p===void 0||p.call(l,b.source.inlineCompletions,b.sourceInlineCompletion,m.text.length)}};e.InlineCompletionsModel=c,e.InlineCompletionsModel=c=ke([fe(9,h.IInstantiationService),fe(10,u.ICommandService),fe(11,s.ILanguageConfigurationService)],c)}),define(ne[914],se([1,0,13,19,9,6,2,11,24,115,301,96,28,15,70,79,300,135,18,72,20,235,194,239]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){"use strict";var m;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestModel=e.LineContext=void 0;class v{static shouldAutoTrigger(M){if(!M.hasModel())return!1;const P=M.getModel(),x=M.getPosition();P.tokenization.tokenizeIfCheap(x.lineNumber);const T=P.getWordAtPosition(x);return!(!T||T.endColumn!==x.column&&T.startColumn+1!==x.column||!isNaN(Number(T.word)))}constructor(M,P,x){this.leadingLineContent=M.getLineContent(P.lineNumber).substr(0,P.column-1),this.leadingWord=M.getWordUntilPosition(P),this.lineNumber=P.lineNumber,this.column=P.column,this.triggerOptions=x}}e.LineContext=v;function b(I,M,P){if(!M.getContextKeyValue(d.InlineCompletionContextKeys.inlineSuggestionVisible.key))return!0;const x=M.getContextKeyValue(d.InlineCompletionContextKeys.suppressSuggestions.key);return x!==void 0?!x:!I.getOption(61).suppressSuggestions}function w(I,M,P){if(!M.getContextKeyValue("inlineSuggestionVisible"))return!0;const x=M.getContextKeyValue(d.InlineCompletionContextKeys.suppressSuggestions.key);return x!==void 0?!x:!I.getOption(61).suppressSuggestions}let E=m=class{constructor(M,P,x,T,A,N,F,O,W){this._editor=M,this._editorWorkerService=P,this._clipboardService=x,this._telemetryService=T,this._logService=A,this._contextKeyService=N,this._configurationService=F,this._languageFeaturesService=O,this._envService=W,this._toDispose=new S.DisposableStore,this._triggerCharacterListener=new S.DisposableStore,this._triggerQuickSuggest=new L.TimeoutTimer,this._triggerState=void 0,this._completionDisposables=new S.DisposableStore,this._onDidCancel=new D.Emitter,this._onDidTrigger=new D.Emitter,this._onDidSuggest=new D.Emitter,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new _.Selection(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeModelLanguage(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeConfiguration(()=>{this._updateTriggerCharacters()})),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}));let U=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{U=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{U=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(j=>{U||this._onCursorChange(j)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!U&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){(0,S.dispose)(this._triggerCharacterListener),(0,S.dispose)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(89)||!this._editor.hasModel()||!this._editor.getOption(119))return;const M=new Map;for(const x of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const T of x.triggerCharacters||[]){let A=M.get(T);A||(A=new Set,A.add((0,h.getSnippetSuggestSupport)()),M.set(T,A)),A.add(x)}const P=x=>{var T;if(!w(this._editor,this._contextKeyService,this._configurationService)||v.shouldAutoTrigger(this._editor))return;if(!x){const F=this._editor.getPosition();x=this._editor.getModel().getLineContent(F.lineNumber).substr(0,F.column-1)}let A="";(0,f.isLowSurrogate)(x.charCodeAt(x.length-1))?(0,f.isHighSurrogate)(x.charCodeAt(x.length-2))&&(A=x.substr(x.length-2)):A=x.charAt(x.length-1);const N=M.get(A);if(N){const F=new Map;if(this._completionModel)for(const[O,W]of this._completionModel.getItemsByProvider())N.has(O)||F.set(O,W);this.trigger({auto:!0,triggerKind:1,triggerCharacter:A,retrigger:!!this._completionModel,clipboardText:(T=this._completionModel)===null||T===void 0?void 0:T.clipboardText,completionOptions:{providerFilter:N,providerItemsToReuse:F}})}};this._triggerCharacterListener.add(this._editor.onDidType(P)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>P()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(M=!1){var P;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(P=this._requestToken)===null||P===void 0||P.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:M}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(M){if(!this._editor.hasModel())return;const P=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!M.selection.isEmpty()||M.reason!==0&&M.reason!==3||M.source!=="keyboard"&&M.source!=="deleteLeft"){this.cancel();return}this._triggerState===void 0&&M.reason===0?(P.containsRange(this._currentSelection)||P.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&M.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var M;h.QuickSuggestionsOptions.isAllOff(this._editor.getOption(87))||this._editor.getOption(116).snippetsPreventQuickSuggestions&&(!((M=l.SnippetController2.get(this._editor))===null||M===void 0)&&M.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!v.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const P=this._editor.getModel(),x=this._editor.getPosition(),T=this._editor.getOption(87);if(!h.QuickSuggestionsOptions.isAllOff(T)){if(!h.QuickSuggestionsOptions.isAllOn(T)){P.tokenization.tokenizeIfCheap(x.lineNumber);const A=P.tokenization.getLineTokens(x.lineNumber),N=A.getStandardTokenType(A.findTokenIndexAtOffset(Math.max(x.column-1-1,0)));if(h.QuickSuggestionsOptions.valueFor(T,N)!=="on")return}b(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(P)&&this.trigger({auto:!0})}},this._editor.getOption(88)))}_refilterCompletionItems(){(0,o.assertType)(this._editor.hasModel()),(0,o.assertType)(this._triggerState!==void 0);const M=this._editor.getModel(),P=this._editor.getPosition(),x=new v(M,P,Object.assign(Object.assign({},this._triggerState),{refilter:!0}));this._onNewContext(x)}trigger(M){var P,x,T,A,N,F;if(!this._editor.hasModel())return;const O=this._editor.getModel(),W=new v(O,this._editor.getPosition(),M);this.cancel(M.retrigger),this._triggerState=M,this._onDidTrigger.fire({auto:M.auto,shy:(P=M.shy)!==null&&P!==void 0?P:!1,position:this._editor.getPosition()}),this._context=W;let U={triggerKind:(x=M.triggerKind)!==null&&x!==void 0?x:0};M.triggerCharacter&&(U={triggerKind:1,triggerCharacter:M.triggerCharacter}),this._requestToken=new k.CancellationTokenSource;const j=this._editor.getOption(110);let R=1;switch(j){case"top":R=0;break;case"bottom":R=2;break}const{itemKind:K,showDeprecated:G}=m._createSuggestFilter(this._editor),Z=new h.CompletionOptions(R,(A=(T=M.completionOptions)===null||T===void 0?void 0:T.kindFilter)!==null&&A!==void 0?A:K,(N=M.completionOptions)===null||N===void 0?void 0:N.providerFilter,(F=M.completionOptions)===null||F===void 0?void 0:F.providerItemsToReuse,G),J=C.WordDistance.create(this._editorWorkerService,this._editor),X=(0,h.provideSuggestionItems)(this._languageFeaturesService.completionProvider,O,this._editor.getPosition(),Z,U,this._requestToken.token);Promise.all([X,J]).then(([H,B])=>we(this,void 0,void 0,function*(){var V;if((V=this._requestToken)===null||V===void 0||V.dispose(),!this._editor.hasModel())return;let Y=M?.clipboardText;if(!Y&&H.needsClipboard&&(Y=yield this._clipboardService.readText()),this._triggerState===void 0)return;const ie=this._editor.getModel(),ae=new v(ie,this._editor.getPosition(),M),ce=Object.assign(Object.assign({},c.FuzzyScoreOptions.default),{firstMatchCanBeWeak:!this._editor.getOption(116).matchOnWordStartOnly});if(this._completionModel=new u.CompletionModel(H.items,this._context.column,{leadingLineContent:ae.leadingLineContent,characterCountDelta:ae.column-this._context.column},B,this._editor.getOption(116),this._editor.getOption(110),ce,Y),this._completionDisposables.add(H.disposable),this._onNewContext(ae),this._reportDurationsTelemetry(H.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const de of H.items)de.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${de.provider._debugDisplayName}`,de.completion)})).catch(y.onUnexpectedError)}_reportDurationsTelemetry(M){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(M)}),this._logService.debug("suggest.durations.json",M)})}static _createSuggestFilter(M){const P=new Set;M.getOption(110)==="none"&&P.add(27);const T=M.getOption(116);return T.showMethods||P.add(0),T.showFunctions||P.add(1),T.showConstructors||P.add(2),T.showFields||P.add(3),T.showVariables||P.add(4),T.showClasses||P.add(5),T.showStructs||P.add(6),T.showInterfaces||P.add(7),T.showModules||P.add(8),T.showProperties||P.add(9),T.showEvents||P.add(10),T.showOperators||P.add(11),T.showUnits||P.add(12),T.showValues||P.add(13),T.showConstants||P.add(14),T.showEnums||P.add(15),T.showEnumMembers||P.add(16),T.showKeywords||P.add(17),T.showWords||P.add(18),T.showColors||P.add(19),T.showFiles||P.add(20),T.showReferences||P.add(21),T.showColors||P.add(22),T.showFolders||P.add(23),T.showTypeParameters||P.add(24),T.showSnippets||P.add(27),T.showUsers||P.add(25),T.showIssues||P.add(26),{itemKind:P,showDeprecated:T.showDeprecated}}_onNewContext(M){if(this._context){if(M.lineNumber!==this._context.lineNumber){this.cancel();return}if((0,f.getLeadingWhitespace)(M.leadingLineContent)!==(0,f.getLeadingWhitespace)(this._context.leadingLineContent)){this.cancel();return}if(M.columnthis._context.leadingWord.startColumn){if(v.shouldAutoTrigger(this._editor)&&this._context){const x=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:x}})}return}if(M.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&M.leadingWord.word.length!==0){const P=new Map,x=new Set;for(const[T,A]of this._completionModel.getItemsByProvider())A.length>0&&A[0].container.incomplete?x.add(T):P.set(T,A);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:x,providerItemsToReuse:P}})}else{const P=this._completionModel.lineContext;let x=!1;if(this._completionModel.lineContext={leadingLineContent:M.leadingLineContent,characterCountDelta:M.column-this._context.column},this._completionModel.items.length===0){const T=v.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(T&&this._context.leadingWord.endColumn0,x&&M.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:M.triggerOptions,isFrozen:x})}}}}};e.SuggestModel=E,e.SuggestModel=E=m=ke([fe(1,g.IEditorWorkerService),fe(2,s.IClipboardService),fe(3,a.ITelemetryService),fe(4,t.ILogService),fe(5,n.IContextKeyService),fe(6,i.IConfigurationService),fe(7,r.ILanguageFeaturesService),fe(8,p.IEnvironmentService)],E)}),define(ne[378],se([1,0,49,14,13,19,9,6,119,2,17,58,20,108,16,73,12,5,21,194,128,347,755,701,27,15,8,70,135,754,548,914,549,895,79,45,143]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F){"use strict";var O;Object.defineProperty(e,"__esModule",{value:!0}),e.TriggerSuggestAction=e.SuggestController=void 0;const W=!1;class U{constructor(X,H){if(this._model=X,this._position=H,X.getLineMaxColumn(H.lineNumber)!==H.column){const V=X.getOffsetAt(H),Y=X.getPositionAt(V+1);this._marker=X.deltaDecorations([],[{range:h.Range.fromPositions(H,Y),options:{description:"suggest-line-suffix",stickiness:1}}])}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}delta(X){if(this._model.isDisposed()||this._position.lineNumber!==X.lineNumber)return 0;if(this._marker){const H=this._model.getDecorationRange(this._marker[0]);return this._model.getOffsetAt(H.getStartPosition())-this._model.getOffsetAt(X)}else return this._model.getLineMaxColumn(X.lineNumber)-X.column}}let j=O=class{static get(X){return X.getContribution(O.ID)}constructor(X,H,B,V,Y,ie,ae){this._memoryService=H,this._commandService=B,this._contextKeyService=V,this._instantiationService=Y,this._logService=ie,this._telemetryService=ae,this._lineSuffix=new g.MutableDisposable,this._toDispose=new g.DisposableStore,this._selectors=new R(ue=>ue.priority),this._onWillInsertSuggestItem=new f.Emitter,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=X,this.model=Y.createInstance(P.SuggestModel,this.editor),this._selectors.register({priority:0,select:(ue,te,q)=>this._memoryService.select(ue,te,q)});const ce=E.Context.InsertMode.bindTo(V);ce.set(X.getOption(116).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>ce.set(X.getOption(116).insertMode))),this.widget=this._toDispose.add(new y.IdleValue(()=>{const ue=this._instantiationService.createInstance(T.SuggestWidget,this.editor);this._toDispose.add(ue),this._toDispose.add(ue.onDidSelect($=>this._insertSuggestion($,0),this));const te=new M.CommitCharacterController(this.editor,ue,this.model,$=>this._insertSuggestion($,2));this._toDispose.add(te);const q=E.Context.MakesTextEdit.bindTo(this._contextKeyService),z=E.Context.HasInsertAndReplaceRange.bindTo(this._contextKeyService),ee=E.Context.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,g.toDisposable)(()=>{q.reset(),z.reset(),ee.reset()})),this._toDispose.add(ue.onDidFocus(({item:$})=>{const re=this.editor.getPosition(),oe=$.editStart.column,ge=re.column;let ve=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!$.completion.additionalTextEdits&&!($.completion.insertTextRules&4)&&ge-oe===$.completion.insertText.length&&(ve=this.editor.getModel().getValueInRange({startLineNumber:re.lineNumber,startColumn:oe,endLineNumber:re.lineNumber,endColumn:ge})!==$.completion.insertText),q.set(ve),z.set(!u.Position.equals($.editInsertEnd,$.editReplaceEnd)),ee.set(!!$.provider.resolveCompletionItem||!!$.completion.documentation||$.completion.detail!==$.completion.label)})),this._toDispose.add(ue.onDetailsKeyDown($=>{if($.toKeyCodeChord().equals(new _.KeyCodeChord(!0,!1,!1,!1,33))||C.isMacintosh&&$.toKeyCodeChord().equals(new _.KeyCodeChord(!1,!1,!1,!0,33))){$.stopPropagation();return}$.toKeyCodeChord().isModifierKey()||this.editor.focus()})),ue})),this._overtypingCapturer=this._toDispose.add(new y.IdleValue(()=>this._toDispose.add(new x.OvertypingCapturer(this.editor,this.model)))),this._alternatives=this._toDispose.add(new y.IdleValue(()=>this._toDispose.add(new I.SuggestAlternatives(this.editor,this._contextKeyService)))),this._toDispose.add(Y.createInstance(l.WordContextKey,X)),this._toDispose.add(this.model.onDidTrigger(ue=>{this.widget.value.showTriggered(ue.auto,ue.shy?250:50),this._lineSuffix.value=new U(this.editor.getModel(),ue.position)})),this._toDispose.add(this.model.onDidSuggest(ue=>{if(ue.triggerOptions.shy)return;let te=-1;for(const z of this._selectors.itemsOrderedByPriorityDesc)if(te=z.select(this.editor.getModel(),this.editor.getPosition(),ue.completionModel.items),te!==-1)break;te===-1&&(te=0);let q=!1;if(ue.triggerOptions.auto){const z=this.editor.getOption(116);z.selectionMode==="never"||z.selectionMode==="always"?q=z.selectionMode==="never":z.selectionMode==="whenTriggerCharacter"?q=ue.triggerOptions.triggerKind!==1:z.selectionMode==="whenQuickSuggestion"&&(q=ue.triggerOptions.triggerKind===1&&!ue.triggerOptions.refilter)}this.widget.value.showSuggestions(ue.completionModel,te,ue.isFrozen,ue.triggerOptions.auto,q)})),this._toDispose.add(this.model.onDidCancel(ue=>{ue.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{W||(this.model.cancel(),this.model.clear())}));const de=E.Context.AcceptSuggestionsOnEnter.bindTo(V),he=()=>{const ue=this.editor.getOption(1);de.set(ue==="on"||ue==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>he())),he()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(X,H){if(!X||!X.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const B=c.SnippetController2.get(this.editor);if(!B)return;this._onWillInsertSuggestItem.fire({item:X.item});const V=this.editor.getModel(),Y=V.getAlternativeVersionId(),{item:ie}=X,ae=[],ce=new D.CancellationTokenSource;H&1||this.editor.pushUndoStop();const de=this.getOverwriteInfo(ie,!!(H&8));this._memoryService.memorize(V,this.editor.getPosition(),ie);const he=ie.isResolved;let ue=-1,te=-1;if(Array.isArray(ie.completion.additionalTextEdits)){this.model.cancel();const z=n.StableEditorScrollState.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",ie.completion.additionalTextEdits.map(ee=>a.EditOperation.replaceMove(h.Range.lift(ee.range),ee.text))),z.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!he){const z=new s.StopWatch;let ee;const $=V.onDidChangeContent(ve=>{if(ve.isFlush){ce.cancel(),$.dispose();return}for(const Se of ve.changes){const Le=h.Range.getEndPosition(Se.range);(!ee||u.Position.isBefore(Le,ee))&&(ee=Le)}}),re=H;H|=2;let oe=!1;const ge=this.editor.onWillType(()=>{ge.dispose(),oe=!0,re&2||this.editor.pushUndoStop()});ae.push(ie.resolve(ce.token).then(()=>{if(!ie.completion.additionalTextEdits||ce.token.isCancellationRequested)return;if(ee&&ie.completion.additionalTextEdits.some(Se=>u.Position.isBefore(ee,h.Range.getStartPosition(Se.range))))return!1;oe&&this.editor.pushUndoStop();const ve=n.StableEditorScrollState.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",ie.completion.additionalTextEdits.map(Se=>a.EditOperation.replaceMove(h.Range.lift(Se.range),Se.text))),ve.restoreRelativeVerticalPositionOfCursor(this.editor),(oe||!(re&2))&&this.editor.pushUndoStop(),!0}).then(ve=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",z.elapsed(),ve),te=ve===!0?1:ve===!1?0:-2}).finally(()=>{$.dispose(),ge.dispose()}))}let{insertText:q}=ie.completion;if(ie.completion.insertTextRules&4||(q=o.SnippetParser.escape(q)),this.model.cancel(),B.insert(q,{overwriteBefore:de.overwriteBefore,overwriteAfter:de.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(ie.completion.insertTextRules&1),clipboardText:X.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),H&2||this.editor.pushUndoStop(),ie.completion.command)if(ie.completion.command.id===K.id)this.model.trigger({auto:!0,retrigger:!0});else{const z=new s.StopWatch;ae.push(this._commandService.executeCommand(ie.completion.command.id,...ie.completion.command.arguments?[...ie.completion.command.arguments]:[]).catch(ee=>{ie.completion.extensionId?(0,S.onUnexpectedExternalError)(ee):(0,S.onUnexpectedError)(ee)}).finally(()=>{ue=z.elapsed()}))}H&4&&this._alternatives.value.set(X,z=>{for(ce.cancel();V.canUndo();){Y!==V.getAlternativeVersionId()&&V.undo(),this._insertSuggestion(z,3|(H&8?8:0));break}}),this._alertCompletionItem(ie),Promise.all(ae).finally(()=>{this._reportSuggestionAcceptedTelemetry(ie,V,he,ue,te),this.model.clear(),ce.dispose()})}_reportSuggestionAcceptedTelemetry(X,H,B,V,Y){var ie,ae,ce;Math.floor(Math.random()*100)!==0&&this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:(ae=(ie=X.extensionId)===null||ie===void 0?void 0:ie.value)!==null&&ae!==void 0?ae:"unknown",providerId:(ce=X.provider._debugDisplayName)!==null&&ce!==void 0?ce:"unknown",kind:X.completion.kind,basenameHash:(0,F.hash)((0,N.basename)(H.uri)).toString(16),languageId:H.getLanguageId(),fileExtension:(0,N.extname)(H.uri),resolveInfo:X.provider.resolveCompletionItem?B?1:0:-1,resolveDuration:X.resolveDuration,commandDuration:V,additionalEditsAsync:Y})}getOverwriteInfo(X,H){(0,i.assertType)(this.editor.hasModel());let B=this.editor.getOption(116).insertMode==="replace";H&&(B=!B);const V=X.position.column-X.editStart.column,Y=(B?X.editReplaceEnd.column:X.editInsertEnd.column)-X.position.column,ie=this.editor.getPosition().column-X.position.column,ae=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:V+ie,overwriteAfter:Y+ae}}_alertCompletionItem(X){if((0,k.isNonEmptyArray)(X.completion.additionalTextEdits)){const H=p.localize(0,null,X.textLabel,X.completion.additionalTextEdits.length);(0,L.alert)(H)}}triggerSuggest(X,H,B){this.editor.hasModel()&&(this.model.trigger({auto:H??!1,completionOptions:{providerFilter:X,kindFilter:B?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(X){if(!this.editor.hasModel())return;const H=this.editor.getPosition(),B=()=>{H.equals(this.editor.getPosition())&&this._commandService.executeCommand(X.fallback)},V=Y=>{if(Y.completion.insertTextRules&4||Y.completion.additionalTextEdits)return!0;const ie=this.editor.getPosition(),ae=Y.editStart.column,ce=ie.column;return ce-ae!==Y.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:ie.lineNumber,startColumn:ae,endLineNumber:ie.lineNumber,endColumn:ce})!==Y.completion.insertText};f.Event.once(this.model.onDidTrigger)(Y=>{const ie=[];f.Event.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{(0,g.dispose)(ie),B()},void 0,ie),this.model.onDidSuggest(({completionModel:ae})=>{if((0,g.dispose)(ie),ae.items.length===0){B();return}const ce=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),ae.items),de=ae.items[ce];if(!V(de)){B();return}this.editor.pushUndoStop(),this._insertSuggestion({index:ce,item:de,model:ae},7)},void 0,ie)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(H,0),this.editor.focus()}acceptSelectedSuggestion(X,H){const B=this.widget.value.getFocusedItem();let V=0;X&&(V|=4),H&&(V|=8),this._insertSuggestion(B,V)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(X){return this._selectors.register(X)}};e.SuggestController=j,j.ID="editor.contrib.suggestController",e.SuggestController=j=O=ke([fe(1,d.ISuggestMemoryService),fe(2,m.ICommandService),fe(3,v.IContextKeyService),fe(4,b.IInstantiationService),fe(5,w.ILogService),fe(6,A.ITelemetryService)],j);class R{constructor(X){this.prioritySelector=X,this._items=new Array}register(X){if(this._items.indexOf(X)!==-1)throw new Error("Value is already registered");return this._items.push(X),this._items.sort((H,B)=>this.prioritySelector(B)-this.prioritySelector(H)),{dispose:()=>{const H=this._items.indexOf(X);H>=0&&this._items.splice(H,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class K extends t.EditorAction{constructor(){super({id:K.id,label:p.localize(1,null),alias:"Trigger Suggest",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.writable,r.EditorContextKeys.hasCompletionItemProvider,E.Context.Visible.toNegated()),kbOpts:{kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(X,H,B){const V=j.get(H);if(!V)return;let Y;B&&typeof B=="object"&&B.auto===!0&&(Y=!0),V.triggerSuggest(void 0,Y,void 0)}}e.TriggerSuggestAction=K,K.id="editor.action.triggerSuggest",(0,t.registerEditorContribution)(j.ID,j,2),(0,t.registerEditorAction)(K);const G=100+90,Z=t.EditorCommand.bindToContribution(j.get);(0,t.registerEditorCommand)(new Z({id:"acceptSelectedSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion),handler(J){J.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus),weight:G},{primary:3,kbExpr:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus,E.Context.AcceptSuggestionsOnEnter,E.Context.MakesTextEdit),weight:G}],menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(2,null),group:"left",order:1,when:E.Context.HasInsertAndReplaceRange.toNegated()},{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(3,null),group:"left",order:1,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo("insert"))},{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(4,null),group:"left",order:1,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo("replace"))}]})),(0,t.registerEditorCommand)(new Z({id:"acceptAlternativeSelectedSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus,E.Context.HasFocusedSuggestion),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:1027,secondary:[1026]},handler(J){J.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,group:"left",order:2,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo("insert")),title:p.localize(5,null)},{menuId:E.suggestWidgetStatusbarMenu,group:"left",order:2,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo("replace")),title:p.localize(6,null)}]})),m.CommandsRegistry.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,t.registerEditorCommand)(new Z({id:"hideSuggestWidget",precondition:E.Context.Visible,handler:J=>J.cancelSuggestWidget(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})),(0,t.registerEditorCommand)(new Z({id:"selectNextSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectNextSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,t.registerEditorCommand)(new Z({id:"selectNextPageSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectNextPageSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:12,secondary:[2060]}})),(0,t.registerEditorCommand)(new Z({id:"selectLastSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectLastSuggestion()})),(0,t.registerEditorCommand)(new Z({id:"selectPrevSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectPrevSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,t.registerEditorCommand)(new Z({id:"selectPrevPageSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectPrevPageSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:11,secondary:[2059]}})),(0,t.registerEditorCommand)(new Z({id:"selectFirstSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectFirstSuggestion()})),(0,t.registerEditorCommand)(new Z({id:"focusSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion.negate()),handler:J=>J.focusSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}})),(0,t.registerEditorCommand)(new Z({id:"focusAndAcceptSuggestion",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion.negate()),handler:J=>{J.focusSuggestion(),J.acceptSelectedSuggestion(!0,!1)}})),(0,t.registerEditorCommand)(new Z({id:"toggleSuggestionDetails",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion),handler:J=>J.toggleSuggestionDetails(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,group:"right",order:1,when:v.ContextKeyExpr.and(E.Context.DetailsVisible,E.Context.CanResolve),title:p.localize(7,null)},{menuId:E.suggestWidgetStatusbarMenu,group:"right",order:1,when:v.ContextKeyExpr.and(E.Context.DetailsVisible.toNegated(),E.Context.CanResolve),title:p.localize(8,null)}]})),(0,t.registerEditorCommand)(new Z({id:"toggleExplainMode",precondition:E.Context.Visible,handler:J=>J.toggleExplainMode(),kbOpts:{weight:100,primary:2138}})),(0,t.registerEditorCommand)(new Z({id:"toggleSuggestionFocus",precondition:E.Context.Visible,handler:J=>J.toggleSuggestionFocus(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2570,mac:{primary:778}}})),(0,t.registerEditorCommand)(new Z({id:"insertBestCompletion",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals("config.editor.tabCompletion","on"),l.WordContextKey.AtEnd,E.Context.Visible.toNegated(),I.SuggestAlternatives.OtherSuggestions.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:(J,X)=>{J.triggerSuggestAndAcceptBest((0,i.isObject)(X)?Object.assign({fallback:"tab"},X):{fallback:"tab"})},kbOpts:{weight:G,primary:2}})),(0,t.registerEditorCommand)(new Z({id:"insertNextSuggestion",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals("config.editor.tabCompletion","on"),I.SuggestAlternatives.OtherSuggestions,E.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:J=>J.acceptNextSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2}})),(0,t.registerEditorCommand)(new Z({id:"insertPrevSuggestion",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals("config.editor.tabCompletion","on"),I.SuggestAlternatives.OtherSuggestions,E.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:J=>J.acceptPrevSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:1026}})),(0,t.registerEditorAction)(class extends t.EditorAction{constructor(){super({id:"editor.action.resetSuggestSize",label:p.localize(9,null),alias:"Reset Suggest Widget Size",precondition:void 0})}run(J,X){var H;(H=j.get(X))===null||H===void 0||H.resetWidgetSize()}})}),define(ne[915],se([1,0,6,2,12,5,29,128,377,378,42,296,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestItemInfo=e.SuggestWidgetAdaptor=void 0;class n extends k.Disposable{get selectedItem(){return this._selectedItem}constructor(h,r,c,o){super(),this.editor=h,this.suggestControllerPreselector=r,this.checkModelVersion=c,this.onWillAccept=o,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._selectedItem=(0,C.observableValue)("suggestWidgetInlineCompletionProvider.selectedItem",void 0),this._register(h.onKeyDown(l=>{l.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(h.onKeyUp(l=>{l.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const d=g.SuggestController.get(this.editor);if(d){this._register(d.registerSelector({priority:100,select:(m,v,b)=>{var w;(0,C.transaction)(T=>this.checkModelVersion(T));const E=this.editor.getModel();if(!E)return-1;const I=(w=this.suggestControllerPreselector())===null||w===void 0?void 0:w.removeCommonPrefix(E);if(!I)return-1;const M=y.Position.lift(v),P=b.map((T,A)=>{const F=t.fromSuggestion(d,E,M,T,this.isShiftKeyPressed).toSingleTextEdit().removeCommonPrefix(E),O=I.augments(F);return{index:A,valid:O,prefixLength:F.text.length,suggestItem:T}}).filter(T=>T&&T.valid&&T.prefixLength>0),x=(0,i.findMaxBy)(P,(0,i.compareBy)(T=>T.prefixLength,i.numberComparator));return x?x.index:-1}}));let l=!1;const p=()=>{l||(l=!0,this._register(d.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(d.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(d.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(L.Event.once(d.model.onDidTrigger)(m=>{p()})),this._register(d.onWillInsertSuggestItem(m=>{const v=this.editor.getPosition(),b=this.editor.getModel();if(!v||!b)return;const w=t.fromSuggestion(d,b,v,m.item,this.isShiftKeyPressed);this.onWillAccept(w)}))}this.update(this._isActive)}update(h){const r=this.getSuggestItemInfo();(this._isActive!==h||!a(this._currentSuggestItemInfo,r))&&(this._isActive=h,this._currentSuggestItemInfo=r,(0,C.transaction)(c=>{this.checkModelVersion(c),this._selectedItem.set(this._isActive?this._currentSuggestItemInfo:void 0,c)}))}getSuggestItemInfo(){const h=g.SuggestController.get(this.editor);if(!h||!this.isSuggestWidgetVisible)return;const r=h.widget.value.getFocusedItem(),c=this.editor.getPosition(),o=this.editor.getModel();if(!(!r||!c||!o))return t.fromSuggestion(h,o,c,r.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const h=g.SuggestController.get(this.editor);h?.stopForceRenderingAbove()}forceRenderingAbove(){const h=g.SuggestController.get(this.editor);h?.forceRenderingAbove()}}e.SuggestWidgetAdaptor=n;class t{static fromSuggestion(h,r,c,o,d){let{insertText:l}=o.completion,p=!1;if(o.completion.insertTextRules&4){const v=new f.SnippetParser().parse(l);v.children.length<100&&_.SnippetSession.adjustWhitespace(r,c,!0,v),l=v.toString(),p=!0}const m=h.getOverwriteInfo(o,d);return new t(D.Range.fromPositions(c.delta(0,-m.overwriteBefore),c.delta(0,Math.max(m.overwriteAfter,0))),l,o.completion.kind,p)}constructor(h,r,c,o){this.range=h,this.insertText=r,this.completionItemKind=c,this.isSnippetText=o}equals(h){return this.range.equalsRange(h.range)&&this.insertText===h.insertText&&this.completionItemKind===h.completionItemKind&&this.isSnippetText===h.isSnippetText}toSelectedSuggestionInfo(){return new S.SelectedSuggestionInfo(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new s.SingleTextEdit(this.range,this.insertText)}}e.SuggestItemInfo=t;function a(u,h){return u===h?!0:!u||!h?!1:u.equals(h)}}),define(ne[258],se([1,0,49,6,2,42,189,12,76,18,214,750,235,253,913,915,680,116,27,28,15,8,34]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){"use strict";var p;Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionsController=void 0;let m=p=class extends y.Disposable{static get(b){return b.getContribution(p.ID)}constructor(b,w,E,I,M,P,x,T,A){super(),this.editor=b,this.instantiationService=w,this.contextKeyService=E,this.configurationService=I,this.commandService=M,this.debounceService=P,this.languageFeaturesService=x,this.audioCueService=T,this._keybindingService=A,this.model=(0,D.disposableObservableValue)("inlineCompletionModel",void 0),this.textModelVersionId=(0,D.observableValue)("textModelVersionId",-1),this.cursorPosition=(0,D.observableValue)("cursorPosition",new f.Position(1,1)),this.suggestWidgetAdaptor=this._register(new a.SuggestWidgetAdaptor(this.editor,()=>{var O,W;return(W=(O=this.model.get())===null||O===void 0?void 0:O.selectedInlineCompletion.get())===null||W===void 0?void 0:W.toSingleTextEdit(void 0)},O=>this.updateObservables(O,t.VersionIdChangeReason.Other),O=>{(0,D.transaction)(W=>{var U;this.updateObservables(W,t.VersionIdChangeReason.Other),(U=this.model.get())===null||U===void 0||U.handleSuggestAccepted(O)})})),this._enabled=(0,D.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(61).enabled),this.ghostTextWidget=this._register(this.instantiationService.createInstance(s.GhostTextWidget,this.editor,{ghostText:this.model.map((O,W)=>O?.ghostText.read(W)),minReservedLineCount:(0,D.constObservable)(0),targetTextModel:this.model.map(O=>O?.textModel)})),this._debounceValue=this.debounceService.for(this.languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this._register(new i.InlineCompletionContextKeys(this.contextKeyService,this.model)),this._register(k.Event.runAndSubscribe(b.onDidChangeModel,()=>(0,D.transaction)(O=>{this.model.set(void 0,O),this.updateObservables(O,t.VersionIdChangeReason.Other);const W=b.getModel();if(W){const U=w.createInstance(t.InlineCompletionsModel,W,this.suggestWidgetAdaptor.selectedItem,this.cursorPosition,this.textModelVersionId,this._debounceValue,(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(116).preview),(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(116).previewMode),(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(61).mode),this._enabled);this.model.set(U,O)}})));const N=O=>{var W;return O.isUndoing?t.VersionIdChangeReason.Undo:O.isRedoing?t.VersionIdChangeReason.Redo:!((W=this.model.get())===null||W===void 0)&&W.isAcceptingPartially?t.VersionIdChangeReason.AcceptWord:t.VersionIdChangeReason.Other};this._register(b.onDidChangeModelContent(O=>(0,D.transaction)(W=>this.updateObservables(W,N(O))))),this._register(b.onDidChangeCursorPosition(O=>(0,D.transaction)(W=>{var U;this.updateObservables(W,t.VersionIdChangeReason.Other),(O.reason===3||O.source==="api")&&((U=this.model.get())===null||U===void 0||U.stop(W))}))),this._register(b.onDidType(()=>(0,D.transaction)(O=>{var W;this.updateObservables(O,t.VersionIdChangeReason.Other),this._enabled.get()&&((W=this.model.get())===null||W===void 0||W.trigger(O))}))),this._register(this.commandService.onDidExecuteCommand(O=>{new Set([S.CoreEditingCommands.Tab.id,S.CoreEditingCommands.DeleteLeft.id,S.CoreEditingCommands.DeleteRight.id,C.inlineSuggestCommitId,"acceptSelectedSuggestion"]).has(O.commandId)&&b.hasTextFocus()&&this._enabled.get()&&(0,D.transaction)(U=>{var j;(j=this.model.get())===null||j===void 0||j.trigger(U)})})),this._register(this.editor.onDidBlurEditorWidget(()=>{this.contextKeyService.getContextKeyValue("accessibleViewIsShown")||this.configurationService.getValue("editor.inlineSuggest.keepOnBlur")||b.getOption(61).keepOnBlur||n.InlineSuggestionHintsContentWidget.dropDownVisible||(0,D.transaction)(O=>{var W;(W=this.model.get())===null||W===void 0||W.stop(O)})})),this._register((0,D.autorun)(O=>{var W;const U=(W=this.model.read(O))===null||W===void 0?void 0:W.state.read(O);U?.suggestItem?U.ghostText.lineCount>=2&&this.suggestWidgetAdaptor.forceRenderingAbove():this.suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register((0,y.toDisposable)(()=>{this.suggestWidgetAdaptor.stopForceRenderingAbove()}));let F;this._register((0,D.autorun)(O=>{const W=this.model.read(O),U=W?.state.read(O);if(!W||!U||!U.inlineCompletion){F=void 0;return}if(U.inlineCompletion.semanticId!==F){F=U.inlineCompletion.semanticId;const j=W.textModel.getLineContent(U.ghostText.lineNumber);this.audioCueService.playAudioCue(h.AudioCue.inlineSuggestion).then(()=>{this.editor.getOption(7)&&this.provideScreenReaderUpdate(U.ghostText.renderForScreenReader(j))})}})),this._register(new n.InlineCompletionsHintsWidget(this.editor,this.model,this.instantiationService)),this._register(this.configurationService.onDidChangeConfiguration(O=>{O.affectsConfiguration("accessibility.verbosity.inlineCompletions")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this.configurationService.getValue("accessibility.verbosity.inlineCompletions")})})),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this.configurationService.getValue("accessibility.verbosity.inlineCompletions")})}provideScreenReaderUpdate(b){const w=this.contextKeyService.getContextKeyValue("accessibleViewIsShown"),E=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let I;!w&&E&&this.editor.getOption(146)&&(I=(0,u.localize)(0,null,E.getAriaLabel())),I?(0,L.alert)(b+", "+I):(0,L.alert)(b)}updateObservables(b,w){var E,I;const M=this.editor.getModel();this.textModelVersionId.set((E=M?.getVersionId())!==null&&E!==void 0?E:-1,b,w),this.cursorPosition.set((I=this.editor.getPosition())!==null&&I!==void 0?I:new f.Position(1,1),b)}shouldShowHoverAt(b){var w;const E=(w=this.model.get())===null||w===void 0?void 0:w.ghostText.get();return E?E.parts.some(I=>b.containsPosition(new f.Position(E.lineNumber,I.column))):!1}shouldShowHoverAtViewZone(b){return this.ghostTextWidget.ownsViewZone(b)}};e.InlineCompletionsController=m,m.ID="editor.contrib.inlineCompletionsController",e.InlineCompletionsController=m=p=ke([fe(1,d.IInstantiationService),fe(2,o.IContextKeyService),fe(3,c.IConfigurationService),fe(4,r.ICommandService),fe(5,_.ILanguageFeatureDebounceService),fe(6,g.ILanguageFeaturesService),fe(7,h.IAudioCueService),fe(8,l.IKeybindingService)],m)}),define(ne[916],se([1,0,42,16,21,214,235,258,135,677,30,28,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleAlwaysShowInlineSuggestionToolbar=e.HideInlineCompletion=e.AcceptInlineCompletion=e.AcceptNextLineOfInlineCompletion=e.AcceptNextWordOfInlineCompletion=e.TriggerInlineSuggestionAction=e.ShowPreviousInlineSuggestionAction=e.ShowNextInlineSuggestionAction=void 0;class n extends k.EditorAction{constructor(){super({id:n.ID,label:g.localize(0,null),alias:"Show Next Inline Suggestion",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.next()})}}e.ShowNextInlineSuggestionAction=n,n.ID=D.showNextInlineSuggestionActionId;class t extends k.EditorAction{constructor(){super({id:t.ID,label:g.localize(1,null),alias:"Show Previous Inline Suggestion",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.previous()})}}e.ShowPreviousInlineSuggestionAction=t,t.ID=D.showPreviousInlineSuggestionActionId;class a extends k.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:g.localize(2,null),alias:"Trigger Inline Suggestion",precondition:y.EditorContextKeys.writable})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.triggerExplicitly()})}}e.TriggerInlineSuggestionAction=a;class u extends k.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:g.localize(3,null),alias:"Accept Next Word Of Inline Suggestion",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100+1,primary:2065,kbExpr:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible)},menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(4,null),group:"primary",order:2}]})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);yield(m=v?.model.get())===null||m===void 0?void 0:m.acceptNextWord(v.editor)})}}e.AcceptNextWordOfInlineCompletion=u;class h extends k.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:g.localize(5,null),alias:"Accept Next Line Of Inline Suggestion",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100+1},menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(6,null),group:"secondary",order:2}]})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);yield(m=v?.model.get())===null||m===void 0?void 0:m.acceptNextLine(v.editor)})}}e.AcceptNextLineOfInlineCompletion=h;class r extends k.EditorAction{constructor(){super({id:D.inlineSuggestCommitId,label:g.localize(7,null),alias:"Accept Inline Suggestion",precondition:S.InlineCompletionContextKeys.inlineSuggestionVisible,menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(8,null),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:i.ContextKeyExpr.and(S.InlineCompletionContextKeys.inlineSuggestionVisible,y.EditorContextKeys.tabMovesFocus.toNegated(),S.InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,_.Context.Visible.toNegated(),y.EditorContextKeys.hoverFocused.toNegated())}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);v&&((m=v.model.get())===null||m===void 0||m.accept(v.editor),v.editor.focus())})}}e.AcceptInlineCompletion=r;class c extends k.EditorAction{constructor(){super({id:c.ID,label:g.localize(9,null),alias:"Hide Inline Suggestion",precondition:S.InlineCompletionContextKeys.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}run(l,p){return we(this,void 0,void 0,function*(){const m=f.InlineCompletionsController.get(p);(0,L.transaction)(v=>{var b;(b=m?.model.get())===null||b===void 0||b.stop(v)})})}}e.HideInlineCompletion=c,c.ID="editor.action.inlineSuggest.hide";class o extends C.Action2{constructor(){super({id:o.ID,title:g.localize(10,null),f1:!1,precondition:void 0,menu:[{id:C.MenuId.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:i.ContextKeyExpr.equals("config.editor.inlineSuggest.showToolbar","always")})}run(l,p){return we(this,void 0,void 0,function*(){const m=l.get(s.IConfigurationService),b=m.getValue("editor.inlineSuggest.showToolbar")==="always"?"onHover":"always";m.updateValue("editor.inlineSuggest.showToolbar",b)})}}e.ToggleAlwaysShowInlineSuggestionToolbar=o,o.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar"}),define(ne[917],se([1,0,7,55,2,42,5,41,103,258,253,117,678,84,8,56,79]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionsHoverParticipant=e.InlineCompletionsHover=void 0;class h{constructor(o,d,l){this.owner=o,this.range=d,this.controller=l}isValidForHoverAnchor(o){return o.type===1&&this.range.startColumn<=o.range.startColumn&&this.range.endColumn>=o.range.endColumn}}e.InlineCompletionsHover=h;let r=class{constructor(o,d,l,p,m,v){this._editor=o,this._languageService=d,this._openerService=l,this.accessibilityService=p,this._instantiationService=m,this._telemetryService=v,this.hoverOrdinal=4}suggestHoverAnchor(o){const d=g.InlineCompletionsController.get(this._editor);if(!d)return null;const l=o.target;if(l.type===8){const p=l.detail;if(d.shouldShowHoverAtViewZone(p.viewZoneId))return new _.HoverForeignElementAnchor(1e3,this,S.Range.fromPositions(this._editor.getModel().validatePosition(p.positionBefore||p.position)),o.event.posx,o.event.posy,!1)}return l.type===7&&d.shouldShowHoverAt(l.range)?new _.HoverForeignElementAnchor(1e3,this,l.range,o.event.posx,o.event.posy,!1):l.type===6&&l.detail.mightBeForeignElement&&d.shouldShowHoverAt(l.range)?new _.HoverForeignElementAnchor(1e3,this,l.range,o.event.posx,o.event.posy,!1):null}computeSync(o,d){if(this._editor.getOption(61).showToolbar==="always")return[];const l=g.InlineCompletionsController.get(this._editor);return l&&l.shouldShowHoverAt(o.range)?[new h(this,o.range,l)]:[]}renderHoverParts(o,d){const l=new y.DisposableStore,p=d[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(7)&&this.renderScreenReaderText(o,p,l);const m=p.controller.model.get(),v=this._instantiationService.createInstance(C.InlineSuggestionHintsContentWidget,this._editor,!1,(0,D.constObservable)(null),m.selectedInlineCompletionIndex,m.inlineCompletionsCount,m.selectedInlineCompletion.map(b=>{var w;return(w=b?.inlineCompletion.source.inlineCompletions.commands)!==null&&w!==void 0?w:[]}));return o.fragment.appendChild(v.getDomNode()),m.triggerExplicitly(),l.add(v),l}renderScreenReaderText(o,d,l){const p=L.$,m=p("div.hover-row.markdown-hover"),v=L.append(m,p("div.hover-contents",{["aria-live"]:"assertive"})),b=l.add(new s.MarkdownRenderer({editor:this._editor},this._languageService,this._openerService)),w=E=>{l.add(b.onDidRenderAsync(()=>{v.className="hover-contents code-hover-contents",o.onContentsChanged()}));const I=i.localize(0,null),M=l.add(b.render(new k.MarkdownString().appendText(I).appendCodeblock("text",E)));v.replaceChildren(M.element)};l.add((0,D.autorun)(E=>{var I;const M=(I=d.controller.model.read(E))===null||I===void 0?void 0:I.ghostText.read(E);if(M){const P=this._editor.getModel().getLineContent(M.lineNumber);w(M.renderForScreenReader(P))}else L.reset(v)})),o.fragment.appendChild(m)}};e.InlineCompletionsHoverParticipant=r,e.InlineCompletionsHoverParticipant=r=ke([fe(1,f.ILanguageService),fe(2,a.IOpenerService),fe(3,n.IAccessibilityService),fe(4,t.IInstantiationService),fe(5,u.ITelemetryService)],r)}),define(ne[918],se([1,0,16,103,916,917,258,30]),function(Q,e,L,k,y,D,S,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(S.InlineCompletionsController.ID,S.InlineCompletionsController,3),(0,L.registerEditorAction)(y.TriggerInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowNextInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowPreviousInlineSuggestionAction),(0,L.registerEditorAction)(y.AcceptNextWordOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptNextLineOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptInlineCompletion),(0,L.registerEditorAction)(y.HideInlineCompletion),(0,f.registerAction2)(y.ToggleAlwaysShowInlineSuggestionToolbar),k.HoverParticipantRegistry.register(D.InlineCompletionsHoverParticipant)}),define(ne[379],se([1,0,8]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IWorkspaceTrustManagementService=void 0,e.IWorkspaceTrustManagementService=(0,L.createDecorator)("workspaceTrustManagementService")}),define(ne[919],se([1,0,13,25,55,2,17,11,16,36,40,286,115,41,325,103,248,834,709,28,8,56,71,62,379,465]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowExcludeOptions=e.DisableHighlightingOfNonBasicAsciiCharactersAction=e.DisableHighlightingOfInvisibleCharactersAction=e.DisableHighlightingOfAmbiguousCharactersAction=e.DisableHighlightingInStringsAction=e.DisableHighlightingInCommentsAction=e.UnicodeHighlighterHoverParticipant=e.UnicodeHighlighter=e.warningIcon=void 0,e.warningIcon=(0,p.registerIcon)("extensions-warning-message",k.Codicon.warning,r.localize(0,null));let v=class extends D.Disposable{constructor(J,X,H,B){super(),this._editor=J,this._editorWorkerService=X,this._workspaceTrustService=H,this._highlighter=null,this._bannerClosed=!1,this._updateState=V=>{if(V&&V.hasMore){if(this._bannerClosed)return;const Y=Math.max(V.ambiguousCharacterCount,V.nonBasicAsciiCharacterCount,V.invisibleCharacterCount);let ie;if(V.nonBasicAsciiCharacterCount>=Y)ie={message:r.localize(1,null),command:new U};else if(V.ambiguousCharacterCount>=Y)ie={message:r.localize(2,null),command:new O};else if(V.invisibleCharacterCount>=Y)ie={message:r.localize(3,null),command:new W};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:ie.message,icon:e.warningIcon,actions:[{label:ie.command.shortLabel,href:`command:${ie.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(B.createInstance(h.BannerController,J)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=J.getOption(123),this._register(H.onDidChangeTrust(V=>{this._updateHighlighter()})),this._register(J.onDidChangeConfiguration(V=>{V.hasChanged(123)&&(this._options=J.getOption(123),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const J=b(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([J.nonBasicASCII,J.ambiguousCharacters,J.invisibleCharacters].every(H=>H===!1))return;const X={nonBasicASCII:J.nonBasicASCII,ambiguousCharacters:J.ambiguousCharacters,invisibleCharacters:J.invisibleCharacters,includeComments:J.includeComments,includeStrings:J.includeStrings,allowedCodePoints:Object.keys(J.allowedCharacters).map(H=>H.codePointAt(0)),allowedLocales:Object.keys(J.allowedLocales).map(H=>H==="_os"?new Intl.NumberFormat().resolvedOptions().locale:H==="_vscode"?S.language:H)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new w(this._editor,X,this._updateState,this._editorWorkerService):this._highlighter=new E(this._editor,X,this._updateState)}getDecorationInfo(J){return this._highlighter?this._highlighter.getDecorationInfo(J):null}};e.UnicodeHighlighter=v,v.ID="editor.contrib.unicodeHighlighter",e.UnicodeHighlighter=v=ke([fe(1,i.IEditorWorkerService),fe(2,m.IWorkspaceTrustManagementService),fe(3,o.IInstantiationService)],v);function b(Z,J){return{nonBasicASCII:J.nonBasicASCII===g.inUntrustedWorkspace?!Z:J.nonBasicASCII,ambiguousCharacters:J.ambiguousCharacters,invisibleCharacters:J.invisibleCharacters,includeComments:J.includeComments===g.inUntrustedWorkspace?!Z:J.includeComments,includeStrings:J.includeStrings===g.inUntrustedWorkspace?!Z:J.includeStrings,allowedCharacters:J.allowedCharacters,allowedLocales:J.allowedLocales}}let w=class extends D.Disposable{constructor(J,X,H,B){super(),this._editor=J,this._options=X,this._updateState=H,this._editorWorkerService=B,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const J=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(X=>{if(this._model.isDisposed()||this._model.getVersionId()!==J)return;this._updateState(X);const H=[];if(!X.hasMore)for(const B of X.ranges)H.push({range:B,options:A.instance.getDecorationFromOptions(this._options)});this._decorations.set(H)})}getDecorationInfo(J){if(!this._decorations.has(J))return null;const X=this._editor.getModel();if(!(0,t.isModelDecorationVisible)(X,J))return null;const H=X.getValueInRange(J.range);return{reason:T(H,this._options),inComment:(0,t.isModelDecorationInComment)(X,J),inString:(0,t.isModelDecorationInString)(X,J)}}};w=ke([fe(3,i.IEditorWorkerService)],w);class E extends D.Disposable{constructor(J,X,H){super(),this._editor=J,this._options=X,this._updateState=H,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const J=this._editor.getVisibleRanges(),X=[],H={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const B of J){const V=s.UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model,this._options,B);for(const Y of V.ranges)H.ranges.push(Y);H.ambiguousCharacterCount+=H.ambiguousCharacterCount,H.invisibleCharacterCount+=H.invisibleCharacterCount,H.nonBasicAsciiCharacterCount+=H.nonBasicAsciiCharacterCount,H.hasMore=H.hasMore||V.hasMore}if(!H.hasMore)for(const B of H.ranges)X.push({range:B,options:A.instance.getDecorationFromOptions(this._options)});this._updateState(H),this._decorations.set(X)}getDecorationInfo(J){if(!this._decorations.has(J))return null;const X=this._editor.getModel(),H=X.getValueInRange(J.range);return(0,t.isModelDecorationVisible)(X,J)?{reason:T(H,this._options),inComment:(0,t.isModelDecorationInComment)(X,J),inString:(0,t.isModelDecorationInString)(X,J)}:null}}let I=class{constructor(J,X,H){this._editor=J,this._languageService=X,this._openerService=H,this.hoverOrdinal=5}computeSync(J,X){if(!this._editor.hasModel()||J.type!==1)return[];const H=this._editor.getModel(),B=this._editor.getContribution(v.ID);if(!B)return[];const V=[],Y=new Set;let ie=300;for(const ae of X){const ce=B.getDecorationInfo(ae);if(!ce)continue;const he=H.getValueInRange(ae.range).codePointAt(0),ue=P(he);let te;switch(ce.reason.kind){case 0:{(0,f.isBasicASCII)(ce.reason.confusableWith)?te=r.localize(4,null,ue,P(ce.reason.confusableWith.codePointAt(0))):te=r.localize(5,null,ue,P(ce.reason.confusableWith.codePointAt(0)));break}case 1:te=r.localize(6,null,ue);break;case 2:te=r.localize(7,null,ue);break}if(Y.has(te))continue;Y.add(te);const q={codePoint:he,reason:ce.reason,inComment:ce.inComment,inString:ce.inString},z=r.localize(8,null),ee=`command:${j.ID}?${encodeURIComponent(JSON.stringify(q))}`,$=new y.MarkdownString("",!0).appendMarkdown(te).appendText(" ").appendLink(ee,z);V.push(new u.MarkdownHover(this,ae.range,[$],!1,ie++))}return V}renderHoverParts(J,X){return(0,u.renderMarkdownHovers)(J,X,this._editor,this._languageService,this._openerService)}};e.UnicodeHighlighterHoverParticipant=I,e.UnicodeHighlighterHoverParticipant=I=ke([fe(1,n.ILanguageService),fe(2,d.IOpenerService)],I);function M(Z){return`U+${Z.toString(16).padStart(4,"0")}`}function P(Z){let J=`\`${M(Z)}\``;return f.InvisibleCharacters.isInvisibleCharacter(Z)||(J+=` "${`${x(Z)}`}"`),J}function x(Z){return Z===96?"`` ` ``":"`"+String.fromCodePoint(Z)+"`"}function T(Z,J){return s.UnicodeTextModelHighlighter.computeUnicodeHighlightReason(Z,J)}class A{constructor(){this.map=new Map}getDecorationFromOptions(J){return this.getDecoration(!J.includeComments,!J.includeStrings)}getDecoration(J,X){const H=`${J}${X}`;let B=this.map.get(H);return B||(B=C.ModelDecorationOptions.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:J,hideInStringTokens:X}),this.map.set(H,B)),B}}A.instance=new A;class N extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(10,null),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=r.localize(9,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.includeComments,!1,2)})}}e.DisableHighlightingInCommentsAction=N;class F extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(12,null),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=r.localize(11,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.includeStrings,!1,2)})}}e.DisableHighlightingInStringsAction=F;class O extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(14,null),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=r.localize(13,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.ambiguousCharacters,!1,2)})}}e.DisableHighlightingOfAmbiguousCharactersAction=O,O.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";class W extends _.EditorAction{constructor(){super({id:W.ID,label:r.localize(16,null),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=r.localize(15,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.invisibleCharacters,!1,2)})}}e.DisableHighlightingOfInvisibleCharactersAction=W,W.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";class U extends _.EditorAction{constructor(){super({id:U.ID,label:r.localize(18,null),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=r.localize(17,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.nonBasicASCII,!1,2)})}}e.DisableHighlightingOfNonBasicAsciiCharactersAction=U,U.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";class j extends _.EditorAction{constructor(){super({id:j.ID,label:r.localize(19,null),alias:"Show Exclude Options",precondition:void 0})}run(J,X,H){return we(this,void 0,void 0,function*(){const{codePoint:B,reason:V,inString:Y,inComment:ie}=H,ae=String.fromCodePoint(B),ce=J.get(l.IQuickInputService),de=J.get(c.IConfigurationService);function he(q){return f.InvisibleCharacters.isInvisibleCharacter(q)?r.localize(20,null,M(q)):r.localize(21,null,`${M(q)} "${ae}"`)}const ue=[];if(V.kind===0)for(const q of V.notAmbiguousInLocales)ue.push({label:r.localize(22,null,q),run:()=>we(this,void 0,void 0,function*(){K(de,[q])})});if(ue.push({label:he(B),run:()=>R(de,[B])}),ie){const q=new N;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(Y){const q=new F;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}if(V.kind===0){const q=new O;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(V.kind===1){const q=new W;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(V.kind===2){const q=new U;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else G(V);const te=yield ce.pick(ue,{title:r.localize(23,null)});te&&(yield te.run())})}}e.ShowExcludeOptions=j,j.ID="editor.action.unicodeHighlight.showExcludeOptions";function R(Z,J){return we(this,void 0,void 0,function*(){const X=Z.getValue(g.unicodeHighlightConfigKeys.allowedCharacters);let H;typeof X=="object"&&X?H=X:H={};for(const B of J)H[String.fromCodePoint(B)]=!0;yield Z.updateValue(g.unicodeHighlightConfigKeys.allowedCharacters,H,2)})}function K(Z,J){var X;return we(this,void 0,void 0,function*(){const H=(X=Z.inspect(g.unicodeHighlightConfigKeys.allowedLocales).user)===null||X===void 0?void 0:X.value;let B;typeof H=="object"&&H?B=Object.assign({},H):B={};for(const V of J)B[V]=!0;yield Z.updateValue(g.unicodeHighlightConfigKeys.allowedLocales,B,2)})}function G(Z){throw new Error(`Unexpected value: ${Z}`)}(0,_.registerEditorAction)(O),(0,_.registerEditorAction)(W),(0,_.registerEditorAction)(U),(0,_.registerEditorAction)(j),(0,_.registerEditorContribution)(v.ID,v,1),a.HoverParticipantRegistry.register(I)}),define(ne[920],se([1,0,189,161,254,237,794,877,795,796,797,828,879,902,886,798,909,799,880,910,911,365,255,802,803,769,918,256,257,371,369,372,805,904,887,806,807,890,891,808,896,833,858,859,860,810,194,906,378,811,812,785,919,813,897,353,814,809,94,172]),function(Q,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0})}),define(ne[259],se([1,0,11,7,44,6,119,2,17,101,22,132,241,73,12,5,51,69,187,27,28,345,15,156,8,760,34,336,118,337,761,158,43,77,79,163,134,94,45,33,70,379,57,763,778,867,50,768,115,242,41,853,233,871,869,361,133,762,84,30,791,764,96,757,232,758,157,191,97,767,56,71,87,782,116,765,149,9,239,32,360,338,908,76,854,748]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J,X,H,B,V,Y,ie,ae,ce,de,he,ue,te,q,z,ee,$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe,_e,me,le,pe,Ce){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneServices=e.updateConfigurationService=e.StandaloneConfigurationService=e.StandaloneKeybindingService=e.StandaloneCommandService=e.StandaloneNotificationService=void 0;class be{constructor(Ae){this.disposed=!1,this.model=Ae,this._onWillDispose=new D.Emitter}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let Ie=class{constructor(Ae){this.modelService=Ae}createModelReference(Ae){const Ue=this.modelService.getModel(Ae);return Ue?Promise.resolve(new f.ImmortalReference(new be(Ue))):Promise.reject(new Error("Model not found"))}};Ie=ke([fe(0,u.IModelService)],Ie);class Ne{show(){return Ne.NULL_PROGRESS_RUNNER}showWhile(Ae,Ue){return we(this,void 0,void 0,function*(){yield Ae})}}Ne.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class Re{withProgress(Ae,Ue,Ke){return Ue({report:()=>{}})}}class Ve{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class ze{confirm(Ae){return we(this,void 0,void 0,function*(){return{confirmed:this.doConfirm(Ae.message,Ae.detail),checkboxChecked:!1}})}doConfirm(Ae,Ue){let Ke=Ae;return Ue&&(Ke=Ke+` - -`+Ue),window.confirm(Ke)}prompt(Ae){var Ue,Ke;return we(this,void 0,void 0,function*(){let $e;if(this.doConfirm(Ae.message,Ae.detail)){const tt=[...(Ue=Ae.buttons)!==null&&Ue!==void 0?Ue:[]];Ae.cancelButton&&typeof Ae.cancelButton!="string"&&typeof Ae.cancelButton!="boolean"&&tt.push(Ae.cancelButton),$e=yield(Ke=tt[0])===null||Ke===void 0?void 0:Ke.run({checkboxChecked:!1})}return{result:$e}})}error(Ae,Ue){return we(this,void 0,void 0,function*(){yield this.prompt({type:g.default.Error,message:Ae,detail:Ue})})}}class We{info(Ae){return this.notify({severity:g.default.Info,message:Ae})}warn(Ae){return this.notify({severity:g.default.Warning,message:Ae})}error(Ae){return this.notify({severity:g.default.Error,message:Ae})}notify(Ae){switch(Ae.severity){case g.default.Error:console.error(Ae.message);break;case g.default.Warning:console.warn(Ae.message);break;default:console.log(Ae.message);break}return We.NO_OP}prompt(Ae,Ue,Ke,$e){return We.NO_OP}status(Ae,Ue){return f.Disposable.None}}e.StandaloneNotificationService=We,We.NO_OP=new x.NoOpNotification;let qe=class{constructor(Ae){this._onWillExecuteCommand=new D.Emitter,this._onDidExecuteCommand=new D.Emitter,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=Ae}executeCommand(Ae,...Ue){const Ke=c.CommandsRegistry.getCommand(Ae);if(!Ke)return Promise.reject(new Error(`command '${Ae}' not found`));try{this._onWillExecuteCommand.fire({commandId:Ae,args:Ue});const $e=this._instantiationService.invokeFunction.apply(this._instantiationService,[Ke.handler,...Ue]);return this._onDidExecuteCommand.fire({commandId:Ae,args:Ue}),Promise.resolve($e)}catch($e){return Promise.reject($e)}}};e.StandaloneCommandService=qe,e.StandaloneCommandService=qe=ke([fe(0,m.IInstantiationService)],qe);let Oe=class extends v.AbstractKeybindingService{constructor(Ae,Ue,Ke,$e,et,tt){super(Ae,Ue,Ke,$e,et),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const ut=mt=>{const wt=new f.DisposableStore;wt.add(k.addDisposableListener(mt,k.EventType.KEY_DOWN,Dt=>{const yt=new y.StandardKeyboardEvent(Dt);this._dispatch(yt,yt.target)&&(yt.preventDefault(),yt.stopPropagation())})),wt.add(k.addDisposableListener(mt,k.EventType.KEY_UP,Dt=>{const yt=new y.StandardKeyboardEvent(Dt);this._singleModifierDispatch(yt,yt.target)&&yt.preventDefault()})),this._domNodeListeners.push(new Ge(mt,wt))},it=mt=>{for(let wt=0;wt{mt.getOption(60)||ut(mt.getContainerDomNode())},dt=mt=>{mt.getOption(60)||it(mt.getContainerDomNode())};this._register(tt.onCodeEditorAdd(rt)),this._register(tt.onCodeEditorRemove(dt)),tt.listCodeEditors().forEach(rt);const ft=mt=>{ut(mt.getContainerDomNode())},St=mt=>{it(mt.getContainerDomNode())};this._register(tt.onDiffEditorAdd(ft)),this._register(tt.onDiffEditorRemove(St)),tt.listDiffEditors().forEach(ft)}addDynamicKeybinding(Ae,Ue,Ke,$e){return(0,f.combinedDisposable)(c.CommandsRegistry.registerCommand(Ae,Ke),this.addDynamicKeybindings([{keybinding:Ue,command:Ae,when:$e}]))}addDynamicKeybindings(Ae){const Ue=Ae.map(Ke=>{var $e;return{keybinding:(0,S.decodeKeybinding)(Ke.keybinding,_.OS),command:($e=Ke.command)!==null&&$e!==void 0?$e:null,commandArgs:Ke.commandArgs,when:Ke.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}});return this._dynamicKeybindings=this._dynamicKeybindings.concat(Ue),this.updateResolver(),(0,f.toDisposable)(()=>{for(let Ke=0;Kethis._log(Ke))}return this._cachedResolver}_documentHasFocus(){return document.hasFocus()}_toNormalizedKeybindingItems(Ae,Ue){const Ke=[];let $e=0;for(const et of Ae){const tt=et.when||void 0,ut=et.keybinding;if(!ut)Ke[$e++]=new I.ResolvedKeybindingItem(void 0,et.command,et.commandArgs,tt,Ue,null,!1);else{const it=M.USLayoutResolvedKeybinding.resolveKeybinding(ut,_.OS);for(const rt of it)Ke[$e++]=new I.ResolvedKeybindingItem(rt,et.command,et.commandArgs,tt,Ue,null,!1)}}return Ke}resolveKeyboardEvent(Ae){const Ue=new S.KeyCodeChord(Ae.ctrlKey,Ae.shiftKey,Ae.altKey,Ae.metaKey,Ae.keyCode);return new M.USLayoutResolvedKeybinding([Ue],_.OS)}};e.StandaloneKeybindingService=Oe,e.StandaloneKeybindingService=Oe=ke([fe(0,l.IContextKeyService),fe(1,c.ICommandService),fe(2,A.ITelemetryService),fe(3,x.INotificationService),fe(4,j.ILogService),fe(5,U.ICodeEditorService)],Oe);class Ge extends f.Disposable{constructor(Ae,Ue){super(),this.domNode=Ae,this._register(Ue)}}function Qe(je){return je&&typeof je=="object"&&(!je.overrideIdentifier||typeof je.overrideIdentifier=="string")&&(!je.resource||je.resource instanceof C.URI)}class st{constructor(){this._onDidChangeConfiguration=new D.Emitter,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const Ae=new Fe.DefaultConfiguration;this._configuration=new d.Configuration(Ae.reload(),new d.ConfigurationModel,new d.ConfigurationModel,new d.ConfigurationModel),Ae.dispose()}getValue(Ae,Ue){const Ke=typeof Ae=="string"?Ae:void 0,$e=Qe(Ae)?Ae:Qe(Ue)?Ue:{};return this._configuration.getValue(Ke,$e,void 0)}updateValues(Ae){const Ue={data:this._configuration.toData()},Ke=[];for(const $e of Ae){const[et,tt]=$e;this.getValue(et)!==tt&&(this._configuration.updateValue(et,tt),Ke.push(et))}if(Ke.length>0){const $e=new d.ConfigurationChangeEvent({keys:Ke,overrides:[]},Ue,this._configuration);$e.source=8,$e.sourceConfig=null,this._onDidChangeConfiguration.fire($e)}return Promise.resolve()}updateValue(Ae,Ue,Ke,$e){return this.updateValues([[Ae,Ue]])}inspect(Ae,Ue={}){return this._configuration.inspect(Ae,Ue,void 0)}}e.StandaloneConfigurationService=st;let nt=class{constructor(Ae,Ue,Ke){this.configurationService=Ae,this.modelService=Ue,this.languageService=Ke,this._onDidChangeConfiguration=new D.Emitter,this.configurationService.onDidChangeConfiguration($e=>{this._onDidChangeConfiguration.fire({affectedKeys:$e.affectedKeys,affectsConfiguration:(et,tt)=>$e.affectsConfiguration(tt)})})}getValue(Ae,Ue,Ke){const $e=t.Position.isIPosition(Ue)?Ue:null,et=$e?typeof Ke=="string"?Ke:void 0:typeof Ue=="string"?Ue:void 0,tt=Ae?this.getLanguage(Ae,$e):void 0;return typeof et>"u"?this.configurationService.getValue({resource:Ae,overrideIdentifier:tt}):this.configurationService.getValue(et,{resource:Ae,overrideIdentifier:tt})}getLanguage(Ae,Ue){const Ke=this.modelService.getModel(Ae);return Ke?Ue?Ke.getLanguageIdAtPosition(Ue.lineNumber,Ue.column):Ke.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(Ae)}};nt=ke([fe(0,o.IConfigurationService),fe(1,u.IModelService),fe(2,Y.ILanguageService)],nt);let ot=class{constructor(Ae){this.configurationService=Ae}getEOL(Ae,Ue){const Ke=this.configurationService.getValue("files.eol",{overrideIdentifier:Ue,resource:Ae});return Ke&&typeof Ke=="string"&&Ke!=="auto"?Ke:_.isLinux||_.isMacintosh?` -`:`\r -`}};ot=ke([fe(0,o.IConfigurationService)],ot);class ct{publicLog2(){}}class lt{constructor(){const Ae=C.URI.from({scheme:lt.SCHEME,authority:"model",path:"/"});this.workspace={id:N.STANDALONE_EDITOR_WORKSPACE_ID,folders:[new N.WorkspaceFolder({uri:Ae,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(Ae){return Ae&&Ae.scheme===lt.SCHEME?this.workspace.folders[0]:null}}lt.SCHEME="inmemory";function gt(je,Ae,Ue){if(!Ae||!(je instanceof st))return;const Ke=[];Object.keys(Ae).forEach($e=>{(0,i.isEditorConfigurationKey)($e)&&Ke.push([`editor.${$e}`,Ae[$e]]),Ue&&(0,i.isDiffEditorConfigurationKey)($e)&&Ke.push([`diffEditor.${$e}`,Ae[$e]])}),Ke.length>0&&je.updateValues(Ke)}e.updateConfigurationService=gt;let at=class{constructor(Ae){this._modelService=Ae}hasPreviewHandler(){return!1}apply(Ae,Ue){return we(this,void 0,void 0,function*(){const Ke=Array.isArray(Ae)?Ae:s.ResourceEdit.convert(Ae),$e=new Map;for(const ut of Ke){if(!(ut instanceof s.ResourceTextEdit))throw new Error("bad edit - only text edits are supported");const it=this._modelService.getModel(ut.resource);if(!it)throw new Error("bad edit - model not found");if(typeof ut.versionId=="number"&&it.getVersionId()!==ut.versionId)throw new Error("bad state - model changed in the meantime");let rt=$e.get(it);rt||(rt=[],$e.set(it,rt)),rt.push(n.EditOperation.replaceMove(a.Range.lift(ut.textEdit.range),ut.textEdit.text))}let et=0,tt=0;for(const[ut,it]of $e)ut.pushStackElement(),ut.pushEditOperations([],it,()=>[]),ut.pushStackElement(),tt+=1,et+=it.length;return{ariaSummary:L.format(O.StandaloneServicesNLS.bulkEditServiceSummary,et,tt),isApplied:et>0}})}};at=ke([fe(0,u.IModelService)],at);class ht{getUriLabel(Ae,Ue){return Ae.scheme==="file"?Ae.fsPath:Ae.path}getUriBasenameLabel(Ae){return(0,W.basename)(Ae)}}let Be=class extends G.ContextViewService{constructor(Ae,Ue){super(Ae),this._codeEditorService=Ue}showContextView(Ae,Ue,Ke){if(!Ue){const $e=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();$e&&(Ue=$e.getContainerDomNode())}return super.showContextView(Ae,Ue,Ke)}};Be=ke([fe(0,F.ILayoutService),fe(1,U.ICodeEditorService)],Be);class Te{constructor(){this._neverEmitter=new D.Emitter,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class xe extends Z.LanguageService{constructor(){super()}}class He extends me.LogService{constructor(){super(new j.ConsoleLogger)}}let Ye=class extends J.ContextMenuService{constructor(Ae,Ue,Ke,$e,et,tt){super(Ae,Ue,Ke,$e,et,tt),this.configure({blockMouse:!1})}};Ye=ke([fe(0,A.ITelemetryService),fe(1,x.INotificationService),fe(2,K.IContextViewService),fe(3,b.IKeybindingService),fe(4,z.IMenuService),fe(5,l.IContextKeyService)],Ye);class Ze{playAudioCue(Ae,Ue){return we(this,void 0,void 0,function*(){})}}(0,X.registerSingleton)(o.IConfigurationService,st,0),(0,X.registerSingleton)(r.ITextResourceConfigurationService,nt,0),(0,X.registerSingleton)(r.ITextResourcePropertiesService,ot,0),(0,X.registerSingleton)(N.IWorkspaceContextService,lt,0),(0,X.registerSingleton)(P.ILabelService,ht,0),(0,X.registerSingleton)(A.ITelemetryService,ct,0),(0,X.registerSingleton)(p.IDialogService,ze,0),(0,X.registerSingleton)(Ce.IEnvironmentService,Ve,0),(0,X.registerSingleton)(x.INotificationService,We,0),(0,X.registerSingleton)(De.IMarkerService,ye.MarkerService,0),(0,X.registerSingleton)(Y.ILanguageService,xe,0),(0,X.registerSingleton)(ue.IStandaloneThemeService,he.StandaloneThemeService,0),(0,X.registerSingleton)(j.ILogService,He,0),(0,X.registerSingleton)(u.IModelService,ce.ModelService,0),(0,X.registerSingleton)(ae.IMarkerDecorationsService,ie.MarkerDecorationsService,0),(0,X.registerSingleton)(l.IContextKeyService,oe.ContextKeyService,0),(0,X.registerSingleton)(T.IProgressService,Re,0),(0,X.registerSingleton)(T.IEditorProgressService,Ne,0),(0,X.registerSingleton)(Pe.IStorageService,Pe.InMemoryStorageService,0),(0,X.registerSingleton)(B.IEditorWorkerService,V.EditorWorkerService,0),(0,X.registerSingleton)(s.IBulkEditService,at,0),(0,X.registerSingleton)(R.IWorkspaceTrustManagementService,Te,0),(0,X.registerSingleton)(h.ITextModelService,Ie,0),(0,X.registerSingleton)(q.IAccessibilityService,te.AccessibilityService,0),(0,X.registerSingleton)(Le.IListService,Le.ListService,0),(0,X.registerSingleton)(c.ICommandService,qe,0),(0,X.registerSingleton)(b.IKeybindingService,Oe,0),(0,X.registerSingleton)(Me.IQuickInputService,de.StandaloneQuickInputService,0),(0,X.registerSingleton)(K.IContextViewService,Be,0),(0,X.registerSingleton)(Ee.IOpenerService,H.OpenerService,0),(0,X.registerSingleton)(re.IClipboardService,$.BrowserClipboardService,0),(0,X.registerSingleton)(K.IContextMenuService,Ye,0),(0,X.registerSingleton)(z.IMenuService,ee.MenuService,0),(0,X.registerSingleton)(_e.IAudioCueService,Ze,0);var Xe;(function(je){const Ae=new Se.ServiceCollection;for(const[it,rt]of(0,X.getSingletonServiceDescriptors)())Ae.set(it,rt);const Ue=new ve.InstantiationService(Ae,!0);Ae.set(m.IInstantiationService,Ue);function Ke(it){$e||tt({});const rt=Ae.get(it);if(!rt)throw new Error("Missing service "+it);return rt instanceof ge.SyncDescriptor?Ue.invokeFunction(dt=>dt.get(it)):rt}je.get=Ke;let $e=!1;const et=new D.Emitter;function tt(it){if($e)return Ue;$e=!0;for(const[dt,ft]of(0,X.getSingletonServiceDescriptors)())Ae.get(dt)||Ae.set(dt,ft);for(const dt in it)if(it.hasOwnProperty(dt)){const ft=(0,m.createDecorator)(dt);Ae.get(ft)instanceof ge.SyncDescriptor&&Ae.set(ft,it[dt])}const rt=(0,le.getEditorFeatures)();for(const dt of rt)try{Ue.createInstance(dt)}catch(ft){(0,pe.onUnexpectedError)(ft)}return et.fire(),Ue}je.initialize=tt;function ut(it){if($e)return it();const rt=new f.DisposableStore,dt=rt.add(et.event(()=>{dt.dispose(),rt.add(it())}));return rt}je.withServices=ut})(Xe||(e.StandaloneServices=Xe={}))}),define(ne[921],se([1,0,49,2,33,161,254,277,259,133,30,27,28,15,57,8,34,43,23,84,94,96,77,51,41,360,78,32,18,876,116]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createTextModel=e.StandaloneDiffEditor2=e.StandaloneDiffEditor=e.StandaloneEditor=e.StandaloneCodeEditor=void 0;let P=0,x=!1;function T(j){if(!j){if(x)return;x=!0}L.setARIAContainer(j||document.body)}let A=class extends D.CodeEditorWidget{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae){const ce=Object.assign({},K);ce.ariaLabel=ce.ariaLabel||o.StandaloneCodeEditorNLS.editorViewAccessibleLabel,ce.ariaLabel=ce.ariaLabel+";"+o.StandaloneCodeEditorNLS.accessibilityHelpMessage,super(R,ce,{},G,Z,J,X,B,V,Y,ie,ae),H instanceof _.StandaloneKeybindingService?this._standaloneKeybindingService=H:this._standaloneKeybindingService=null,T(ce.ariaContainerElement)}addCommand(R,K,G){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const Z="DYNAMIC_"+ ++P,J=n.ContextKeyExpr.deserialize(G);return this._standaloneKeybindingService.addDynamicKeybinding(Z,R,K,J),Z}createContextKey(R,K){return this._contextKeyService.createKey(R,K)}addAction(R){if(typeof R.id!="string"||typeof R.label!="string"||typeof R.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),k.Disposable.None;const K=R.id,G=R.label,Z=n.ContextKeyExpr.and(n.ContextKeyExpr.equals("editorId",this.getId()),n.ContextKeyExpr.deserialize(R.precondition)),J=R.keybindings,X=n.ContextKeyExpr.and(Z,n.ContextKeyExpr.deserialize(R.keybindingContext)),H=R.contextMenuGroupId||null,B=R.contextMenuOrder||0,V=(ce,...de)=>Promise.resolve(R.run(this,...de)),Y=new k.DisposableStore,ie=this.getId()+":"+K;if(Y.add(s.CommandsRegistry.registerCommand(ie,V)),H){const ce={command:{id:ie,title:G},when:Z,group:H,order:B};Y.add(C.MenuRegistry.appendMenuItem(C.MenuId.EditorContext,ce))}if(Array.isArray(J))for(const ce of J)Y.add(this._standaloneKeybindingService.addDynamicKeybinding(ie,ce,V,X));const ae=new f.InternalEditorAction(ie,G,G,Z,(...ce)=>Promise.resolve(R.run(this,...ce)),this._contextKeyService);return this._actions.set(K,ae),Y.add((0,k.toDisposable)(()=>{this._actions.delete(K)})),Y}_triggerCommand(R,K){if(this._codeEditorService instanceof v.StandaloneCodeEditorService)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(R,K)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(R,K)}};e.StandaloneCodeEditor=A,e.StandaloneCodeEditor=A=ke([fe(2,a.IInstantiationService),fe(3,y.ICodeEditorService),fe(4,s.ICommandService),fe(5,n.IContextKeyService),fe(6,u.IKeybindingService),fe(7,r.IThemeService),fe(8,h.INotificationService),fe(9,c.IAccessibilityService),fe(10,w.ILanguageConfigurationService),fe(11,E.ILanguageFeaturesService)],A);let N=class extends A{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae,ce,de,he){const ue=Object.assign({},K);(0,_.updateConfigurationService)(Y,ue,!1);const te=B.registerEditorContainer(R);typeof ue.theme=="string"&&B.setTheme(ue.theme),typeof ue.autoDetectHighContrast<"u"&&B.setAutoDetectHighContrast(!!ue.autoDetectHighContrast);const q=ue.model;delete ue.model,super(R,ue,G,Z,J,X,H,B,V,ie,de,he),this._configurationService=Y,this._standaloneThemeService=B,this._register(te);let z;if(typeof q>"u"){const ee=ce.getLanguageIdByMimeType(ue.language)||ue.language||b.PLAINTEXT_LANGUAGE_ID;z=W(ae,ce,ue.value||"",ee,void 0),this._ownsModel=!0}else z=q,this._ownsModel=!1;if(this._attachModel(z),z){const ee={oldModelUrl:null,newModelUrl:z.uri};this._onDidChangeModel.fire(ee)}}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!1),typeof R.theme=="string"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_postDetachModelCleanup(R){super._postDetachModelCleanup(R),R&&this._ownsModel&&(R.dispose(),this._ownsModel=!1)}};e.StandaloneEditor=N,e.StandaloneEditor=N=ke([fe(2,a.IInstantiationService),fe(3,y.ICodeEditorService),fe(4,s.ICommandService),fe(5,n.IContextKeyService),fe(6,u.IKeybindingService),fe(7,g.IStandaloneThemeService),fe(8,h.INotificationService),fe(9,i.IConfigurationService),fe(10,c.IAccessibilityService),fe(11,p.IModelService),fe(12,m.ILanguageService),fe(13,w.ILanguageConfigurationService),fe(14,E.ILanguageFeaturesService)],N);let F=class extends S.DiffEditorWidget{constructor(R,K,G,Z,J,X,H,B,V,Y,ie){const ae=Object.assign({},K);(0,_.updateConfigurationService)(B,ae,!0);const ce=X.registerEditorContainer(R);typeof ae.theme=="string"&&X.setTheme(ae.theme),typeof ae.autoDetectHighContrast<"u"&&X.setAutoDetectHighContrast(!!ae.autoDetectHighContrast),super(R,ae,{},ie,Z,G,J,X,H,V,Y),this._configurationService=B,this._standaloneThemeService=X,this._register(ce)}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!0),typeof R.theme=="string"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_createInnerEditor(R,K,G){return R.createInstance(A,K,G)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(R,K,G){return this.getModifiedEditor().addCommand(R,K,G)}createContextKey(R,K){return this.getModifiedEditor().createContextKey(R,K)}addAction(R){return this.getModifiedEditor().addAction(R)}};e.StandaloneDiffEditor=F,e.StandaloneDiffEditor=F=ke([fe(2,a.IInstantiationService),fe(3,n.IContextKeyService),fe(4,y.ICodeEditorService),fe(5,g.IStandaloneThemeService),fe(6,h.INotificationService),fe(7,i.IConfigurationService),fe(8,t.IContextMenuService),fe(9,l.IEditorProgressService),fe(10,d.IClipboardService)],F);let O=class extends I.DiffEditorWidget2{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae){const ce=Object.assign({},K);(0,_.updateConfigurationService)(B,ce,!0);const de=X.registerEditorContainer(R);typeof ce.theme=="string"&&X.setTheme(ce.theme),typeof ce.autoDetectHighContrast<"u"&&X.setAutoDetectHighContrast(!!ce.autoDetectHighContrast),super(R,ce,{},Z,G,J,ae,Y),this._configurationService=B,this._standaloneThemeService=X,this._register(de)}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!0),typeof R.theme=="string"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_createInnerEditor(R,K,G){return R.createInstance(A,K,G)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(R,K,G){return this.getModifiedEditor().addCommand(R,K,G)}createContextKey(R,K){return this.getModifiedEditor().createContextKey(R,K)}addAction(R){return this.getModifiedEditor().addAction(R)}};e.StandaloneDiffEditor2=O,e.StandaloneDiffEditor2=O=ke([fe(2,a.IInstantiationService),fe(3,n.IContextKeyService),fe(4,y.ICodeEditorService),fe(5,g.IStandaloneThemeService),fe(6,h.INotificationService),fe(7,i.IConfigurationService),fe(8,t.IContextMenuService),fe(9,l.IEditorProgressService),fe(10,d.IClipboardService),fe(11,M.IAudioCueService)],O);function W(j,R,K,G,Z){if(K=K||"",!G){const J=K.indexOf(` -`);let X=K;return J!==-1&&(X=K.substring(0,J)),U(j,K,R.createByFilepathOrFirstLine(Z||null,X),Z)}return U(j,K,R.createById(G),Z)}e.createTextModel=W;function U(j,R,K,G){return j.createModel(R,K,G)}}),define(ne[922],se([1,0,2,11,22,324,33,237,36,231,148,48,29,32,154,41,51,773,208,752,921,259,133,27,97,34,16,30,15,78,109,66,145,56,471]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoEditorAPI=e.registerEditorOpener=e.registerLinkOpener=e.registerCommand=e.remeasureFonts=e.setTheme=e.defineTheme=e.tokenize=e.colorizeModelLine=e.colorize=e.colorizeElement=e.createWebWorker=e.onDidChangeModelLanguage=e.onWillDisposeModel=e.onDidCreateModel=e.getModels=e.getModel=e.onDidChangeMarkers=e.getModelMarkers=e.removeAllMarkers=e.setModelMarkers=e.setModelLanguage=e.createModel=e.addKeybindingRules=e.addKeybindingRule=e.addEditorAction=e.addCommand=e.createDiffNavigator=e.createDiffEditor=e.getDiffEditors=e.getEditors=e.onDidCreateDiffEditor=e.onDidCreateEditor=e.create=void 0;function A(ye,Ee,Me){return d.StandaloneServices.initialize(Me||{}).createInstance(o.StandaloneEditor,ye,Ee)}e.create=A;function N(ye){return d.StandaloneServices.get(S.ICodeEditorService).onCodeEditorAdd(Me=>{ye(Me)})}e.onDidCreateEditor=N;function F(ye){return d.StandaloneServices.get(S.ICodeEditorService).onDiffEditorAdd(Me=>{ye(Me)})}e.onDidCreateDiffEditor=F;function O(){return d.StandaloneServices.get(S.ICodeEditorService).listCodeEditors()}e.getEditors=O;function W(){return d.StandaloneServices.get(S.ICodeEditorService).listDiffEditors()}e.getDiffEditors=W;function U(ye,Ee,Me){var Pe;const Fe=d.StandaloneServices.initialize(Me||{});return!((Pe=Ee?.experimental)===null||Pe===void 0)&&Pe.useVersion2?Fe.createInstance(o.StandaloneDiffEditor2,ye,Ee):Fe.createInstance(o.StandaloneDiffEditor,ye,Ee)}e.createDiffEditor=U;function j(ye,Ee){return d.StandaloneServices.initialize({}).createInstance(f.DiffNavigator,ye,Ee)}e.createDiffNavigator=j;function R(ye){if(typeof ye.id!="string"||typeof ye.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return p.CommandsRegistry.registerCommand(ye.id,ye.run)}e.addCommand=R;function K(ye){if(typeof ye.id!="string"||typeof ye.label!="string"||typeof ye.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const Ee=E.ContextKeyExpr.deserialize(ye.precondition),Me=(Fe,..._e)=>b.EditorCommand.runEditorCommand(Fe,_e,Ee,(me,le,pe)=>Promise.resolve(ye.run(le,...pe))),Pe=new L.DisposableStore;if(Pe.add(p.CommandsRegistry.registerCommand(ye.id,Me)),ye.contextMenuGroupId){const Fe={command:{id:ye.id,title:ye.label},when:Ee,group:ye.contextMenuGroupId,order:ye.contextMenuOrder||0};Pe.add(w.MenuRegistry.appendMenuItem(w.MenuId.EditorContext,Fe))}if(Array.isArray(ye.keybindings)){const Fe=d.StandaloneServices.get(v.IKeybindingService);if(!(Fe instanceof d.StandaloneKeybindingService))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const _e=E.ContextKeyExpr.and(Ee,E.ContextKeyExpr.deserialize(ye.keybindingContext));Pe.add(Fe.addDynamicKeybindings(ye.keybindings.map(me=>({keybinding:me,command:ye.id,when:_e}))))}}return Pe}e.addEditorAction=K;function G(ye){return Z([ye])}e.addKeybindingRule=G;function Z(ye){const Ee=d.StandaloneServices.get(v.IKeybindingService);return Ee instanceof d.StandaloneKeybindingService?Ee.addDynamicKeybindings(ye.map(Me=>({keybinding:Me.keybinding,command:Me.command,commandArgs:Me.commandArgs,when:E.ContextKeyExpr.deserialize(Me.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),L.Disposable.None)}e.addKeybindingRules=Z;function J(ye,Ee,Me){const Pe=d.StandaloneServices.get(a.ILanguageService),Fe=Pe.getLanguageIdByMimeType(Ee)||Ee;return(0,o.createTextModel)(d.StandaloneServices.get(u.IModelService),Pe,ye,Fe,Me)}e.createModel=J;function X(ye,Ee){const Me=d.StandaloneServices.get(a.ILanguageService),Pe=Me.getLanguageIdByMimeType(Ee)||Ee||I.PLAINTEXT_LANGUAGE_ID;ye.setLanguage(Me.createById(Pe))}e.setModelLanguage=X;function H(ye,Ee,Me){ye&&d.StandaloneServices.get(m.IMarkerService).changeOne(Ee,ye.uri,Me)}e.setModelMarkers=H;function B(ye){d.StandaloneServices.get(m.IMarkerService).changeAll(ye,[])}e.removeAllMarkers=B;function V(ye){return d.StandaloneServices.get(m.IMarkerService).read(ye)}e.getModelMarkers=V;function Y(ye){return d.StandaloneServices.get(m.IMarkerService).onMarkerChanged(ye)}e.onDidChangeMarkers=Y;function ie(ye){return d.StandaloneServices.get(u.IModelService).getModel(ye)}e.getModel=ie;function ae(){return d.StandaloneServices.get(u.IModelService).getModels()}e.getModels=ae;function ce(ye){return d.StandaloneServices.get(u.IModelService).onModelAdded(ye)}e.onDidCreateModel=ce;function de(ye){return d.StandaloneServices.get(u.IModelService).onModelRemoved(ye)}e.onWillDisposeModel=de;function he(ye){return d.StandaloneServices.get(u.IModelService).onModelLanguageChanged(Me=>{ye({model:Me.model,oldLanguage:Me.oldLanguageId})})}e.onDidChangeModelLanguage=he;function ue(ye){return(0,h.createWebWorker)(d.StandaloneServices.get(u.IModelService),d.StandaloneServices.get(n.ILanguageConfigurationService),ye)}e.createWebWorker=ue;function te(ye,Ee){const Me=d.StandaloneServices.get(a.ILanguageService),Pe=d.StandaloneServices.get(l.IStandaloneThemeService);return c.Colorizer.colorizeElement(Pe,Me,ye,Ee).then(()=>{Pe.registerEditorContainer(ye)})}e.colorizeElement=te;function q(ye,Ee,Me){const Pe=d.StandaloneServices.get(a.ILanguageService);return d.StandaloneServices.get(l.IStandaloneThemeService).registerEditorContainer(document.body),c.Colorizer.colorize(Pe,ye,Ee,Me)}e.colorize=q;function z(ye,Ee,Me=4){return d.StandaloneServices.get(l.IStandaloneThemeService).registerEditorContainer(document.body),c.Colorizer.colorizeModelLine(ye,Ee,Me)}e.colorizeModelLine=z;function ee(ye){const Ee=i.TokenizationRegistry.get(ye);return Ee||{getInitialState:()=>t.NullState,tokenize:(Me,Pe,Fe)=>(0,t.nullTokenize)(ye,Fe)}}function $(ye,Ee){i.TokenizationRegistry.getOrCreate(Ee);const Me=ee(Ee),Pe=(0,k.splitLines)(ye),Fe=[];let _e=Me.getInitialState();for(let me=0,le=Pe.length;mewe(this,void 0,void 0,function*(){var _e;if(!Pe)return null;const me=(_e=Me.options)===null||_e===void 0?void 0:_e.selection;let le;return me&&typeof me.endLineNumber=="number"&&typeof me.endColumn=="number"?le=me:me&&(le={lineNumber:me.startLineNumber,column:me.startColumn}),(yield ye.openCodeEditor(Pe,Me.resource,le))?Pe:null}))}e.registerEditorOpener=Le;function De(){return{create:A,getEditors:O,getDiffEditors:W,onDidCreateEditor:N,onDidCreateDiffEditor:F,createDiffEditor:U,createDiffNavigator:j,addCommand:R,addEditorAction:K,addKeybindingRule:G,addKeybindingRules:Z,createModel:J,setModelLanguage:X,setModelMarkers:H,getModelMarkers:V,removeAllMarkers:B,onDidChangeMarkers:Y,getModels:ae,getModel:ie,onDidCreateModel:ce,onWillDisposeModel:de,onDidChangeModelLanguage:he,createWebWorker:ue,colorizeElement:te,colorize:q,colorizeModelLine:z,tokenize:$,defineTheme:re,setTheme:oe,remeasureFonts:ge,registerCommand:ve,registerLinkOpener:Se,registerEditorOpener:Le,AccessibilitySupport:r.AccessibilitySupport,ContentWidgetPositionPreference:r.ContentWidgetPositionPreference,CursorChangeReason:r.CursorChangeReason,DefaultEndOfLine:r.DefaultEndOfLine,EditorAutoIndentStrategy:r.EditorAutoIndentStrategy,EditorOption:r.EditorOption,EndOfLinePreference:r.EndOfLinePreference,EndOfLineSequence:r.EndOfLineSequence,MinimapPosition:r.MinimapPosition,MouseTargetType:r.MouseTargetType,OverlayWidgetPositionPreference:r.OverlayWidgetPositionPreference,OverviewRulerLane:r.OverviewRulerLane,GlyphMarginLane:r.GlyphMarginLane,RenderLineNumbersType:r.RenderLineNumbersType,RenderMinimap:r.RenderMinimap,ScrollbarVisibility:r.ScrollbarVisibility,ScrollType:r.ScrollType,TextEditorCursorBlinkingStyle:r.TextEditorCursorBlinkingStyle,TextEditorCursorStyle:r.TextEditorCursorStyle,TrackedRangeStickiness:r.TrackedRangeStickiness,WrappingIndent:r.WrappingIndent,InjectedTextCursorStops:r.InjectedTextCursorStops,PositionAffinity:r.PositionAffinity,ConfigurationChangedEvent:_.ConfigurationChangedEvent,BareFontInfo:g.BareFontInfo,FontInfo:g.FontInfo,TextModelResolvedOptions:s.TextModelResolvedOptions,FindMatch:s.FindMatch,ApplyUpdateResult:_.ApplyUpdateResult,LineRange:P.LineRange,LineRangeMapping:M.LineRangeMapping,RangeMapping:M.RangeMapping,EditorZoom:x.EditorZoom,MovedText:M.MovedText,SimpleLineRangeMapping:M.SimpleLineRangeMapping,EditorType:C.EditorType,EditorOptions:_.EditorOptions}}e.createMonacoEditorAPI=De}),define(ne[923],se([1,0,38,5,29,32,78,41,208,259,550,334,133,97,18,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoLanguagesAPI=e.registerInlayHintsProvider=e.registerInlineCompletionsProvider=e.registerDocumentRangeSemanticTokensProvider=e.registerDocumentSemanticTokensProvider=e.registerSelectionRangeProvider=e.registerDeclarationProvider=e.registerFoldingRangeProvider=e.registerColorProvider=e.registerCompletionItemProvider=e.registerLinkProvider=e.registerOnTypeFormattingEditProvider=e.registerDocumentRangeFormattingEditProvider=e.registerDocumentFormattingEditProvider=e.registerCodeActionProvider=e.registerCodeLensProvider=e.registerTypeDefinitionProvider=e.registerImplementationProvider=e.registerDefinitionProvider=e.registerLinkedEditingRangeProvider=e.registerDocumentHighlightProvider=e.registerDocumentSymbolProvider=e.registerHoverProvider=e.registerSignatureHelpProvider=e.registerRenameProvider=e.registerReferenceProvider=e.setMonarchTokensProvider=e.setTokensProvider=e.registerTokensProviderFactory=e.setColorMap=e.TokenizationSupportAdapter=e.EncodedTokenizationSupportAdapter=e.setLanguageConfiguration=e.onLanguageEncountered=e.onLanguage=e.getEncodedLanguageId=e.getLanguages=e.register=void 0;function u(q){S.ModesRegistry.registerLanguage(q)}e.register=u;function h(){let q=[];return q=q.concat(S.ModesRegistry.getLanguages()),q}e.getLanguages=h;function r(q){return g.StandaloneServices.get(f.ILanguageService).languageIdCodec.encodeLanguageId(q)}e.getEncodedLanguageId=r;function c(q,z){return g.StandaloneServices.withServices(()=>{const $=g.StandaloneServices.get(f.ILanguageService).onDidRequestRichLanguageFeatures(re=>{re===q&&($.dispose(),z())});return $})}e.onLanguage=c;function o(q,z){return g.StandaloneServices.withServices(()=>{const $=g.StandaloneServices.get(f.ILanguageService).onDidRequestBasicLanguageFeatures(re=>{re===q&&($.dispose(),z())});return $})}e.onLanguageEncountered=o;function d(q,z){if(!g.StandaloneServices.get(f.ILanguageService).isRegisteredLanguageId(q))throw new Error(`Cannot set configuration for unknown language ${q}`);return g.StandaloneServices.get(D.ILanguageConfigurationService).register(q,z,100)}e.setLanguageConfiguration=d;class l{constructor(z,ee){this._languageId=z,this._actual=ee}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(z,ee,$){if(typeof this._actual.tokenize=="function")return p.adaptTokenize(this._languageId,this._actual,z,$);throw new Error("Not supported!")}tokenizeEncoded(z,ee,$){const re=this._actual.tokenizeEncoded(z,$);return new y.EncodedTokenizationResult(re.tokens,re.endState)}}e.EncodedTokenizationSupportAdapter=l;class p{constructor(z,ee,$,re){this._languageId=z,this._actual=ee,this._languageService=$,this._standaloneThemeService=re}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(z,ee){const $=[];let re=0;for(let oe=0,ge=z.length;oe0&&oe[ge-1]===Ee)continue;let Me=ye.startIndex;Le===0?Me=0:Mewe(this,void 0,void 0,function*(){const $=yield Promise.resolve(z.create());return $?m($)?E(q,$):new s.MonarchTokenizer(g.StandaloneServices.get(f.ILanguageService),g.StandaloneServices.get(i.IStandaloneThemeService),q,(0,C.compile)(q,$),g.StandaloneServices.get(a.IConfigurationService)):null}));return y.TokenizationRegistry.registerFactory(q,ee)}e.registerTokensProviderFactory=I;function M(q,z){if(!g.StandaloneServices.get(f.ILanguageService).isRegisteredLanguageId(q))throw new Error(`Cannot set tokens provider for unknown language ${q}`);return b(z)?I(q,{create:()=>z}):y.TokenizationRegistry.register(q,E(q,z))}e.setTokensProvider=M;function P(q,z){const ee=$=>new s.MonarchTokenizer(g.StandaloneServices.get(f.ILanguageService),g.StandaloneServices.get(i.IStandaloneThemeService),q,(0,C.compile)(q,$),g.StandaloneServices.get(a.IConfigurationService));return b(z)?I(q,{create:()=>z}):y.TokenizationRegistry.register(q,ee(z))}e.setMonarchTokensProvider=P;function x(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).referenceProvider.register(q,z)}e.registerReferenceProvider=x;function T(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).renameProvider.register(q,z)}e.registerRenameProvider=T;function A(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).signatureHelpProvider.register(q,z)}e.registerSignatureHelpProvider=A;function N(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).hoverProvider.register(q,{provideHover:($,re,oe)=>{const ge=$.getWordAtPosition(re);return Promise.resolve(z.provideHover($,re,oe)).then(ve=>{if(ve)return!ve.range&&ge&&(ve.range=new k.Range(re.lineNumber,ge.startColumn,re.lineNumber,ge.endColumn)),ve.range||(ve.range=new k.Range(re.lineNumber,re.column,re.lineNumber,re.column)),ve})}})}e.registerHoverProvider=N;function F(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentSymbolProvider.register(q,z)}e.registerDocumentSymbolProvider=F;function O(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentHighlightProvider.register(q,z)}e.registerDocumentHighlightProvider=O;function W(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).linkedEditingRangeProvider.register(q,z)}e.registerLinkedEditingRangeProvider=W;function U(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).definitionProvider.register(q,z)}e.registerDefinitionProvider=U;function j(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).implementationProvider.register(q,z)}e.registerImplementationProvider=j;function R(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).typeDefinitionProvider.register(q,z)}e.registerTypeDefinitionProvider=R;function K(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).codeLensProvider.register(q,z)}e.registerCodeLensProvider=K;function G(q,z,ee){return g.StandaloneServices.get(t.ILanguageFeaturesService).codeActionProvider.register(q,{providedCodeActionKinds:ee?.providedCodeActionKinds,documentation:ee?.documentation,provideCodeActions:(re,oe,ge,ve)=>{const Le=g.StandaloneServices.get(n.IMarkerService).read({resource:re.uri}).filter(De=>k.Range.areIntersectingOrTouching(De,oe));return z.provideCodeActions(re,oe,{markers:Le,only:ge.only,trigger:ge.trigger},ve)},resolveCodeAction:z.resolveCodeAction})}e.registerCodeActionProvider=G;function Z(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentFormattingEditProvider.register(q,z)}e.registerDocumentFormattingEditProvider=Z;function J(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeFormattingEditProvider.register(q,z)}e.registerDocumentRangeFormattingEditProvider=J;function X(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).onTypeFormattingEditProvider.register(q,z)}e.registerOnTypeFormattingEditProvider=X;function H(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).linkProvider.register(q,z)}e.registerLinkProvider=H;function B(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).completionProvider.register(q,z)}e.registerCompletionItemProvider=B;function V(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).colorProvider.register(q,z)}e.registerColorProvider=V;function Y(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).foldingRangeProvider.register(q,z)}e.registerFoldingRangeProvider=Y;function ie(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).declarationProvider.register(q,z)}e.registerDeclarationProvider=ie;function ae(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).selectionRangeProvider.register(q,z)}e.registerSelectionRangeProvider=ae;function ce(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentSemanticTokensProvider.register(q,z)}e.registerDocumentSemanticTokensProvider=ce;function de(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeSemanticTokensProvider.register(q,z)}e.registerDocumentRangeSemanticTokensProvider=de;function he(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).inlineCompletionsProvider.register(q,z)}e.registerInlineCompletionsProvider=he;function ue(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).inlayHintsProvider.register(q,z)}e.registerInlayHintsProvider=ue;function te(){return{register:u,getLanguages:h,onLanguage:c,onLanguageEncountered:o,getEncodedLanguageId:r,setLanguageConfiguration:d,setColorMap:w,registerTokensProviderFactory:I,setTokensProvider:M,setMonarchTokensProvider:P,registerReferenceProvider:x,registerRenameProvider:T,registerCompletionItemProvider:B,registerSignatureHelpProvider:A,registerHoverProvider:N,registerDocumentSymbolProvider:F,registerDocumentHighlightProvider:O,registerLinkedEditingRangeProvider:W,registerDefinitionProvider:U,registerImplementationProvider:j,registerTypeDefinitionProvider:R,registerCodeLensProvider:K,registerCodeActionProvider:G,registerDocumentFormattingEditProvider:Z,registerDocumentRangeFormattingEditProvider:J,registerOnTypeFormattingEditProvider:X,registerLinkProvider:H,registerColorProvider:V,registerFoldingRangeProvider:Y,registerDeclarationProvider:ie,registerSelectionRangeProvider:ae,registerDocumentSemanticTokensProvider:ce,registerDocumentRangeSemanticTokensProvider:de,registerInlineCompletionsProvider:he,registerInlayHintsProvider:ue,DocumentHighlightKind:_.DocumentHighlightKind,CompletionItemKind:_.CompletionItemKind,CompletionItemTag:_.CompletionItemTag,CompletionItemInsertTextRule:_.CompletionItemInsertTextRule,SymbolKind:_.SymbolKind,SymbolTag:_.SymbolTag,IndentAction:_.IndentAction,CompletionTriggerKind:_.CompletionTriggerKind,SignatureHelpTriggerKind:_.SignatureHelpTriggerKind,InlayHintKind:_.InlayHintKind,InlineCompletionTriggerKind:_.InlineCompletionTriggerKind,CodeActionTriggerType:_.CodeActionTriggerType,FoldingRangeKind:y.FoldingRangeKind,SelectedSuggestionInfo:y.SelectedSuggestionInfo}}e.createMonacoLanguagesAPI=te}),define(ne[924],se([1,0,36,327,922,923,351]),function(Q,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.languages=e.editor=e.Token=e.Uri=e.MarkerTag=e.MarkerSeverity=e.SelectionDirection=e.Selection=e.Range=e.Position=e.KeyMod=e.KeyCode=e.Emitter=e.CancellationTokenSource=void 0,L.EditorOptions.wrappingIndent.defaultValue=0,L.EditorOptions.glyphMargin.defaultValue=!1,L.EditorOptions.autoIndent.defaultValue=3,L.EditorOptions.overviewRulerLanes.defaultValue=2,S.FormattingConflicts.setFormatterSelector((g,C,s)=>Promise.resolve(g[0]));const f=(0,k.createMonacoBaseAPI)();f.editor=(0,y.createMonacoEditorAPI)(),f.languages=(0,D.createMonacoLanguagesAPI)(),e.CancellationTokenSource=f.CancellationTokenSource,e.Emitter=f.Emitter,e.KeyCode=f.KeyCode,e.KeyMod=f.KeyMod,e.Position=f.Position,e.Range=f.Range,e.Selection=f.Selection,e.SelectionDirection=f.SelectionDirection,e.MarkerSeverity=f.MarkerSeverity,e.MarkerTag=f.MarkerTag,e.Uri=f.Uri,e.Token=f.Token,e.editor=f.editor,e.languages=f.languages;const _=globalThis.MonacoEnvironment;(_?.globalAPI||typeof define=="function"&&define.amd)&&(globalThis.monaco=f),typeof globalThis.require<"u"&&typeof globalThis.require.config=="function"&&globalThis.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]})});var Ci=this&&this.__createBinding||(Object.create?function(Q,e,L,k){k===void 0&&(k=L);var y=Object.getOwnPropertyDescriptor(e,L);(!y||("get"in y?!e.__esModule:y.writable||y.configurable))&&(y={enumerable:!0,get:function(){return e[L]}}),Object.defineProperty(Q,k,y)}:function(Q,e,L,k){k===void 0&&(k=L),Q[k]=e[L]}),bi=this&&this.__exportStar||function(Q,e){for(var L in Q)L!=="default"&&!Object.prototype.hasOwnProperty.call(e,L)&&Ci(e,Q,L)};define(ne[926],se([1,0,924,920,815,816,787,862,863,820,907,865]),function(Q,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),bi(L,e)})}).call(this); - - -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/basic-languages/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ -var moduleExports=(()=>{var y=Object.create;var g=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var a=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(r,s)=>(typeof require!="undefined"?require:r)[s]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var D=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var m=(e,r,s,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of q(r))!M.call(e,o)&&o!==s&&g(e,o,{get:()=>r[o],enumerable:!(n=x(r,o))||n.enumerable});return e},p=(e,r,s)=>(m(e,r,"default"),s&&m(s,r,"default")),c=(e,r,s)=>(s=e!=null?y(A(e)):{},m(r||!e||!e.__esModule?g(s,"default",{value:e,enumerable:!0}):s,e));var v=D((w,d)=>{var b=c(a("vs/editor/editor.api"));d.exports=b});var t={};p(t,c(v()));var f={},u={},l=class{static getOrCreate(r){return u[r]||(u[r]=new l(r)),u[r]}_languageId;_loadingTriggered;_lazyLoadPromise;_lazyLoadPromiseResolve;_lazyLoadPromiseReject;constructor(r){this._languageId=r,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((s,n)=>{this._lazyLoadPromiseResolve=s,this._lazyLoadPromiseReject=n})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,f[this._languageId].loader().then(r=>this._lazyLoadPromiseResolve(r),r=>this._lazyLoadPromiseReject(r))),this._lazyLoadPromise}};function i(e){let r=e.id;f[r]=e,t.languages.register(e);let s=l.getOrCreate(r);t.languages.registerTokensProviderFactory(r,{create:async()=>(await s.load()).language}),t.languages.onLanguageEncountered(r,async()=>{let n=await s.load();t.languages.setLanguageConfiguration(r,n.conf)})}i({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/abap/abap"],e,r)})});i({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/apex/apex"],e,r)})});i({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/azcli/azcli"],e,r)})});i({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/bat/bat"],e,r)})});i({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/bicep/bicep"],e,r)})});i({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cameligo/cameligo"],e,r)})});i({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/clojure/clojure"],e,r)})});i({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/coffee/coffee"],e,r)})});i({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cpp/cpp"],e,r)})});i({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cpp/cpp"],e,r)})});i({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/csharp/csharp"],e,r)})});i({id:"csp",extensions:[],aliases:["CSP","csp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/csp/csp"],e,r)})});i({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/css/css"],e,r)})});i({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cypher/cypher"],e,r)})});i({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/dart/dart"],e,r)})});i({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/dockerfile/dockerfile"],e,r)})});i({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ecl/ecl"],e,r)})});i({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/elixir/elixir"],e,r)})});i({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/flow9/flow9"],e,r)})});i({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/fsharp/fsharp"],e,r)})});i({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagBracketInterpolationDollar)});i({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationBracket)});i({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagBracketInterpolationBracket)});i({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAutoInterpolationDollar)});i({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAutoInterpolationBracket)});i({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/go/go"],e,r)})});i({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/graphql/graphql"],e,r)})});i({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/handlebars/handlebars"],e,r)})});i({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/hcl/hcl"],e,r)})});i({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/html/html"],e,r)})});i({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ini/ini"],e,r)})});i({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/java/java"],e,r)})});i({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/javascript/javascript"],e,r)})});i({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/julia/julia"],e,r)})});i({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/kotlin/kotlin"],e,r)})});i({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/less/less"],e,r)})});i({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/lexon/lexon"],e,r)})});i({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/lua/lua"],e,r)})});i({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/liquid/liquid"],e,r)})});i({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/m3/m3"],e,r)})});i({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/markdown/markdown"],e,r)})});i({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mdx/mdx"],e,r)})});i({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mips/mips"],e,r)})});i({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/msdax/msdax"],e,r)})});i({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mysql/mysql"],e,r)})});i({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/objective-c/objective-c"],e,r)})});i({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pascal/pascal"],e,r)})});i({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pascaligo/pascaligo"],e,r)})});i({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/perl/perl"],e,r)})});i({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pgsql/pgsql"],e,r)})});i({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/php/php"],e,r)})});i({id:"pla",extensions:[".pla"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pla/pla"],e,r)})});i({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/postiats/postiats"],e,r)})});i({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/powerquery/powerquery"],e,r)})});i({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/powershell/powershell"],e,r)})});i({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/protobuf/protobuf"],e,r)})});i({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pug/pug"],e,r)})});i({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/python/python"],e,r)})});i({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/qsharp/qsharp"],e,r)})});i({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/r/r"],e,r)})});i({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/razor/razor"],e,r)})});i({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/redis/redis"],e,r)})});i({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/redshift/redshift"],e,r)})});i({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/restructuredtext/restructuredtext"],e,r)})});i({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ruby/ruby"],e,r)})});i({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/rust/rust"],e,r)})});i({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sb/sb"],e,r)})});i({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/scala/scala"],e,r)})});i({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/scheme/scheme"],e,r)})});i({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/scss/scss"],e,r)})});i({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/shell/shell"],e,r)})});i({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/solidity/solidity"],e,r)})});i({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sophia/sophia"],e,r)})});i({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sparql/sparql"],e,r)})});i({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sql/sql"],e,r)})});i({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/st/st"],e,r)})});i({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/swift/swift"],e,r)})});i({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/systemverilog/systemverilog"],e,r)})});i({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/systemverilog/systemverilog"],e,r)})});i({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/tcl/tcl"],e,r)})});i({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/twig/twig"],e,r)})});i({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/typescript/typescript"],e,r)})});i({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/vb/vb"],e,r)})});i({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/wgsl/wgsl"],e,r)})});i({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\new Promise((e,r)=>{a(["vs/basic-languages/xml/xml"],e,r)})});i({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/yaml/yaml"],e,r)})});})(); -return moduleExports; -}); - -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/css/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ -var moduleExports=(()=>{var C=Object.create;var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var l=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(n,r)=>(typeof require!="undefined"?require:n)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var I=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),M=(e,n)=>{for(var r in n)g(e,r,{get:n[r],enumerable:!0})},s=(e,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of b(n))!h.call(e,t)&&t!==r&&g(e,t,{get:()=>n[t],enumerable:!(a=S(n,t))||a.enumerable});return e},y=(e,n,r)=>(s(e,n,"default"),r&&s(r,n,"default")),w=(e,n,r)=>(r=e!=null?C(x(e)):{},s(n||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),P=e=>s(g({},"__esModule",{value:!0}),e);var v=I((k,D)=>{var O=w(l("vs/editor/editor.api"));D.exports=O});var R={};M(R,{cssDefaults:()=>p,lessDefaults:()=>f,scssDefaults:()=>c});var o={};y(o,w(v()));var i=class{_onDidChange=new o.Emitter;_options;_modeConfiguration;_languageId;constructor(n,r,a){this._languageId=n,this.setOptions(r),this.setModeConfiguration(a)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(n){this.setOptions(n)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},d={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:"collapse",maxPreserveNewLines:void 0,preserveNewLines:!0}},u={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},p=new i("css",d,u),c=new i("scss",d,u),f=new i("less",d,u);o.languages.css={cssDefaults:p,lessDefaults:f,scssDefaults:c};function m(){return new Promise((e,n)=>{l(["vs/language/css/cssMode"],e,n)})}o.languages.onLanguage("less",()=>{m().then(e=>e.setupMode(f))});o.languages.onLanguage("scss",()=>{m().then(e=>e.setupMode(c))});o.languages.onLanguage("css",()=>{m().then(e=>e.setupMode(p))});return P(R);})(); -return moduleExports; -}); - -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/html/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ -var moduleExports=(()=>{var w=Object.create;var l=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var f=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(n,t)=>(typeof require!="undefined"?require:n)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var k=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),T=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of H(n))!_.call(e,o)&&o!==t&&l(e,o,{get:()=>n[o],enumerable:!(r=R(n,o))||r.enumerable});return e},b=(e,n,t)=>(d(e,n,"default"),t&&d(t,n,"default")),v=(e,n,t)=>(t=e!=null?w(O(e)):{},d(n||!e||!e.__esModule?l(t,"default",{value:e,enumerable:!0}):t,e)),A=e=>d(l({},"__esModule",{value:!0}),e);var C=k((z,h)=>{var E=v(f("vs/editor/editor.api"));h.exports=E});var V={};T(V,{handlebarDefaults:()=>M,handlebarLanguageService:()=>m,htmlDefaults:()=>x,htmlLanguageService:()=>c,razorDefaults:()=>I,razorLanguageService:()=>y,registerHTMLLanguageService:()=>s});var a={};b(a,v(C()));var p=class{_onDidChange=new a.Emitter;_options;_modeConfiguration;_languageId;constructor(n,t,r){this._languageId=n,this.setOptions(t),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},F={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},u={format:F,suggest:{},data:{useDefaultDataProvider:!0}};function g(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===i,documentFormattingEdits:e===i,documentRangeFormattingEdits:e===i}}var i="html",D="handlebars",L="razor",c=s(i,u,g(i)),x=c.defaults,m=s(D,u,g(D)),M=m.defaults,y=s(L,u,g(L)),I=y.defaults;a.languages.html={htmlDefaults:x,razorDefaults:I,handlebarDefaults:M,htmlLanguageService:c,handlebarLanguageService:m,razorLanguageService:y,registerHTMLLanguageService:s};function P(){return new Promise((e,n)=>{f(["vs/language/html/htmlMode"],e,n)})}function s(e,n=u,t=g(e)){let r=new p(e,n,t),o,S=a.languages.onLanguage(e,async()=>{o=(await P()).setupMode(r)});return{defaults:r,dispose(){S.dispose(),o?.dispose(),o=void 0}}}return A(V);})(); -return moduleExports; -}); - -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/json/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ -var moduleExports=(()=>{var p=Object.create;var r=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var g=(o=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(o,{get:(e,n)=>(typeof require!="undefined"?require:e)[n]}):o)(function(o){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+o+'" is not supported')});var D=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),b=(o,e)=>{for(var n in e)r(o,n,{get:e[n],enumerable:!0})},s=(o,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of h(e))!C.call(o,i)&&i!==n&&r(o,i,{get:()=>e[i],enumerable:!(a=y(e,i))||a.enumerable});return o},u=(o,e,n)=>(s(o,e,"default"),n&&s(n,e,"default")),c=(o,e,n)=>(n=o!=null?p(v(o)):{},s(e||!o||!o.__esModule?r(n,"default",{value:o,enumerable:!0}):n,o)),O=o=>s(r({},"__esModule",{value:!0}),o);var f=D((w,m)=>{var M=c(g("vs/editor/editor.api"));m.exports=M});var R={};b(R,{jsonDefaults:()=>d});var t={};u(t,c(f()));var l=class{_onDidChange=new t.Emitter;_diagnosticsOptions;_modeConfiguration;_languageId;constructor(e,n,a){this._languageId=e,this.setDiagnosticsOptions(n),this.setModeConfiguration(a)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},j={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},S={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},d=new l("json",j,S);t.languages.json={jsonDefaults:d};function _(){return new Promise((o,e)=>{g(["vs/language/json/jsonMode"],o,e)})}t.languages.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]});t.languages.onLanguage("json",()=>{_().then(o=>o.setupMode(d))});return O(R);})(); -return moduleExports; -}); - -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/typescript/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ -var moduleExports=(()=>{var N=Object.create;var d=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var c=(n=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(n,{get:(e,t)=>(typeof require!="undefined"?require:e)[t]}):n)(function(n){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+n+'" is not supported')});var w=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),A=(n,e)=>{for(var t in e)d(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of M(e))!F.call(n,r)&&r!==t&&d(n,r,{get:()=>e[r],enumerable:!(i=H(e,r))||i.enumerable});return n},D=(n,e,t)=>(g(n,e,"default"),t&&g(t,e,"default")),C=(n,e,t)=>(t=n!=null?N(R(n)):{},g(e||!n||!n.__esModule?d(t,"default",{value:n,enumerable:!0}):t,n)),W=n=>g(d({},"__esModule",{value:!0}),n);var _=w((B,E)=>{var V=C(c("vs/editor/editor.api"));E.exports=V});var T={};A(T,{JsxEmit:()=>f,ModuleKind:()=>b,ModuleResolutionKind:()=>O,NewLineKind:()=>y,ScriptTarget:()=>h,getJavaScriptWorker:()=>k,getTypeScriptWorker:()=>P,javascriptDefaults:()=>v,typescriptDefaults:()=>x,typescriptVersion:()=>I});var L="5.0.2";var l={};D(l,C(_()));var b=(s=>(s[s.None=0]="None",s[s.CommonJS=1]="CommonJS",s[s.AMD=2]="AMD",s[s.UMD=3]="UMD",s[s.System=4]="System",s[s.ES2015=5]="ES2015",s[s.ESNext=99]="ESNext",s))(b||{}),f=(a=>(a[a.None=0]="None",a[a.Preserve=1]="Preserve",a[a.React=2]="React",a[a.ReactNative=3]="ReactNative",a[a.ReactJSX=4]="ReactJSX",a[a.ReactJSXDev=5]="ReactJSXDev",a))(f||{}),y=(t=>(t[t.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",t[t.LineFeed=1]="LineFeed",t))(y||{}),h=(o=>(o[o.ES3=0]="ES3",o[o.ES5=1]="ES5",o[o.ES2015=2]="ES2015",o[o.ES2016=3]="ES2016",o[o.ES2017=4]="ES2017",o[o.ES2018=5]="ES2018",o[o.ES2019=6]="ES2019",o[o.ES2020=7]="ES2020",o[o.ESNext=99]="ESNext",o[o.JSON=100]="JSON",o[o.Latest=99]="Latest",o))(h||{}),O=(t=>(t[t.Classic=1]="Classic",t[t.NodeJs=2]="NodeJs",t))(O||{}),m=class{_onDidChange=new l.Emitter;_onDidExtraLibsChange=new l.Emitter;_extraLibs;_removedExtraLibs;_eagerModelSync;_compilerOptions;_diagnosticsOptions;_workerOptions;_onDidExtraLibsChangeTimeout;_inlayHintsOptions;_modeConfiguration;constructor(e,t,i,r,p){this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(i),this.setInlayHintsOptions(r),this.setModeConfiguration(p),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let i;if(typeof t>"u"?i=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:i=t,this._extraLibs[i]&&this._extraLibs[i].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[i]&&(r=this._removedExtraLibs[i]+1),this._extraLibs[i]&&(r=this._extraLibs[i].version+1),this._extraLibs[i]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let p=this._extraLibs[i];!p||p.version===r&&(delete this._extraLibs[i],this._removedExtraLibs[i]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let i=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,r=t.content,p=1;this._removedExtraLibs[i]&&(p=this._removedExtraLibs[i]+1),this._extraLibs[i]={content:r,version:p}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},I=L,S={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},x=new m({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),v=new m({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),P=()=>u().then(n=>n.getTypeScriptWorker()),k=()=>u().then(n=>n.getJavaScriptWorker());l.languages.typescript={ModuleKind:b,JsxEmit:f,NewLineKind:y,ScriptTarget:h,ModuleResolutionKind:O,typescriptVersion:I,typescriptDefaults:x,javascriptDefaults:v,getTypeScriptWorker:P,getJavaScriptWorker:k};function u(){return new Promise((n,e)=>{c(["vs/language/typescript/tsMode"],n,e)})}l.languages.onLanguage("typescript",()=>u().then(n=>n.setupTypeScript(x)));l.languages.onLanguage("javascript",()=>u().then(n=>n.setupJavaScript(v)));return W(T);})(); -return moduleExports; -}); - -define("vs/editor/editor.main", ["vs/editor/edcore.main","vs/basic-languages/monaco.contribution","vs/language/css/monaco.contribution","vs/language/html/monaco.contribution","vs/language/json/monaco.contribution","vs/language/typescript/monaco.contribution"], function(api) { return api; }); \ No newline at end of file diff --git a/static/monaco-editor/min/vs/editor/editor.main.js.gz b/static/monaco-editor/min/vs/editor/editor.main.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..38fd1d8dac1092dbdc770aeb5a2040e8f8a3c4cc GIT binary patch literal 924752 zcmV(hK={8OiwFpWoxmLc17&1sbZ>GlZDDC{E^2cC%)NVG<2bS~{QvVQLe4BFZcMn$ zWoJUWdFTK`pN578de|9;!#atQxN~vFb_fCT-QTLx)sE~W^v>^jXSazZRq0wPRh3H8 z)|<7>*Z=o_N^eT_a5RmAPB$r4noj8~XhvZiwiAetMq%V9K{%|I4*LBP0mY?=#VmSY zttuk_#-bPiYNhS!55H8mE8qY8eY@5EzTMnrJ8Z|_-u+?wr=J@?x3=4@AKKrynhl@* z^M}^<4-O(4*B!r>moC@|XbfH+0LJtx9`5Y+}+A7mf0h8 zND`Oba>V``2N8p>hj^<2ZP6SoXk%36CE2{iGd6gRNi~C;l)AXapr-Dl)h1Q5Xjr zAXQKlg^_4eGcIhCi54eOFzm$h34Rp$(>PP}W;jgPW71<&T`L)5$s(Q(o2jPAuHwO? z#{|d;T4O0*7HR7Vq;jCdc&iU1G4?y`nEA;VsDD12rax@5e&4tESu!0-q;v^9ROfB` z$flN@$5D{!9GE2ooizroctvwZGlpr_)KxROc`)#Ytylx|u%&%rD`=_?G{>nObjDGN z!cvj8I?3+L=H^o!Rc%CYzA|A0N5*gTEz=MC15>hj1K~7+VGC$bLh6{J{%wZ+FuG)& z00?+m*ckOyH`|{^O?N5eY^7R7cgWq2D6L?G2LROHLIOI&FFO%njYQ=6$mmwp=t$Jl zJ}*-Ir|rkdVL12%rCH{pIcS!OF4u*YQpdqoH++B(`g;fz-SHE44CRHk-W~WOOC~tx zp&zx5G`Gwa;zxl`f0kjUtbnr&SuzQu-h2WukZ>F|=SXxICP6!BrV23QEcKlL0f&=9 z-evTxXI{!)GQj9I+u&`S4J7jsyJ+m_hFe*vN=B<^-FzA+ACgE6C#KZxTuLB8K2o(CZ$6BW_?X6=imsyH$FFu7CAPIVZ_Tg_fD9E}r+NHHHUrig>% zx@F_tq1R)^(qoEXH}e!t;I;tQ9rBc#S$7DYT3 z5!9D;1bLxbt)SiJtH{|`+Psp2$6;u(^C<;43nMy2?;e}Ge7v0$fvYTaI z`cK(T9D?-R5OgY=OQCBmS*D~~Kj~&l23{4xU>U3{vM;nrG>#M2y3UhXk({`0a^{al zN_?^jC5^~$_E>V^2T^=21r%I5(kT%GM$d+w#L7pLum@`_tpwNfX{BFSn_GTA9I`7@ z(NL`)_)!lgua*udxUw{xrrXS@D*cSL{c%6JN~V3=*u+4mkz(%_O2tL-G`Bkx2u^7` ze?X3R>Nj8j)K_eW>_cnl&yB&KYzhQ*>icofZ?UM5fAHv=5c@aVz5QTB(wE9wM%Wp? zh1|1JfIkh#i2~t4o2Z=Oh&cQpH^FeC*}*6zn_!)WJb0DBGLcaaq!m zGkkiGc$2?EcYRnDfZpnTkODyMvG+ZfB|=a%#z>rY5MkGd81zSz)pw|3}lS6a2TZRBBrVa>mB`Bs7T%vD0~TwZJ&vs z0^;%;z}KPIuN9Hy@tfhe-zNqYJlSViCrrYt>7Wtn)hA*=i@@AiY}0yL0nFP@tVfN4 z%h<#OuYgs?ZglRGWU89bn6nA;8n?pc7*$|iYb_E1heHNuvvqRB0dNFVbhHdbVVnv$ zbC_LM=E1|zPH94J)b`jd2Fqa!mW8^CGDloB7A=7B2$mq(U=?9mNn5|7r7F)VH^(Ac ztTFC<@|P6gkRd#<);w%>n<+I<;m>@M+zdbkcRqC-3@!TmcpO;DZuyCS4Hbyn*2xJI zL6#*yOsy(MF(T49O3wnbAZ4lL5h;261r0pzh<;?xq z%I-6}1Xm1=Dc1SZ4*Mi&Dsw*%lMU0p)CNPGk;udQEUmwEx?!AL&#yp>@C-XumLRm0 z%2nJ<*k*lPMyazfNVJclj@sxt;?nQ+h zM9en~pE=TR+zr}^P4?BfMp8D;vUaiz=$?qJ5}(~LCHwmXW06RMW-#*Swgj@eZW4xl zWyw@f<6$ejWUWx~5fLt8(}uxQY-{n!TNU*k&xwHfe71gPf=1oBs>992`V zPP=xp&l-v0%dj@2{R4&;PD`smH0AUDIxV#t#gL`G&iSA5&4JU~{aVllb@Bpc2{Q>x z#TB9ET6hGwP5jr(I>;n*TLAVw3{aeoL7d26Hekp=)X23>6w9o+Ms-5#XWVK=zpE9gFlXeiV28em|`VEB!opWc^E|dVAp( zJGdP%VsY?<(z5?h=4@Iy z&@mfeNlm_6gbKs_CY8`Jqi}Q%B1)W~o)o5(!4+p*Hf7GID{E}>BhcJnIXD4zNoO;P z!Uy1NWDG`e6YVIOo@B#^APR@58*3A#ipl_gjiHiF^odfcJVwW;+QM@cfxBCmFZBMS$z=1P3v}! z4H)@>37nM=sn8G26gSs#3syW5Hq@5H3bW*b(_K_FTb3vOn25SSVCD$OQ8Ia8)B;P* zypXRy3yLhX2j>*IKqW3{+J$r)NH^~yK+tSXJVfOUbE* zA@3PmL~`$55T|XeXAw>*e`vFuHGSYlHanFxK^8iZDiay9pJ;6H-(7Z-G;6kybB>!Z zQ>x9>__k40f@M-tR5{eS9m^y22EtTdOmpx`R3aE<$h&-74RD9O(fJK zlve*Uits4cVPJI|ae<`GGaE&$9Xwu*2St6CG5cz_U2Bd3Yceby>-L`ZDs|j@_fLSI%t@{lq$5w4D_4L!Br-v~S8Q!0|A^MOyXMNzm!`@eoo`Ydd5cxL(v|;a7&t z0HoS*9G?L}2HMTc=Ivx*W!$_lD6}k4J+^Rh#?T+I(w+H3kYw#EG$NvKuiTIOVY64~ zk#xmHt@8Ot>pJ35SHaz*E5^Z@X=c*WAvL>3dW?@hUniy_0ZLN~9W&q`+JWV-Wh*S}F^6;G(CSE>@;i+}?T}$6;5NI>RE?}F3ffcs zWq}fe!dlm~zhds<%x@R!a|XtD9`JaWy!Tt=6)QjOpk2jyT73W7h$t{DX?u~}%fFH_ zIS8YEz-zC*mNxfXlRrVuw%MG#nCnrPZ@rrz)(PqMTXBHYYC3(|?eL7xfUDq%os;xj z;6;K%2Qr4*o3`5m_?!$2R)fMtO~);(U1g3r%=v5dpwDdsyTac30;5NtrFIl}#0pDi2Uk8bVYRj8ls&F!i5Nkj+X(5U@)ztc^QZ&O|#wc<+@72ESu{t}FWiwT8quLIw zw2a;DR*ow{Hoj#$q!;uS+s6|$7rV6 zuD@!ABi1_Mi3L=gQ_(Xv2e%x;qc~00= zf+eOd>BE9~MTR{D+`Jo%cD%_qvdeX-`QT;TED^=U;NL#D2ou zX2f!wP)oea!LOn|>2bxi;F=Av2z%3Vc^_~xo9Md$%kGqwot0UCrq}I{>jhRvZ}$WHSKmVLER6b^zsUnJ@uc^-K_yV&q_PB}!jKeP&b+fRc=q~rg$A=+oLswE4o1$wm>lS|-xFjr?yh-2CCGTu5>#Pdk?9!J?&;_o6=1mv&k%*gZ}iFSBDQlNe0`AZuT8+9npeq>a?K#XD6vQQjufSXarN~>;jxujZ;Ie>J=80BCtvUL?A zXN*WfCo``z$w6Gk<=>7f{Nrp!)P_GC&O3vzoXvbvQAVp(fe?~$FV;~uM9cO; zaN)PEy5Z!bxbt-`V%dC#@dzDY_@;O&v}6u?kHAR%oY^>7n2V0uOy)~}-4$Y4WN~w< z$zbe&@)A3w&@9CpNqO5~=&OR)J;8t`-Am@@`B@6kLC^uBVX2#oGmzS9h&$N8NEegg(>OTL>0nUPSD@uS~J8DKB+X^5WfMeh;ef%?zUt zuvo9M!Nr}%F2XS9x-W4<0ZjJ6b>yShZRbYmId&)4%-sfK5X;8HmU7B0L^5u)zYfpo zPF^dZ>CbPYhoybwU+)=j-hjk!x+Cer9}I9u4Ip!F+$_$u$v^OPLd&pOShB!zZ%&tT z%(tI!FSv5Wb_-a>!_4Lz5*Jm%xM~o%RS{%nbnznCtMtYAR(RaHHmtnGc@|`6IaaG~ zyhFeLC2@q4_BiJj94p4i5c#io^pdzTN*?^JFMYSa&LbQipNIQ5eI!4XW0f@B@@Vf7O7{fXK*D=F;lZ#*zTps&*SBd5O z%0`War$1o1K^<8&GapbLM6uinl=d7&RsV`lrV|>x;`<=p8{PdM8Rl$+wRD42i%wB5 zI%%>L4hK!?h)ZEy0Z4xBVdBxDrR8hH;q&r-^}faHb{M|Z*#7M%^Hprt-)gKbG&SR? zBIC<8f|)x)^A1L3z+(Qr08(v+pn`#%Jns;g_V}hPpHqLBx_~eb*mBHl5yCJeX%dm% zN6hcp#R&U`g>tYX=q^3~a%DOhqo7>2qho zO1J3PS;~+c`JIDd>o5vOg(uZaqprB4_W(VKRztbKLqU<<2PkUnKSvBJCbv-a?jc?51%^8wGd6rhQ%f2 zc;Vzg=XllRKriK0lY_g!!6XOE>fVtDYrjs{giam%v2?vuWKq&R<92ioRGezb!hZRd z1+eH1u231@m$;+qw?N)9pS1^DI|_{jxShdT=ZkLc>W0ZB>xaI@N3cD9dYWFL?Zx8# z*DrXKBIjxgyWd|psb?<#Sl0Dw2`c;qJn~`TRbbsP3Z9@}{r;lEoeBk+7rtb(06}?% zUig{I!0nDxMVC%5m}E;kiLJti=G^Dla7=%4T4I~gRtn|!2IpO3$!9x03VE0hCk##e z(CYj%aw9I7C;5-&EIHw=K^OLy8+gEWobRs*L*E|Qqgb$(Xm(AcRup* z>14P7`*oZYiQ8y=UqL#jKjO)cLfe-(6tmo`jmq#uWF7@gC69co9bwL9{+e^i%e=Xh zKDT+8WFKlJmg3tkmV-KtnO=R$!rY;zkBSL1!i0;HDD`Te6pU(GzM?6t^t zI3CQtE^CL4^Zh?9ve;6{;}Nn!=+(Ictlx-kuf(!Bou{O{|l zl|E?6%`%*-v6}q0UV1jbavSa6SHQ9j(Vv#vvX{+d`P1$z=U8|t!pgZtxK|CF7LR5W z-mmbgJeIA_qD#sP^U3bKHjVSA*&7ke3)PsE5bSq)E=DcdjbG#iTUbWXQ;}8_)s*y& zt5(>|+tbCH6uGu=0chC&7hX3Nr|-nLn!7TkxVpACHmw*-U5z26S?imLR@j9Po_#9= z)Nx(v&?4VUz0_G@1Tsr*vdQNl`LZl(TWcBzZ$Vf zMp`n1IsN3dxfnK$S7dRfbke1ftzO#s*j6v?Wouq&&|jwf`3%f+`6~6mV*FaLNg%?- zD8!ga`A?}IJgyLxR*NsgmT_)aMHL|~cj~xcm3{T`<<+vW-@3bE9uSWa^E&^3D7S^J z6H8j^MO1C&tmB1r{l34bMhkBpSQ2gVgeW{AuoBALesCW4Fu^zWQubT@=w2R@2 zsVYLSxqKLLg{Vuub+;1sZ+PKKBkLWJ#a(oeYl)?-@L}qeP?nonh1V9o8ZmX>;Vbad zR-RX6z%S%1L|^9on;n(k0&*>$_d}6Ln^WeJiZjxtJR^&&E4m%|702iDG8)HYpWGa; zSu_ZScy&^2WM)e)%5e4bc&p`;iC>h(l9w`y42&afe4~dvSm{1s9kf?Gdc$&Sfw0y`PfmjjUs&~}6g%3IhxisD+Z?2pzE?C0-&}Z8s?|nqd-^tG z3j#@UQOUWF=B|#BGsyEOagz?x+QC=705*$1e_OD0Qq#8u7j{bVGrd`8u1)E|=0Q8G z<*rMqhUAGVMYvtoAH4=Id%xyNC^-x7s`r1cgl1fzoW--<8jH?G=9RI_;NY>bBwiKE z*i%~pYwix*WstIO+%1EHoM&a6`73vqLrcHcw+s#q@F>8CSXM*i_YW?Og*V<6bI`mO zu?uH@{*9F!{uS%vvOH5iTxr>~&4MUj8U>c|uE}M+U6b2t?uj~K2GjZ!X(#eWX&1Nb zzHP?4EWWbdN1VnnA3Czb=biyr=6e6M;tx=#TK5;AmWu?4FfC6vte|ACe3j}!pRV#m zciQFL{828{CZ-gMvDoG~GFZWjd|gt$46l$?ifJnqX~&xv1aM)voO?Q8A=(1@p#XC% z4tgytG$nH92;v2_u6rH*K3mObJZQwJ4o=%KvgqPuIJcT;#7um4DD(Ht?fugaRmZ?* zQF|E#y2T!kc~}$H zuskRv*H-h`eIW;ia?pxU@B49Vclw!Q@bN($hs|J#m!=g)k*o0>bP+M-dfOJd%;r3j zR`^cQvPSf)a2(}SHqY{nK6>*<$yQJy?MuWfj6ExBB>AhRX}#6SC$>x$&KoPR^-7)G z%XA8TOHR?ZL?4UEn_|V!s++!i>S*iA?=nlz264ioi1wHC?fMpvtk=0>t>OZ+x&zBM z`ckao=JYY=^`h0h6;^grcZm-3~K-OTmm(tfMo zy3zl7PlM&R^6VFCW{6oa6WqDH!po=UAGS~NbmKX&q7gA*MvR?6pepk>Uu=>xYo&9ip4 zZ}A@bHn*W={Cx^oXMulER^m**7CUE$%YQR=K@Jb%2B~FoSl)GIRblGa1;evaM#W<_ ze_0JJCJW2sRuAMjv?}?~5%W>2_nYalvyhdlV~`y>>%aIZnXazvR`u&FOx~pbKJ@(mpv4<=qc4@UT9f_LPpEwKnu4smOj9d?U+{`X`8qFE$54G z!LvHy&j~%|rM8APRdCnsl1|NBGA?>ZePI^ghQ0b*=LHx`oiwmm6qoi>&EPKa=7h!Q zv&4zHl}$wj$jhIODnulyM&16iGTWoL#oT$(5wgYLW*K?1-hu~_3ytP09TQj;Ik$L= zET;zlitL{T$YnYuBS$Xf3^q5SOPt5f;w-v%U`bY7aQ^!B%)D@jmpVma)gYGI9?$oL z%FiUl`?B|06>{KZj|eV}wt_;nRCnY{y9*YAoNK+7H_zssv=BM)pQ_*QFPe&`JSOd+ z%j2vHe`>vtM%H!|@aSfoO~-3;ssle5mhapl^V;Jfv8u{v=NTA7<-w0i%)7mF+upX@ z^FCKW!0ja6z4qJQUVCH1VYlr&FJQNy;rDJYVxY7SOKi5+!UNZ=0x7@z@-yaKx!rNM z?;KYb;486$p!p&(PSO zlwxmEO~NlxzcSh=R}stE>p{k`TXDR19AoAN@R>|UENqt=Rl2X$^UAU!<@I$DSt-}U zalcg>hDiwp)>3&RhFr@I}`{bc@Fe}1)vLS5EKCoi9OF7y}ShQGjVuJVBEyVj&6x=ohUf;R5O|p17$$8MAbj6 z#;GzR;+^zJXH5Gfj++I+u>u%eorn_VA#}^!k>gIGQXy4p4v<<1eeYJXo!$kp`{iZ1 zp+MNOa|@FK=I4kFTlH?xZ&gBLh^O-%LnJtY0G75P14`rf=f;kklg{|n z4FOPZ>?M#-SaDpSG9+dhtXC3ewl}HztyX^S^NBiZn3sC;fB$z*{ifd!o|soR0=r%a zp$?r5B{whz3M+rg2qBmkLoy8JMa;&n@EYB7xDSjMKmw;VFOiI8xQBD3?TKkF$MbD@ z4D(x!E|!g1SfZ+3Kkim>SLX4&T`7;KR4<9fFnQj2+k1RadtN!%6c@OZ_l)`7bO+8e zR$(kT>p;v@m{HsNW3O3*e^qf`Ze{Dw=gOb04d>6!SGu8*X`i|Bej5SrWf2DjZi zYE{RJWTv8dec)d>9-x=*cf5YBV#E*WRqOK0ixJld!#?we5D6jgAq-ljZT>wR_xsNJ zdZpv>3&ARV$8kF_YHf%dd*wgJ$H(8lFK>)>)o=Z9%z`_pc=@~a@7BxC28TL?c{(;Z zh3*rtc{@-`&iLh}f-&Vcu#SzL{c#N|Va}wc^DJPSRrEeMNGeUyo0~fh)VjP?-fz~L z8}K`$OMgoWdxXV8wxTy953}2tRt8YbhZx0$tuh41j_Z5=#1DXISkmlPB4UGnHS7uY zSK_ID^=l0Cz}ZW>u#lIAY*Hd^uk!Ejp8aY}cJo(qCEIac*OqKaye&;XIO=P;sjqP$3#6B)IPv6ea*V6g2qbxgvk z24xvJlb$8Vs7)$^+a_=)#X@Qg5tGkGYCvm)0yg8U@ky}0K3>pNa(QebBiR%IbQf1&* zkC;}=D_5~g_Bt@#TV4wVsg1rY>A|~)>T|LWV*0JzJNuP;y;e*h!o4?^iv~nEwG0T2 zeg+ETFtT86QN4F1d+%yN?_JIH-WBgXcMSEK?Fnw%rRC`T7&q!oA#>kM09xw1m3#LJ zYjM9nsN4c8qu#o6ADr4lq9>GlkaXAA*E;(Z;(7)RB+*pN$1B0sMwOfl zpzNk%B~(@u4gK(e675a`}-!qd4H0y}UjPK{z) z5aA*TLyxs^K_V#55_KNsW2gXYm7r^2X)PsT32C4ttiiLYyZ`Mlx7Z;%+ zNPdUsXBXorXirPuSGTJ_mR?H0wo7%GRX=`T0;RSTLheyXnE}Em2AE3*B1a6B9^;lg zRp4NR4(cVD?{0OQ(9goBpx^gP7vlybl}?T1mr^H4y5mN*84l3p21?vg)xl@Q8e3GS zt!s6O*iHkC%Tv^ZCwWq`l;^QcMV#C_M5@fMv>iIxv4uhaVv{``!UM;Bpv*5>=jd@{CbBqj z-0Q@Pf(pJSMS`QF)ds-%JTDnCZO&5i zy?3;+;q-2gHh1nc>g|z|y)P5g=#X->XakkA)WWnW%~hgpR08_02l`R(E!*os;qBX= zS#(boeSt-{&4T~Ms4{IXQuX%QUZv-?HJ|Tk5vo@^OWdbqefaD6e-?A?Q0q)mbe($b%AvD2g>nu--T7Anje+@qh~Ct358==3^X=iC zr%WNG&${{_X!Lkapos<*UM;K#Mc%>;y@P^(LpW}I>uIx_%H~tTm29g2XVLgQnQ_l! z0i|P0dbC3KP_U89GLR4t8!hcsNd`B?j}$niLd(4W!J6rsPyw06aN@&)TyFd5o(U@n zq2hW|1{$JqkR8(&7P-F?Z;(`O%Xp`_-)Nv&)Ne-NaEd2M{8lUCo=`rpO8QBHCOygJ z#{r$-^2e)RIlXlABtHmEQ#GgL*&Tiq}hw!N+n=juAXsIig zT5T+<75M$ILmvbbJm6n~#9SCRG2s_>OFLlw7Jr`_q*YyEF1q4JNWkqdUITIa;vKI( z>oD><=p#Itpz&u!f1@7%`D;wx?qWX)e*%7A4f$Wg@6g9y7=|=Z)al_Uk(CN%qr-8+ zD}u43pecOIM&d7j(Fs2Pf`1Xh(B13NxPdf)39&!G=vW=~iRE#axa+q)|75Vl-*JQf4xq(UBGsNA)xcjti%E;@mjm3ilcr2T@(GS2 z{&wjPAEYE8kIN*YKl~2&1fj4i$FzUJy`y20;B1&cAA;g@EGAq0fK{Xk)lcY+P2;nL z7El!uW8&laiG32nRbGiqY|#E&Q`2@*cyyeWww9O>6gErSty6eHAT z@B4fTwYksFnGYoPD8j;lj*Ogb-f=uO=9~&c!v{RQXP}{r*EnXUxbww5R4^_kc?P-5 z8O=|M!>b5Rg@-ysfM|Oqr$U<@_rs7^>=;&p1NHS@ef_GwF6rx6e;mhwKYZUG^SXWz z1K4I~EHb}7aTW`qFdB8C-JK}~&)aRm@7M*NZP1mw8nNcM??>p*M*lm~6>z7~A}-@#v5)PQ(BEdi`WoM}M5 zIJ^ot?+3IDg!G3WEQRUVYVqtwT_8F-KRSpw#~X+y5vn{IFo^#m20oCJZ@@Y1fHPJM zi7&}x2gFgCrOVOZ(gB%egWEGPUe5YLo#o7w%zFK4{x=#<#qqv6+B%amiNE&N|5%1_G ze}WaifbZk5^T~=K99t3UvSyFyLCRcsDFgj7TF_*^O@4m|{%}Srj=#jlrx3xKA=H85 zqcD!SnYm0t8WYPX%4ecFa<4{9VthAQe_Fahq~OL}g8JdK!N(WxwH6Ow;;Y9UL69(m z#EvBim_0V_@*9X0Um<}@x%qXOU}gM)V*2P1lMu@y{Gg2nJ_9U^B(nkMq<9XjgSP|V zcg#hwUNB4vYaCVd7S@+{1+e)M{m>-zANgOdJrPTQwUK_4F0BUxF69M74T95u#3$i6 zp-vQR5eT-)e^JKbU!W@lEzXF6Ek!<;@~FKi>C`DN6!}BYQ*H6fd~7 zl)gEUjghO+(N{U=Nh^cjNzkHk0+vETeB2L-Yup%I1C}dAe-IwSnDX3l28*XpIUht& zypc$Zfgd;dLgmZdbusoTEb8Y!!Prtg5W9^705fDN!kF7;+zr~8RfF-l+XzTiBN1M6 zh+tIK(&l&=Brqi1Ocn>O~3VZ94o;Glpn?g5)tGCOMwUUrW-2I ziKMAE38z>>2es1o3Em+M$^x$Kf0i<;~Op5g7$TEDa}Z56kXR z2sPs#YQ`v%b70`mbfPxq-?&%750F3rmk|7vT$Fg9>K0f&p}#lv0*9Hh{y<9QJc#X4 zOtUWpSv4-SS5=l;%_bjn5f}tUK(Y@WR2{*Cvd?%(&U{pmg!w`P#6A7}ST?k%EW_sn z$@#uy?BhY$OniQYTPUUWkgjN;)@b^Yk^$ZqNQA*ZByFpO8ilhqUxh|KjKZcwG*mg& zdt!aav`NI8bRwb@gdAU#t622F{5}YzW|;1JpyLq~8w`m1NqnqNgq=l<8R?Ra#{msK z@*lp!j2KAlAS5L!#OF5@A_fn>xcm`?;;2N7JCOLx^kR~ts)gp=bd-@l#o@eZ`lEEj z*Dx6B80c0O^|5z#T(&r!BI#JKjS&h_s>`OZb`IqJRXM$4`k-$n`imA+gFw{xrlLfY zsyF#nO7l!C-j1mqA6u+hfin1#{q!K3Ok_L!ceJ*TE#S_SGJQ&6jf(Ir06^UGo z0?9ZWNVpbgJ7jQ@LcCg6=}VFe$Qe@bC%qPbBhJXI>qs9dg-gYnT@PVO1YScGpCnP0sV`xL< zBm_KA-7^u>0kEtnK!Nx{v6Hmm3Iui_2<#E<{WURUkXoZ*@?fiR-hUbRAkT#_ z3G2V0^A~)^gZQNxv|b(uqmfg4x&2>%^Xcy87XEHj|J=OW0CbAOQ0?yJJIC1y9Jd{) zBL19g@DX^yx;iyX9`NK_tn&8uCjRVh)BKRLQT`q#x} ztrfUOm+$#^GjOlZE>1sO^WZpe4-c*n?hmf7FKgYvJ-GZJ0-eD9aCLuhdU}3yba?;e z@S?n98-DA#*#Y|SeRqo4A;lwPVAVLxb2*DTv{wAF{Z zl|8=e$Ln(BasTEd*&Gq-W;|}ULB8B;udlb!QB^xQAEEPR&ugb0yN?{%u0zNRA8ki} ziSkCJw_pCR@_*=c2}HU+0M;o@*b6!qmYoj4OdHTFHk z>j*?>*1~=8xWwC4DsLQalmSk9-8Wc?7tpGf#rEP%ZGrNUnD%L)~ysUjze&R1L`nx)W z1s9tIh5q8G9u4BF@d)p6CYa>@iOeo@*)WllDMR)erCweD*RI5W(%m{4MS@=XzNJ|h! zg&c#>B=ZYhbieTsd2b5Bz{++xEVM)fFr50>P-dYq2!!vCv!ddmu_86z5%X4F@jPoJjP^aq1W zUmHyNlZ7K6%rWHinfE)V`3y%t!vy!z(RG-B;eakg8p9<2FqEXUdai3bz`-5&iMr1H z%6~q3kp2b#{EA#GVfe`ye*cbtF7VGE_$Q*sCjITw-w^?K@LP<;zdW>FMw?=0ZI-Fy zeS!-K=RHuj`?-!zfFB8KmV*ovOphU44pfz$@%ju>rm>0KPopY}NkyXshyjo0WMy3d9V&xkXfw_4g%szQ$d0{a(OxChJ!UQclKuPj_=9Rli zGOBHDO(v7-(Vg(+B^`S#@Mi8HlLoZa z_5tvb)!?rU#=U{2Va{oL*f4)nvEP4L*!LL{40DEAcj}l~Sra_KQ?a@8f7`T+= zVPG0z+#nGs6qNaC-N`LVLm+L`dd!Ux|Bx1?`>TWFqfEKbZ7t?d7Fi&wK#RHG@eF90 zM1XWtA%p)>_$e5|{~zFm<>T|q_a6@L>*t@Yk3L<`RX&qUc)tM~mw2|mHIfJ(V!tW` zTh|&%65+j9{&ID6e{p$!{NYsfDZrYsxY&I3WEbBn0RhAfNco~ulo-KNe$^>oK7IUj ze)9>lygsj=pI(6^PAiduxH>vLzOSF2L%AP58JRGGp%H=l-(Mer;Bo-62W9X(rrn&J zpB~+VQuyTz`i|lwLb^P<{&M*VQqCx{nTfnVzC8F

    )mE>r0TFkZfThQ0gBZ@4x!d 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

    t7AbA{~qE%Epiw#&!#m(WHs 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

    %x87vyYTy*L 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%0A0Y`MtUZ?>FEeqCcPTq&`>C? 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

    t9Y=2yM})$r+qPHz0mM=d|~v$H4|q^Cz_5 zRK*PU4;A0s2E*l|F!w-yV7s#Vo#~RlLU>w_R$cki>Mt0DfKFuy1H7Z3sJ5-X1;d0W+l^7SvEtURyj)JgbLQL0YMDETn zze??iG6Ac#;SiI5k&^i}t2~V~OIE6~9^3pZ!LV~QNI>lSW#iFO#Gf@r$Tww7e}q*C ze#6Z((gr!4z07(%bS*Oo$IS4*WcG@DWbAi^^)kFDSP&J8sOhWm2_IKDk+IUQ`?Q{U zaI3W#J;<^yhjUQ1W zmld=?KnOKKmuzIiQi0l9s4_e}l<5UXQhB7iohPq&87M5hbX!Gz>zUd|O@_4*-oK)he?Pz$z?s>5m{!t_XY=JEd#Cz_vULIU6S_yT zjK91TUHxT+JBcy=+oNP2Tj?ZTPDgL!;WGDT(fCCDm{nD0MxpF6UM9mJ*BO=aes~4l z1^pJS!zcyLd>DmkqpmvAYSG<_?S`gY;G@+gn$sAw2eP#e158va{aR z3t%6pEEO>qw&Qxtbzo3QKTYB(S=q%%+w%2V>cz!?0=FG>;=E@}tI0yuChPp8Td1?O z)ooj_zyhw0uHoC%pQmu()6>U;d48a3^WkBh?XA{4khv3KC1v=5!uAENjkaxxhc#Y- z6Jt0`@1h|RHOI`{Gik7`vtSBA2e_hG?T3f$xvNaz)QwDyBUsj(;}7TmQk3$hUPOCl z=Rk(-jUCQ{WUOvijGaT7jR)Srpl(j8WB;VYo_B6*1FWvXN*^1TNkEIHZ(=G-%Xd$i zuhjwB`{#B(Y9lwQIbV0~&1J&wRow*H>=7ob!X5C$DgG3_jwti#y5y92lL<($XI>Ps zCK<6yLJ)laxkaET=V(t9aHnkh{IU(sdK#%`G%bAKKbFI zKb!=J)TG!jbheC6L0D0>3{6Lv7HL~>Lh!|Np@vd>QlQ~z^h3t!Zy083t<852WiPco zA>_` z3!YUHwiNjzn5zV3QnE);TfEW$vA&dYRn!*I>+S|R27R3W{4MT#&<1&YOMRLDiBzJg!zU8j~U^7Q{!SL=t5hEvF?junZ@+3v&uL@;WARkp08~7hZ?qme`O3LPhH;mXV_U@Y<4^K` zP<);q% z?>LM$7*k%8F-2SNvZtl~LdFH7qB08@Zztz;eop-;cj{ug+22CDMk9DE@V3|2^0HZ}<7HY?uAUUjA*0AskiV zU&up*&iW}Fpw~fpFVUZG z5}*$ji|ea!q@O_Am4k@#sr%_9NF6|*{Qr`hHoGxhi_xS5Cq*$>*WuEPxuz*7Q4)Lt zh?ylER*>|cZ7OdD1O(X+MMSYlVf~Pv7sC?z#;XdEL4#URJvV9 z&UF*gVpkuwsXlDeR`Xc{eS;&Tzi?xJoLn20lV#Dm;m*yi`gD2 zn^F65dy9`Fcb494--|lU)^3abTwwSlwxkDpPvwM7l!IH3*KSI_3EI|jEjeJ0vqo^_V8*(IeXI5G&EwAlsMn zWt~7}*_pW66SmuV65oXQIwLZV@pyWJDPNjvP+ljF@iZ7uHQ_LZeX>w=XLqKb1Y7-O z2Vn4dxJ+R4E<}-J^;RKUtVxI4O89St#|XJ>4qO*i6o$zEo)bjHFlE>SNFkogS6hW3 zglNVmy>d!AgUX8|SvFrZ1zyaKfYbOf|)r10dYp8J6Ts8*$jVtQ_FAK$+Du z_f*CA%5AjR4Mm(#-V5x3S(pZD4x906l7KYR;V)p`@pKW+(M5CCk-th@F>|e$E&+xb zOg$&UUg&S#N2L3RTA3C`5BQRmVuErrb|>O6IhsFc$hm8G+O7FVLop$ zZtMJQTE5pY`FywIj7w6^6t%>>@&JX8nZ7D+tF*1pWQI81mRbt<{heS#ani#z%-wi%q z&v%5GVOkT>bf3NoFP|FkG~ZFRup=mSWneamW53!2%u-mGb+IhiWrZxz6QbsI5(FR> z-)quYGupAOi_5j!Hd0FH7eVv-$Fn2a3C=yDa$hm05O#f#_g^EcMqYdn%20^JpUfGAEbT;x{)<7nC2Dkk*ji$4fPYB_a4 zulhu^s;3~V^P|*QBMNGTk$}86*3m-Sp^k6v*i;8BiX04q#YRABc$QJnLrz|BDquz` z&C8FGmyg`z`Z$S~^P|zu&J8hqRltr7V!3jTxrfkk{Voiqqx3v}$E&4TZ=f^Vt>+fU z$+voVxVY4bWGH{Jb8DV8pRnCq_l$GfPs(U}wwA$7MV2krQ^%eH_sBVBJc$oLQ?J+0 z*zqOnQNpcb6?^}z-QzQM4KelB!>Jl@yhS)}C8(dgBj+u2jZE^B?C8^aEoABYo{V31 zY-VpcN9;-L^l7fgcG{b>wj3To2h_B0fsL*tO3f!t4Y*pO# zXB9!@t&~;JMgqd35U3=>?bFNWWA?T_x9;lRQZ10>8eP1Q8c*}0t7#P;nZ6DI2f5J_N(KS99X`L`} zkVDrpywxH1WJ?`!8ul@_8v49b$*EhIt%&%d3=3p1(WP>Jo1|XGV8A(X>iKJA1xwpr zOf85xn?-T=BICDB8LowflR6uF<#Q}%s z7)kyZkk(sr6{j;7QaV}IMWNgB+uAU*6fq_-5QyhhxWK`UFk{dB$UqZcs!eJp>~inN z-VkK?nx*jvZzW5@Sk6l&t=}-*NK2G(Xl?xIximM? z9r^%Q?=0{~aWuW7%XD#1?ot@lb&l0C3JpxrqB;NIZxLwQEoImv8e4HCvMu|o-n8t0PBrKZF&KcWh>su{Oa9+?zqf_(R(&#pa0`CDqyAG$No}oBM7qZDSG)vQhlip8 ze*3NgQl7mveMS!5B9|-w!EX`sBff0>4I?h+7?KISXEqLP20!}^T?cm?3<3JPyq7)} zfVJs4i!ju10UVpW2K^axm&xF^BCL{lV{+}I4tE%ZGwvzb757hsjX?H>_fN47DKX62 zP5Q)Gb^O-i@5;cc-E>N7%ClZR#F1A6(tm;Cz#=>=MNItmg2=~scXXnc8Y;UjXlGk8H z2JTX(ui#uK zS`vB5o;TUYK-*lPtqb_m^LA9lmLGeRaPEHzkr5^1-ioi}x$t8hr3z!aBrI&iC%E&4HlA2oW|PykE0 zuewThQ?w$cN9Hfm87$u|1qt;kjrnc)&<08+VU^b99+lqbpYHwj{PuHcJ=}Be3+vj8 zh0;wl>Y@?N$@L{YNE*s@Bs8Yo-2KJf+1b8>PVTFA8Htf(($&Sz z{V1Njjg$Vw2dU#Mju$PEnVl;>mhxlP;`Egkr>}%ZH-nnoQ?iA(Th9G$YsBu*l1E?o zZ0M89&v=2^85ecAsPb8hzBe->yYmi^I4k@%&ElG!myOtk+r8<%W~DV@+;O z$jR)jOmR~bKcR=+;vV*dG9a+B-C+90k5ByED`5(`tY`)li}=m$aJo#x8=ff!pY2+X zi5X^5UnSv!!h<{K{6#~4MrhsrDij;WBSdp%=Fb^_r=kbS*s`mW9JXFOp-mwwdAiLF zh%^md8@q2~+QCXiXXq^MPi1EAqeg^|@Gd21QE6E+j-rpPhq;Y^!(^W2Yr!QA?tdr( z$yHbekuNupo#n;OdodUdLDOF|f4PWx#5u~ajmA)tAEdIQ9>Z{>{Akn%U3~;I)Pe$D za|IEa>2rLHRc8213YD4)8;RTRkr55rdhKw(i07>v#yM^4YRzBM7e9X}7!2maz51`G zF$e|zvpu&xs$*1rpoZ5x7dA))V`qeC&MmvCURC==?|wonvL%8IO+*k=5qbRAhlgy@ z3*gDBjE8=%-)Nyjz8ADa5y$N~6Y+tYb9(X&)!u3O!-I`PglQqhQf#yO9s2uGZBtZe zh(`vN_^@fx6lM-5J<7%IhTZbFA%gnm1Ll_O$D(Mg2SPG1e%w{jnvPK!%SIweQy4Ia zTo;c}X^ih$(%M44M&Yy>Jqz&-%JAn7t{Os}1$dNwGpP$Y?&_XVK29W%^G_G?IjaB|SXI z>s;Sw>dudR4ON#3nxex|@DXGk3h8+U`vz9(E&rGYCyvJ2N_GL&|kFK2K0bXVx z_!v}_htIacgr!1$`?-HXS_z z(ZPdmag)QCQ%m<3U$=ia63sMvB~OS3*sHb9JtSRg=^DC?|0`AG}3S3j+3sescT~hIJX7 zdFov7i+=YcaM(h091Xuq5fF^KC!-jADi!I{T2l^W~Bv2P0z6Bk{cF7`OxJO!l zuGen+SUk_ctIS0hyuzSEU3!^AS=wCwMZDE{b>|{c{8`Tp17(?Epw%Fbr-2{o?p*e* zy>$v|wQ5C!Mnpr#n94u<%!_1{FXvbi_@Ba?(q*?^v%%hahxHrzvYfgc_;{_en6OWt zb4K)wjwtG>i~Do4QN8_nm%aDiRzFpp)4I6A#Axre1?NU67L$PU0bQUlGdhaqe+e<2 zL-!{=5s=&KcTbPy{N=Kb(EDxmcNh#vxcLI96#fe&_a2Dq)C?6vz*bKUpPrP%|G{hi z3N%-2?>*@|mC0f;Z#{dqTCM71NG) zvhg=Z|AJJKFCd!)pwkjGf1BVn+Oz{`CrxQI&=PilIQ*f5N?IvUstT?y0y~nCX*65`db9@T8ZYm)l!)UNrQop1 zsIP44y{C#}M^6>UwtFCpsdTRzP5ep+csm+mdVG~?y^=G-u+!Kb=)0qy_`9?!S6`@R z@gUXSQ;wXfK~!RnIAoEvlaLG?ogbA)QMd^4S=V7SI*qv4=vomLB_A1EYC+NR5l^4905V@mRLTA$-}5=k!SOfEDDMRENDY88_hGoMNcmrsMnKUEr%>ztPhjaji3 zy;hsQx=hl_j~Gj7eZ^zJYW%;zBN^{cwNx~jUmnq5%MPstEhS^S_BvI3KV z*CS*B^4s*sk-v4M1YrA`npL-yeQkA133$eO)$~N6A~NbY^m}sll{|Eg^3b8nwhzR7 zr)a?E`kzQ2p45AtthI-(9b!j|>y?8&H~++XMM7b{Q@I-Ev2Yj)H$C=X`VqAYO+EG! z#7lvbV@OmC`-7kDitx*<;kfUgYsQ$TTQf?`?iR_z*S^B9WdTS+VlLT?69K6{^34y= zj9FrPG8hD-2X@Ll_4*ooi<4fZ4P1xYI4bxYQw3U=RO5Pj_C3#*opVt!ogx|@rCq?g z&nVG_JdZT}BQvTOutAdx(zzx=9xg0g%mOQQ>J{v`zKBbih>Lzg`P43xTwZyBd2O|id~d=Ia`3VSqJ|uJ zDm{Peb+1Y;uVc`+$Z5KhR{FSnU_L19!bqIz`>WezAAFz+j)Sj<-LGzClvBXF{#IAj z`B7W|I-**jZmUM!s$kFfWsQ+Kur{m{?Jz}#GrEkgkk>Mc1ymR?_}JBN!X~okUXZ(X zCEUkSsd)=CKBasJ$(jTM^hZ;vG-vL$W*{#oSJR9xZ+f$-wx;~zZAYF!469WXtN`{!kg_u&Nhi`;eJ}5oU4Mc} zmgf-aY(p5r68IWhI>6+6bYNvdzT-WT)Y*DuXQ%Yma?4r1`|3=m-lb6idJQdc$@Bl= zhj0lYE02N;$bPs4;_Clnf4&Pwj(g?u(OHxS>Ma|3(Pmn3X2CWfCe9a}RFG4Ml=oHG zdy72OMpU@DPI-@aY=txIuzTx={?=iEfKEaIF6aBrpvq1Q)ph;tdtaMDozbITO_Xz0 z(k6d?>2kh8b|WlErmaj*>a%-NBva2G-U^=8WH$lnohn-Jh*FQ)6b0i# z1`*}%1}hj#v|g)u%MA~^IospldqfsjefG`IoaX_*m4s1!Scr<*4@4FCn+w-~PHu}9 z9^gFcyWHLx+NE~_d(JiNqO;AI33k%ZLdULwq^-VP^9Woo_WQcEC1AQpES!7B(vV}9 zmLD^-Rgk6$`X7V2IvS9(g;hHoHE~LC38bjfrj@`CGl}cnE9@ zmi!lfZ5x*Kq38(SuU4iL%J&Yr{eUCxT06CVdb-xJZ1hP#+}<9yuBSFD%!ADegAsqY z3#LJXRrdPi83sxko#G$3Mt0DkFK6D=U*kfO>-n*bwurrZ3a5E2 z#6)BI$e1AZjhsORTKw5K+rwSx2-qv<|L#<2j&0N&dvb}OQ{U@r3gy$r+W{q%FP1HO zf|t^_D-F5^GM+74alGUUq6F~*Wc0;h)1Kv!;W2}%u3OL!JAcSGMZUq@9AMoyqMWl@ z_Wl$)wq~OKcc*jgAKKe39dm;iXgiA9J=o4H$yjb9QP=-N-?e{u#3+*!WJ`;SQ+bJn z-+(goIK3Ebs%ezQVawXuHmOk7OBTcYB@3okeuDau-Jsm(YFCKp7?Bh$P#Kx}mFI5c zhhE};&OLx{tE4iXKiq}Y?eGo-il8SRhzfFU z$OVTd-`tyv54FV2uZ(#f1~zhzDl=s3d~<67>h9W27q3{*nsxt z9&yRT7-dgkJmQ-?t=-%cK15eMK+L20_-}@9wX)05Q!oG4JwpS_flfVk1Fr>=ZjFVc zHiS^LAo4Zn*D|8>_r5sHXoWw;G{bRv?Ymqh9>Cm1d-`?S*m`ew?c1&m<4x#cf{|Np zqaIJ(rH=_4B@5tcY46+a3ESFZ*LU(`YOb44maX7T-}*+~tFNNIQ+D0=<$BJ(-ZfBk zjIN$BGI)UW{k_BU)3fV?)06Y-z5Rooi=*>4Bu|nE&4TZR4S?bFm+%4WijoT;oC(H* z_&6MW8sifjklgMMzZ{8Mp2)~i6!b+`l+jH-F(tANfDV5PMo}O-tCFEUrffp0h#Cbm zOeYFtpM&%rG}h78fBul7k8d4Q8+^RSu%pvx4btE~ki-fh@A&ZK@ObCL_0JdQ=lf^Z z9}oA=->Z1F+?mZ!JaRZ0+=X3`=3)Dlp9k?UK!q*jfvG?g^<(&AI>B!&JUBF~J%;87 zp;yrGy7kS9K`8H1Q?N*X5K;^YHWJDy~A%RGfZu{N7FIorT_efe4Uj z20R{og13@y_(zv*8|3KipYcQr>m2y+!)c&shE*yNH|F2s-8Uh zj9Js7bMib9dWeJ06YWri92-|oLJucXMR+_3U;ECG_<-~D#1jWb;_H(Teg>f)w|t1b z!m`j2Qi52-(TF_=2hF%oPi7LnrYVA^hJFrwVIc>;uy9)qKTm>KbbB+~f!Bb&DVo4< z@S$AowCgMcNdty~%E}-_W##lsA{pG7>dO1j$J#H?!YgP2|8Y0phYG78w6R>6T#0-S zo2wZIO+)M=&8{Wrs9ar~PWa-t(wTFe;3j_USjdeBB$g$?s+mPN-Ad}>8U2DeWGDYoJq^A%p@q$ zC3E-%DE2;w-bD`47Xr~20?}xP>tW283mwt;HNZV%G5~UOSGRq8W2ntLWC+Y0cCXOL!CW5D_YlgR7hQxp_TQGN{#!nZf!_6;ty zt+R0Zj8>coDNHT$#jH9BJi&L^alYPF9Y7z&jTprlr^o|dZH6GBQ`nEQu!KG&ReTmy z@mWv>?+^f$t-jA<;_sy(b&w$YDrBKLU`5P=b*Z|7!}jyo=fN;d#;9+JOiB3g@qH^p^3mQPr|F#4T}Gu&7R((G(dhQj7M`6 z_GWWrn9D3a@>C)4@fmLiv2{Ktfn3vTtzq{!CLtG)NL<1N%o-$hbmhK z{9O$2_v`?F=L7tV#pD3r=Lh(E!2mytUPGVItl(c1ED8(J=C^H23v$8-V#14x@g5+c zMsxQ_DUbYZ_7najJG++9;(e>pyXnrSFuap#b(VI+1HZ}uVnCh0^ae{0y7y?H>dN#c zOTPuBM5Zl^xw|fyJ7H*Tc#a5fMllh1kVFSmcbdYMoG+ZL)}@2zDURo$;lvr<-a1#5 zu@{azqlhUot;;)U?UcbGwWNAJi3gLp@;Gi=yqPrUjj>I=hYmu?)>>LEJod~q!z%a$ z48#Ob)tL#vk!0`>Bb1n*7K*4Pq8`OZ0pZ?;-2BB3ubc<$AJmij=s<>~cqdBSEm?+5Apy#^zIbjuKM`o!d z1A=}Gl7$>uS;$QsC7-hNIvxy%X+O&??)vzfVHM%myC6{vWSLhm1eD6emFbk-WUfeC z9kzdhyCE6I{rZ*f;2)0163GeFZ$Roh=2OR#FYtH+t-^j2vgDV@rq{pvQQ|N2>hQy; z@^q3?@fA@sPslYu)vW4`P+e2Ef)`qf>}ZGnBc48M@AcSFP7Mm&98#}2o2Id<9O@y< zn#i%LY}vI&8%DZrDsgQoO%( z2E!!i442r-cdj<2^h_>8%?)>90fag_qEu-v@T4lVJPPIT+ zh@5Rvj)hoS66tQsgvUT$j%tNNQ>v`GUaxDtb}&xdMS^jgG?3+57Gy8H8-*QUMhFHu z{GB963Q#)|*BvXan`^*8kpak~#9a|T%Rx7<#{z!1DmT26ZD?Tu5o)hpbntYJJ*Y!# z2Hn9=6Ffk}jc6RA&p|m~&0<=P6OpKuTf})$D+}VzU|_PN<;&1lrqu0Ou-jr42nN`SvGe82 zJU^0h_;U8*TKTaWt0gxxLJLH}xNJ*0KN=fUIooip`v%d0Z4u_1v_QGGO^2$qtS8GL zazHNIuc!)IF!@55i~>K~hL2|`>nph5>4(FPcU(O^IPe~W~qz0r(0XOgVuB_#gX| zAn@qXcDjDdFzEjXqIfTGUJY+=y;ly5Dy6@F#OxE5o2bm>M}AU!Hfz?F*{rFPe#ble zmT7A=o;hvJnbWrXKQ(RJXSsPgtDc|joV1U2&iDCr=_v$XEY|`NAWkWEfq~q1n4*{Q z*qm_9%i@e7-*-Um9^h4JtySz=kc{zxCWp`N*BN@!O07it)_N({_(6f4Sk~8I)Y69e zaXh=9N>u;|LJ&s@{1~UT>hUui^u3akJFBuHB3ZH9)#T1xdd8sCLRzjf`p^>RLx9Is zydp6la%Fje<&U%0WRqd}Bafm}(k%v(U8`A)e`MY)7suDX?Hpa~OZ-Fn&cC#DdKLCK z9FK!uXdrpDU~S(8DLz2ka{jx*2=?h_7KxyAcA z6loG;?qZnZyD(94ZIZkNqMVYMWCFND^)YgIPy5TEx$o2)(i3?FUAc-}H6 zi0Q#&ybi9KgqFar%T;^B^P#H2C~J24`Q^1SJ-@IyXj$HXkwsPZ6dh;mIxNGD z(;KG4ouvCgeVHn(Kx?_)+OVkR4U2Bx6uS8o_#V)+<7H4V5@TSxKo$DjBS(W7sLEvH z;7pWRYnTCowV1PRtz`xX)}qb5Wytqo5SKx)8VVZ_6$pTxanucGLOEC5=CrcT=KTmJ ziPf*$p7b0^44_GOxrq>xEzG}}GqG6f(KrBAX+H!LHj!$zdK1p5F~e6%YHdEFR-GM{ zRJr_&Dl=THq}G*Z)T%9s;tE&isIZJ@=B#46p{Ar9<2+}DVp%h1x+&_Cl@-s~Eo<4C zU0a{GYk4j|H@dO~XLf31-cDI}k2(8gEjz1g%e8sCmff`G>{Yhd%nsEHOn7)CX!?9? zzQC&YyKdE!Vo{8~B61_m+e~Cu>8|Wr6 z;VNfFPcqr6H)mRJ&N98p6nbWl45<;lDvfcfJk^)?T3_DhFr!L5vm;p%wes2MOD0=& z=d;$G&zbII3O%z&np9l5Fgl}hR6j1Xeq3bwq2TB2LaF#I-Q9klv3FR^lO^EpY{9*t zW&8F}+PbxfJ45s@9C&UQm@)D!ygOTMC}`Wx=}Vip7I90Jl7hx_48647EVQyX|22oc z8YXy$rHkjU-7pRwTA(_6{Rkrg?aA+P8g)KBAWU$Bp(@oO?P|?)=;2gTQl_LTueaY-{>-N-L$KcJ>!Wc1TqplE%f_d)QeIHX3g+`95HCw`yjrh_`th;*cv+eKxH4w zL6LJ%z4?Mhj&~P*4dXLp{s^SLJS~pBx+RHMwdD}XAz;Osu@-k((8#bWZZ8TXnU?#3 z2+90rpg-7&)+X(dF6=9d{B}OPGa+4ZbH@t)ZkVRSLAC@kLkbl4E_@g!-J@Vk7tZNY zfV$a37etooGOjGhgdj36W+#2|edxZa7})$tj>^T`IcCp{!f!sSw6U z7Z#=wB)fXdc`N>*3IGZ#aj&*%#BXNwC_Wro5*gOzdG^K?vlr}Q%<$K4JXu;=s=-;N>jaHLJdSq-Xj0N#g zoQD2U2pbE*eZXtq-e2_lXXu}YKc%VnL+Gct^?1LAejWMqFeN_;e6{51NqnS^d|k6> zXNuC2o#~$?J5!vRJJUGL?@Xg~>Py+MSe$q?WwM9Rvr$hgNIk_;S_Z@M3{KL@avSjq zF6^e7fEcE_F!ec{(jEVY@XaXQs=J8x8lk=B0Z|g}>k{vqVLT2g&U7cmi8)FkebJZ+ ziTqdHl+AP}jN(e=pW)&|xEQDIPk+LMAH!n)9sd6%e5>}4T&#!f3N};2W^|xTzzDYm zP~CLvD4b>~qLaFhG@?z}r8M3AQ@ipUrau8WNztk9X~bE7Gp2ad^K}-4uo?YCgvy4G z(t=k14BwoG^e{rY)rGyU@~hU}2Bf~}La*eMy!kcs#F`>Z%UXfP4Wz?3wksu@wNC<5 zVcd-`W^OiWN1D2=(%LEVM@juPQp;F0$yDbN{q(0Fp!fgQ(9qM6SJRPK`4TSOrArML zioB_SjQazka?u_zg-PHCS%&m)$&h{v{R3i1Cd@(j)2|Zd7vgU9R>S)_^skBd@U0hT zy9N^O(!a4gn^uYOm(UOye-2HV@!w&o(D)&=2#tS*rqGzC7OC;iuuyC~ux0ULM`59$ z_?s<@7dur_x~VK@rSltII)AF6e12mHiIDc0(iAU)qzjpp(^4V#cgmfybBDBQO?5M& zG)>J6D8bwY*}hIUTbgUMx^HRzqof~>fDvxX+*P-An|giZK6U`u+F`PWT7@evZq+x1 zD*v5?U4gdQE{$KS>n;~D&|3W3_iKE+rpyhO@6*&s4H`L@pXK&|XiWqh7-^1Mb&M z%l6-DP^<3dufU#r$SnUIF8cLVxw30)ZxeL3pK8w~hJYAXE^Q`r?WaG5DT_Pv8K(l;X2)}jA=tesG8d%RS9p~K0UENZ*UM{*V!fjp8sVy>Y^~lWJ0`9 z4%Mqb`LKEZS+#4>kDBoc)b*jE0qQaZ-X||N3H=`GQU@#^tE_Vz>axx`Jzt&?a?UZX z7D+dp=OAaY%dW^IO&JShDN|}ic`h%qq6CLq6*J*IJz*4}8^BjuHCQ+Qy1i2D zo?4RJ&AKXX8i7Tro+LL~?J+bI{`n`%K9YMVh?zuANGUvyV;8CCBVS)g74+!WxPYd- zFZ^#_8ZcQ*xE2=47uyf85}_P+_?Fkj^)st$p=eV@ zcF^J=h|HohmyLom7d_gCti;+@$=LwE^4h@rvyE*n@&raNKv$59-0g6D3CE{!3LbtW z_&N}Bcl?(p5woAVl?%F*Z4aJ!!7gR9$^7{lhm;r4fIN9z@tjyxZJs{LeE@ zBK!(9MRaBx^H>+H%L^Q(cfp58e_Yv4EK4b6#S$80#S$B1MGKB$kBZPNrGcWOH_Igs ziN&}wnB#=avm!zrOr_!TPM3jqt6gqIAe7>&w;X;0p1vHu@nTSS#tO9a=6W5bogK|F zren^$p7TA9pI3w%qm^LP5v$RzKGL!yY8_4<_txb}b)#0;tK1Q<(Y}t_qFcKr!kyb; zi~`Ju(eNH^sv;Rflr`#+b$@tT|978pYyO5)(*eUuBCqtXkviDxhh;q))o7e!D?E|NGLk3Wpy2jADk zt<#bO%W4peK6Qs*lKs+6#d3>amA{~6Trl5ucGFS3$YRerE%vp8VKa=P^=~iQkarg> z=#)3yN|>L#mnKHOXGiQRe`(73;~(-7Bv$ete*pIWSoyGRqik9g)Xa`7+d9I^ z{-dZ9oFq%x8iy&Otku6cE|R$XsaTnI9~=}bEnWS&O#!rsc3n>sEau^d-ld8!W?vDR zWrGpL#hTA@Pf14k=44ilt{UphLi*j^7!+WygJrssy%5h6la?>Sa}6(pmV^GrVnzn$%*deUJzZ>vTh54$RGo^qSOg^I znTZh?`Ur>CyUf`x7tO`14VFva>`cD-(rS7%AGQb>MvYa zMZBV1pDQR-*nIKAv$CU^jpvILHl4d(CY!eLyHbj>6)0+Vy;dOnv8!4yxt?`q*J#h? z(rD$5LIotpv1JfK@3S_rufFaMntEU&`rf410Lw&l6(H5*3g)=@|%alXdbTMivi zm3IeSXFH=%55hF~B?L8;AlP3)oZ=ti!G~fa2osyumpw=5k{%tV)I4^^*s4vH5XC|8 zOtO##)vT9dnuQ!FcY9ql!rK3C?KJ*oqa7kGt3Be`ZH+4!0-sqJev~V~q*~X1rv1C~ z(24b%Q|qfZrK13-BOF=GQ)b@xkc-!ILRh8^>SB2;O@t_{fB8Sm?#fWk;s;X4EkOe@ zT}|p;IPxE;gnvpZ>8J}&8!56Wuoj->ZVSMwt zcc;D{#ejKCrkl{bXh)faBq&8hiA8HQBDb&}Detj~u~tG^MKx?l$xSOV%f`6DEwYX< zF^(BJPm^;N`$Y*3|8QLKCbCY@_;gx!?dj$sK{JB($Z=e==E*3W0)6NQ!zUz3IX04X zI{o%F&1wB6RC9C|%0}LYQ}puuj1h4x1WbNN^cIB|ra23y9?6p2?zEA$AOQ`O7AC+Z zlAhXNHJuqX{f>f#UeoVb)0vf>2)fcLdv8=0;wu<>W%!<6<-Jvw<+P4nNc&wO zElec```0XM<2o~raX%E0CX_2)OPGfak`~foA!A{dTb!Ly7}F(Wnkb;ldwGyv$YnMx zaeX%|aeX(IEom#cw73%ro)zaGB%4`7EPnoQ;;s~ouu?v>8AfT&{+U$b__bAWT~Uzb-}a4jVX+Gj;r5yT-~tpRj|ZbHVE5#U37 zju)ljKr->m86m-^vX2e5i&aPXok zHteL9dz(;uh!D5(EA!bvA|6-q>@)pss~aAcUW_uM3~~__6g@U}TEQ;ehj;}wVyt+* zR>7=Q(Eqb=v$To#$lpkz%(TQZhNG!`ln_saL5Z*M_uBleGf{R))`CIzi=STM#P@Cn zJKI3o0bT7hi640EEyv@p6ur=2W}rXk_qpKhN={kYyJOk6CHhgf8z$M8JMN=#gbPo- z-63d9y!#frce`PdD(?QP6nAQ?wR}W0Yj}p2iYqt z@AKU}Om>;4q`b(gxK7h^#sV(mMI@4?w|Jp#n!T4KX44b1J!1>RxUH60{TBZ)WRCXN zlZv80*K%5(8jhN+?>->QW?ipY^oe?H^|=GeS)KFqV~|;y_0@hgps?wj#o30-xf?IK zQ&8A^&g!h1*O$N?UQ-OPu%&t~Mwx19-o-V?BT%y|DehrW(6W~r7f>+E#q}tdC`*iw z0!VICdY`Y`PJ#KF?QpDKp`|JQo^3^4XR+AiWghRP+&(_*9W3dSt8X)(O^lTy$<=ou zGR&xNOF@e7XWD7i>LtQ)6c_v3K%X^d}7ppKYNMQ4^t5_N{%@I90#M|Y_3HtPKn zK8*cG{=%hpFeUhTwp29-3c6Op_x*XwTYw!e87A+7an#vq?;ai&mo>l~FBsfJy$O)# zT>Z`iJK~+4U1>Tk?zI6ZOSXlTbw)uBhq0y!eHg|w4rim8!#Pua>*0qvqT| zTA;b>^zKSay7Je1 zoT}4;OA66`1w~J(R23#~1U!!p7(V0a&TG8oe-;AZ6)sJ+?u2FepU=F&i87rtp4?!x zhV~#BafkDB7#3(YcoO%X`J2Pizr(v5nlk`eX+MSG-D&bJo{aEIzq`fp=g7Og4RP+v ztH|BlQd!@_Gp1h8S=!7tv~iZ*Cepxi-pdj@JVeMWi)zDWB5v4B#En^Zi0h4zt}m-bCS4_V6PA zT}Ze23G4&l{6jc;$4ZkY(Kog*yJl(sTk)KN%1mZh0Q4+wIK#=Z-c(o0VUzuI6DFNL zb70v8-D5c5ZH~=b-93`7UVzA#bkP{KO}&MfOPTn2t-fDesaxhhsYr#FeZVaD~JrRfwW#qn~> zqU`JI`mF7@Y4go!TAaP>;wd`AI;r=qm_YL{#pOr#KIfD2{l;jyI$K}1=~c_N%d_@g z7LGRmR1F_(G2xVQhT>wyUC8NqybBt2&g4cMuDFq$LT4Z6VZO~-Gs|Uw*)zLrquym3 z^)B0}x45Upqh9};nXSQ&nEA|DWEKHK&*nxnu{uC%D&S}Ns^6FSZWI9Kn=4_D%nzcN zoNZ6%6al*ir(|p; zbRJdaI^Xw~>iER=O?Y`0UhysNex5BZO2*-c;y&TSQusHhwGloY_A_8Kyqz#_$|SnG z3sa1@at{OeHFJ*#_eQo3(ua4$WHM$db1)JnoOT$qOOq@|e6eQ5nnr0K0|3hK5pBTK zWc)4|vHL$E28-1GJT9;{GSzA?OoJ#^p(w(%KkUlS1CD5!u&eMR)AsnIy&^hY+UcJr z7$_4uHcHW-SXLK>v8w#HU=*ReqbkSw2(@uxL-O+wJ^gQkjsk#@O|;_rMJSfCe^2Il z{&fnuf!^_pBucg303n*=479=+PRjT=4(Zy5NctswK>W(@kNO9RSqiC<)@khtMUg#> z_23{Vk9`og3l(lSrOBa;wamlum<>h6`ddd!n8g6h6RV28i~Lyy)jOl`E=C8MnLCS3 zW)RUFGY7Py@xo1GC1)iNJvUcj>7HzY7PplXKSW!`;w^2;fGln)?_n&>B`1W)KIr^sW=s)gWAL0W{V;dOjwfgM;Y@zHOC9dSfuf zwU;cc%+5C(V>)zki-pT*5PbcO9ZTEjLpiszO%y4U-M%ra&j%_s_+Qw?eL_{MoKMQD z%?B0L@Wh3IVhquCU%rC!A*A#cqwjGXp~kdQl^5g=^dO@zO04f4N?iIFKeN2ahr1Q%Ni+P>P(b=Sqr60T}kIJ zYov6oGlBnQ4V12OsYAS|jrG!voYaz+)nB@@nWpoy21-}9RGwbeM(N5Xee7lRm#%9~ z#d}#RrE6PgjW27WbY*{hdHtp9n(4MLYoK&Zle+w}`b(Fz(!gKT$VTa!X6Ip@m*Z-q zeA8yOgO{~Xy0%So#LF5gUEspP@vY7~HLKP^buYaaO=Yi!Oun5!Q)C@j%; z5sE0&&74cfvNEZlxXgErgA9dSmQaLOmg^d)9@@&Ggu-=0xo-A|L?cm=R!E-$z%@=) z6mhbIBI0DZZuSU97FTHnH7EdAKedq+uZMy zA027bg5QOtf|+jSl*wF%LGgHHzN;NeDOBNS5vDND&7EHvWqD#r4IIKX54~h1BBh`P zk?m?{WU}nXl7b&qDSnuyVJt3VS+Sg4cJ8L}gJPnlJU4qlCyT1I!kE4Sz%|bFRO2k6 zsCky_+719^6=r&oTc`o#nrDZK#qg9O9>cR;?Wj?$k#TYBl;`Sal8P7I{Z|HY?3`%xOwg(&vO0z$Rfj!#FX+S#b8 zuR6On5c7-921J}TUGUG|rz~z%bgry{^_dO4{L#BP5Smov30oOlq3Bvx$j#1`)|f~u ztXKdjl4{Qti%*=NH)|d}t=kTJ=$9UjL=*x#Oy?o>il;}Mgc~QQKxqX98ZxMrEr6d{ z$@I#i8S2p!<+C<;3H5S-*8pD}M^D6ROGginAU?!Zi5I%ZG90Dy*4`<`%X9hDI9oN0 z8_ojbLF%-F!rP+?bvHAJ-StdH&|Fs!mNGXY$E)YxDdkxOhuX=I;-rp&ZOZrC;E!$? z-tmGnj;( zNf|DWrSU;$g6(M-kn#4WGS1$d52V(#7l=O14imj<3ll9bNAs%d%PTULll>8Oax}3& zuWotP_dNn(~J-1!Ew{1A-OFhiG=CJA$W1q1a%%1$mqKP7%wQp^Y9 z6RqSr`)ncAm`KcQ_eE;po*#_~l3M)nJ$mc{s0+0CyZF@z8s9JWPVlunhPe0RITYA9Y`~ zgJg^)h5+%S1Tnxj?eE_CkJ@!Q^QDrHAtk`}GWojwE^K`b>FV7_784CN;n4u!2MpwkKOQe`j3C#(m9D3zAt7PNxlM>-X{Q8EMC@qk;*dJeE5Lm#=W zm#=a^(VFd5>b7PHhKE+?;qS-H^_f54Ap4MiCl(*T)jK03Ek}D@wy@``X3xjt=qAD= zgEo_kMYpdr*%(!iD1qlsDor-590WdQiSH2A)|zX}_4USbu^J(R2=OfoV?sw_<0hI@LHvyfE89$WZ?Z15ki_G4u)ZJM$ZB5B*_q{ zG(6M;7-08hRqGT}cxC}cPlX8Bn2mr*I^2ziV^~)FZp2uT76?+7e0&WnNO}{PkiGC0 zy3=*^!6pewMjhYcZm%7*`il8Wb_KhDOM3gG>gnIWz-ru%r#?}Dx%;2 z=rC<+kcfCuKFk&CF!x}CNkcWr4P%fj*YSA7WNlnLZu2vGzB*4Q*Q}j9#TcD*Z&-4( zn$b@I@O^r^K2J|KtUdj8GK6W>`dK&n$+G`vNv3IA8O?cCMl-WAm`W=K*R6nX=BRYX z1D1F@!PoPoX#nrGJMtzr%|`b=00xDlBG@bM-ZloK8#bD6TH=2wmYT`{f=qD z;MdK;4}vu690d=Ge_$=r~!(<5s7~`BwA10;Si>sbQ#Lbck1X84 z!mT!d1%lUc^l<+F|e!M4?&xbj2O6p#**KLY3uoXMmT!%e> zQLBlUO6Gd`t~S$arm?)LcL^qtzX*=!MiP6lu{xQ|8Ax0!s+DdnqE+cM(U-(}t^o}Y zklKlX5_Xa<57Tj(O>p}BUrL|7B9?8I4cj%WhJFppK3I9-Dv!dW2qbznvmlFPhe;5Q zw^AcXHC&x7@vk(D<|czg`od^4)}WU3%<|>4Vk{q1>}g{XXbE3aNSS`0v#QdbYvylkv3Jg8-N^!bJD9c)_#Lk+#_awM4Hc!yOq53@(U zX!l~Tr`@Nxq>*!i=rf-G=OM z21fAJ*&5<%eO7x0l6n<92rB`kLlPd~>r(v*B49jwwpVQ?u~lgjo5ey_b4%!B)J^-E zMqL+ur;I$7X11WMjcznXYZ!<|?9ESu6M%f_SOB;L#dD5@eF<$XGE|OMNmEv02Nl%~ z2WR}Qp#%23t@DJlX{B1+|)2NjTg z9V-az#NJ8hZ=Hm1{o3|Q>m-~_>uVZk0AXFu>M4GH1px*mliPUs1(s4zvzc@%AV)hk z2u^~x!?)$LYnq6_3$y`MY1n&EWU;&~YZIBe>dZ7|J%-CnN?5ZgX=^jj zXV+G8y_M2{Hux3UT`ib@DHc|9^&Sq;vN(SCu*bz_RsE{0J_}SXIIXSaS~+I&H+!vI z+lD|YcB~*kbzu{Ym8}a74J-g*!513cj)OyWq>Ja)Y8v4qTj-p>Fp|?ZwlCj#M<`EYX^lRgS53odNJ-=bEVsDqK|+QgpWR`n2WSiy!X#$HAx< zY0^E&b&i%%z6{ni$-XyChv;ph3#RWeLQOZ^rS1MOL0*JT-)HzZrq<*JJtH< zj*;c4h+M|4j6e_aTHK<>A;}&RNa^i&jE#(Mdzn%?Y)_6#hc-}~#kSeMnqZFls&nP? zYUoX?5(xt~HKzm+)lnvA_&x|4^|=I%b&Vsdx_=)I2inxE>g{44n`K+w=25ENlDMH~ zG{2#-xdGrLV!Yru9Q8tE2Ql~aQGEe6RRUN}JR1#rYr`%&7)fT)t-!A6SOAES(qF;{ z_6OOF(owuS=<1`&;WEvL`f`w5Rml7Y`0!bYn-+M>F$ zOkJ@7l`kggeP%oarP@4*k{~__zr>p6)vExvo5pQ+M(JGb$H5Ie*ZrtNcWb_AItSd_&#I1I%b| zH9MG7+}X4Gd54}zcPtS6{8QXYB>ynlY7Ac>SO*pehih%(csm!5K;_O9fozYQG;NQZ zG-p0?(rjugon7UHZs;?M&P^(#9K+4JS($bvURAiv5u^o)E3Z^rM^OR-kRgVKp$w8? zle6e~RVNSNh^N3v0wu@)n_-%wGA%P0m!3HrHqWJ|&2y<~^IU2+XNs;(O?1_+M2a!) zA_nNZnHeDr4IN)jbuzi-`>E~{H3rPcBP3i1WM0qB~46VEMAwebC04kTBZvMn9NrHX2Z((U?p^{0|UKI$@H=4;RG5jL&xuA6Vd% zxh)3Ewk5x8Tk^sotax?n{#hVtDl*jv32K&+r}>h|zv0jLK}L$2$+nhln~2S8s<}LK z6IrPlV?bBYuR2vOQ}-zui80F+vaj`uqCa5PWIPFCBE z(d%|7^3gn{6GfliQFF{p$9t$=v@dp!u0Nih?OnI`KkS_CoS&YxOOUo<_5?4qYB)o` z7LlBF?P8&%c&5-Bn6}5%{`pY2YBNl(+KAHTF4SC|NtC*qkmxSa0BzxUmfojluADMZ z80V}1Gj*@FpWZA~z0Lpny3_ctukULAHEGnE4f<`;FQ(LM@OQITtJ5#!9vrOJ>311_ z_iOlD+oj)q{H^cM?>qWEpmc(-tzZoYl)g%TZ|u?UKBd#&2kh@%{N14zcc}Fpg5O!A z-wpiTrSyIFOS$`$yU%K1ZLQ+(GS#z8kjs?5Opwb|&nl&_vtP!}~q z=(kS44f<`;?=tgyY#z9zx(uiK)9v0nhZZ{^t(>K8}v(9 zU1hn1?bSW{C7iDkp4Vsw>x9V~jjr~Nepw2&QYUQGS7=74<|fs%!fIr+s ze`S%9-syeMSqso>EW6s*vlr85iC(KK`L&2=X``qc)^)zKsv48|q_y-x0#7qcNTgm_ zYHjGXuH|cO%vEb>ci=ja(HM4%oX+tTCC3g_e57fhOcR~%qOW0mh9*4Gz+Fhf2$>Km z9-h`P6G&v%oXu%^SWMSIbT^hiT~7tnP|2S{Jzc+AbFJlMowt6$AeZc%BCJH=#LdZBmgee(9bJ@3K0^S*dD?juSI zub6?`+2pT#vj%v~v4=|NIoH?Wm_;#jyvKVAc7wKXFRWr*2X^%5hgE)n8Baz5>QFwr z*tp3f6dAYVQ!nv4-oTr9BQJ0t=^8XhEPl#vM91N6>houi_;J(`CUscS7j&}l2kfIy z8i+q(UwD3x))hdhKguOZg7gD?D}D58xLJ`1irmNOGOD)e;LxvK`40Qj@i6%qj}SkM zBA|x{zYdvtf(FtCawYSv-w;4D$(g#9;nPzkkE)^n2n57YHO``nBj}oY-TNuOqu%k2 z^eX&&8}%m4W?daJ>A@TL9f|<5Qgb&symI2^d5v|KA?sQxbv$czO=P7HcM*{N`yjrh z8IXMUBb$$EIe^x{u5vQ=kAt*d1@XMXnrqhQYfeC6Y!P}p!pD$Kl++y#PGJ4|m74dd z+JSu{4G)5Gy2p~;N*7i*ijO>RKMwJ$;&h{XqDl%9{=d$zciZjj-J>1&J=rS<-PGU`=~a7-tfK5@wE2mV=sy-I=zQYB>gj>FQSN=d|( zMA8son;Cz?u2_ts#5Fqw*$dLZN5(nDGho)iioA($^cx{$mogxt=ToC2sf_9ae~GJ7 z7@p_VkT366!KgNGP^{SGu=)}&D8UF~>5lUOOL@8a%WD`*Cc)~MPSG4%5ldf^Ik1o1 ztWp-)ttxUCwyh6$ioSgLIu{no>x5FUN7<^ZyVGH^tFs+grAaUBBIX&BO6Fox9Y2vw z%9vrDS0%-~DtR8S>b#IwCC}tlvsY`!1!WzP$#w=#*Akn!32?k5+va4+Nkbe}L1su; zS+RrrJfzigOF3EYkYW$7VcimjAiRcj?v->l5b?p-3{ zaEzEeBGW7}4j?4&5(I@Se;;!Yv6vG?310rby#-RObi8D#F6ibm!^Bc=un6|(}VQl=ag36(5 zQ%_INEpgtD60xf8eMA|p!ZRe114T2H0rltg{nOKZ739$|ta-tWu^JKi2DvX6B(D8i zMDE8Z0a3SNB@}lPvD3Cl5apfTuC$?Y9-pjD0V@c3XuPgm+t=AvZQGjOYPeo|s{!mP z0eP>ZrsaJ2DNNKhJ#byORoZNw4d=+eCt1@w^lO{#Egz~r+Vbnrz@cCFj+XpGmt*K0 z@C^<9hGBSNp)?9IU}aEMl-+J5LpvqRAXH8w4@K}Q`diM~ejGmrGJQ4j;Ed&zy zqs!VA0tYsddU^_~BkEmwHGN;eL2X{_PXNyOKRlS`3?|y@Gr9k5{aN78BG`9$GjSgB zBI@bAm?pfgpCtfJCeLCg7vcit^LUCZMvMi9-CN9cXQ=^wgk{I5w&(TPdZ~G_*JZS7 zK~Uk|Z!me(9T8P13RY4bQ6vqdSm(HkSF5OcIw;slIm=HuH7maVN*3wqB0Kaj$LDi` zDBqhhaMO`2VTdHE;I@$D^8)W{-_Jtpny3`HY_f7$LC?O8>w0ft#dGR5HaT@VpUxvo z+dD5?vnoeYIbj!w3zVXK{lmK=Jt+r^#A^Zmpll5JGMWLxQk0lYzR(w4N7cI}S604E zzepFHRp61s+C@B1$Xr4Jks=tI6dYK~iYbpZkk4f4-WRqhPu*5tf5>W@%t$shOh#kF zoYh!aRpzYv8k(`{t2L_$>*a5wY`6KxN~&)`~DugH*|P%aC-gQ{#pC*^aQfs z0ZWk3!lXsqZ4V?2BPv~WrB$ysSG)&*ottv*9>;i%vh#|YAx6Ui_b)_8wiK`9j4Qj| z&>IVu8Tq@UTP$w?A@ILfnt(s?cLUiY{~P4mf%tpb^(OppRD(w1?`6p#?|>0gH!6{* z8{n|@DetF%pgwsTocoy2ot4Dj`)S-t-agPanfx@yu903u{&{Ew5Sb4`cpCZj#mZ#6 z*4pR6^YDTS_749&3h%?X;{H@soP7L~Kk^d%NukY8ywHJhov(U+wsX=x+Bx5cwuUH2 z@KedBC;GY>#$6CBib|gz901Y!fBg6b2>C}~Tfq6p;UVZ7L$3~s@*mz%*66bB@2>Kw z*^>wQ?Z{pI0^(3zP#iO$knS*w`EEt#%|w}=>bJ#`%)PhHl#7MjEVwJSu^Wv(-+^$| zfB0<*x!|ZYE78q=P;R61)f6;FOW;; zwqj)j*wsFsYQmJPVG$wpZ!|3(cBN72559XTJWZE)l0u7-#E@Vl;n>Y$=0J_S+?Zsp z8i`6Wy8Z`t{x~29`K}5@Bm>ayBI(b#nmhD?C*X0zVZ!2*RWgH>OLBK%A(I6H&h9o~ zY&i8``Rq>rXbmM3F{<1Z=zVkPIX_;#0fAtgLhANz>&@ljD=py<2P<;^Xzk)gVKCl1 zZw8}oaE|*$#^t>;%;><-M8xb}vBk1eDinrU@WRa6xd$;F?H=VVGuUW+KAMbytNTNd zAY)Ph)oEY+P@>#EwL6!6io+bh)>>Lg0RXF{6C@YoP_{$f*`O(RG5G!P3sh1L!0o^| zGSRB~V3~uc+a0DNSNr0pIb##R_~tbPU-zP3r0USWr{U*G5NmYyD$Cq_U*~HYC3C(e z^4X`BPb|&Xn3}!{GF;8K^EItRp0W8wtc{n_c$;r(PkLH^`3X>tyAdl*b`V((|*#C+ab%&(G1{R1+t^7$R*`7im{L z47;}GHN2Gu9nzw}TXsPEeWcvuFc02X}(e-opqkl9aK?Gxmtd_&gef!%6Bd)j8NO*^9c&XV7;9I6a>Hadm9Jxas#A#V{?1c_UtE7iLRE9JdT)%M7j)C^Sd zd6);3&LG8HRa}2-o{3f@X9t7sPcb-)iwG`)khr#u9yFJTj9m1XS%u*~@n6@q$74G9 zc1-Ga6m|gr37%s|Ral+Fd$eA;n~A`gW%}`Irl1|14AH67+9@*jrqzBhhDjI49Sjhd zG;E@0+3Gec$&9_>t>1WhN@g&A4x~6VPcZl>q`6F~B*V7shpu&fs(z3kh~7hb>#ald zMx0OA$`W1F)fBWu+w7IDmMG1|rnDtirNyquB?bD5uHI>zc}4(DK(fEnOELjVG}#gI z3`w%w0?tk=gRe8^&|7i6@(HxmRU}kGUFEws3}S{zspv#+R}(8&FwTeErgb1)bOb14 zJJ;b%ArtG+Jw=Jwy|Gj~z|`1PIY^iE-u`^~yu*{Sb5y;-`B;=%uQXh*}nd_Gcgf*!9Fa%_J!UoS{XM z_w1{mT-L7m@ufm;9gv#{kNZ{+IuCDY^V8%E4Cu*W0CPtyX_}`fCgSbsx`A z{@~t4Smy!A8iK_@h3Bj&NWouWA3i|u9*?JO9kPFA`uEzSqk=s;vhLAQ`5tXWc)=bW z&EBJ<;ypSl*`v>9?aLibE;F{=0SBA0n;z)f<%E~fcfAvyX6}VM0@B>~rg*(bXtX&! z@y6=RE9C!A;ltSHS}H$AVBCUb)7)DDrYMnW0yQ1sqFt5~=j+#c4VTdsnm)@4yvo9( zE@JGAs)XwMWqRe0jm~09H083mwY@GqlkrNcB*L3DTB6Zup$-U36-NdZtf)F%;7WIu zvA<>1Fut-*49O2S8MA}t7>=&s8)$DRur+)iCvZB|*8*k;LuyC@tC1(12k&f|hY5dO z#s6Z@W@iwR5+4jolqXi4B$}@1w2iUw>!m6N2#8jWkNsgBk_#d)Bee<3;==Wbe^DoeZ{zt8 z`z<{kk@ejwS5MFp(_oY;|10!gui-Tw*wmC}^1T`hldjg3Vlcvk^*H#-E`DWUL4B;d zn*-w9pSTC#MEBL32oJuIo;u>G?lg>nV-MyX4>iCB!#xMFd1mO_w{h>v0Ns%b=iN`G zj!S2dEaIj{a)$|PXPj}IqHu3{D7>W%GG$e3YHEUt=VQrLY|JcIkv|WM0%4Z?4|zW# zKU!FTeSuDlSo6=J*^sL#{gQ(ZC;PIK~9uqC`?2`8DZh%byp=*UdajE;U{NApJ-t_CTeea3 z&;WAJ*gaM|xg0GnUitT+A@jH@!qHE3r_H%dmM$yT`7-&Go!eWO!ts%=b8RfcJTh@zlVWIQZ z&o#QRkV}F|oQVj15#}loLu2bGKTtCtbb*2%BjXP)bH#Jxr59%lhHKyu2Wuoef2ii7 zpl>$SolKFPfuAerql?i8-jADvXL)(Bd>Pxi;G&3zZLnuU)O+dW&t-eV9G|l zSgeFJ&$%|!w^`P;nJPw;_(SG+&0k#+(hnO=g}5P}=-D_TOE;^=UQGPXc2eZ}J=RHm zsqVIFw2n6?Z>jCw;UobiVPWBQWw5Y7No|DZr6=yzSdkIBkF#f@qly5~*GeH@)SIsx4>ZS0TGQ_v1Hg!+C?xZVeOoXB6@zy7n$! zA9kR4rk#zKv?H1zhx}hcj5e2TV7>N|2E-GF`HCCs$|})V^%@Ot#amfj_OQVsKZuuG zCk|!EFdl2_7a%J?te$H$D<6jrt4G0K4|*1Vme{9?SeQ9p0j}+U{yGW2v>ygH!x$Nm z*@~GJ^vDB)VgM5R6Mf);N;Msp|J6SIAj!4HsIik<;~ z0!Ea|-d(3TJQ-b^S~2-WIP`p5n_=Ts9p?+~5PL3}PkU3eKp=Ud?5lq|3&+4HaNQ4M*gWub(m5Hv>adDl-Qq13 z_yx9<+r)r|x{js*!%2PyWOf z6{M+w@ld{iNR`H3@~N+Dy@_cE8yd0^8x1wkkys9ps!bIw0A9SI%@vV6B&iYO#=j(= z#(=D4BkO}ThtoZzDWnj+L&~Z~@;jAN@0bz&nSYWYdaQnU`|51VnK+>P94{CQJ$!mDwKCJID17N3M1$D1P-MZv(Ic0)i@IOKB)!Qun!;d zMBxOFb@{+^@DJh8ZZ?m(W)g=pJA`0H3d&Li0(nGpl0I`zKCow7XiE6sI3p>|NTF7c zDk4a1lG{DVc~m9)lQor%<4e)6vWW~-SZtW%b`#)?6zpL_JuFmd64k>_zK4Wd#Kt*s z08By;IqLEmy`+RmAJKD4}hNmYBWEzanQei^6)4aC$SYKZ3>_+DCgy5Qz^>J$kc^9O|Qxe$RC2vr=S-WD}RP+msdzk4K=TkWc9MV zvSBEnc}>Hjz~=Q0LoLcZPEU+day+U%&BmBgffw*M8}hdL`7QOyCLWh zK~kdP?TkjjLy7vv43;Gd9O#H8>e~sen?m(1uZ3FlH`69yQQZu6-J-c=)%8XmlcsW~ zYiTD;VBO(b+KCiccjnX5lsy!*vlDbtE++gPO*@1Ae8i*(&7eBcCC%V*s##tGp4t}? z8*W*whDnG5BM&DCe_?1pr^AkQoE9HTzse7KDDs~Zv8SZ9Z2q`3%O275&sr{f4_Y`? zuwciB=5_x=E&`L1FOk9hZgo9IHfj)b(T^M3(3zX0Z;49Ns@BV8s@h^YG^| zL6QiWP^EpN7!?!RbB6C&32nVXv9gvCE0uU#H^f_Lre|qJlM#EWxvtrqB+kRixjeZ$ ze|q8?)cI@Q8PckCwqMs#6aLq1tgWs;HQv5$EW2A< zTQ!e0Sa=Llx$`gv0pe&|LrLo)6VJQ3q8*TeR8+4uU`9Qh;lImun=g#;oS$uxQ?^KC zr}*#BkB`V1`#J}F!%d(M{v)}ZMQIf9vEfbJJvCM@HHo9egC6-?Mxpce$= zhXgibe2D2`|Z())_rL zJs6%DMxZ1n>kNG7Z8y5#a=eKjc_Sd80595@ep^G$S0V4aMY;P)mpd)=>FRFptsg0e zEv%}GaZ0)KLvLYW@-{^e1r;N7mo7$O&v(%CVUvq7_e_j=wb7#fUi-;XWwJPO|8GK- zjTZgurTXUeR&CSmEGz`umF}YNEc~OsTHADREOoahK4a#*1+Wd->w^ zCa-+GQEOT{1{KbO3SLG8orWy7R>%gs%O?XSfXYtM*=n%p|M3=d$K(}-;`N;$9{IH? zdIAm8Dt%lE&eji)-Ravm2)p%%*V}^qaI)p6F2g)0Td2-?`-YLxQ|`{)hz1 z__6N{hDp#FE{P@DT^bK3qfY2-{kSQv%iLDScX33{I~Zt%-)3jmV6Y6CuyHlRF)9;u6HeUCPgUhzB;1_O zhia{i__?+x1!%#_Lq1#OUUL(CXKMZ$;93LvWg7^QucvjYu-3P>(~ z#ZYE|6!VCp@5Q=5MMjk57il7Gk@!Wx`PIaOD^VAacoWzOroy3(!SqeBnP96KkbEDg zmIHhR52R9bawg~Sf~szp5G0(;)h(QL9y#<*D|(Zm+upX2esLp z7SFtEM7q89Cl%|^JU(O#op|@i3cJh=lHq@|Uk$olqi*k-GdG=z(0;SexknaSa21$L z5z-gc(Zk!rWQ-w>>4FkF$g$uzLvs2c32Qwes|i>4?yPz7W}>p6LFK*1I%{5Eg$Q1Z z7xg?X$7>f(K(}}Tu5ki-=zUI4km_4XTWl%Uc9JD*9BDg=9x7Yl=FmSX@_y~-10NsR z9aj(CsV>RmsziN~tv5yOIubqH#`x8vYumhb*<@Z@Vtcn|5RRs87eRGy2eJSvzEIm@UWP~iMy|}T z!edofd8t^4%K7ei+=H4+VSuesw=RVKlQ?T5+-ycSPb7wD-1A zTV9vM^gf)7KykvW>+yr2CZ?WzLw`6WJ@!Sd43RC6j*-;jmsHC3v7#LU)~~fyrdToJ zpM>MFM*gu|%H^}03RAA)&Fi;*Z}VCSi!+zXH7=DRioP$V=r(N(VmG+znPRC4rx#XSdd7Z1pwp(uIYiw=o8@XE#1(V7iUZw)sb1*T(JIfH#+`S7^@dK0|bK zyFhTSgl=lGBKD9hs3Qvfx&i0mQwfni*=X8TPf%C%Ph;XmsPXK zRF{-U+`)}6cGLc7_~jMTB;QT&^}Yz5)05u*Xau-%c7r4trmx1RAOpF-!Pi|;E9$<& zbEVJ`0Vm4F$KprmOQ^Kt*`A7N?kz0z-OnG7jO&sZ6I+^gH9*B<32l@5+s{i z^y8&ISHVlkqnfMf86*JYdKQjxTeS2xcjKsU-Zk3)+KDIQ2p^n}U1LCFBpS5{V_bw{ z-@WWz`Q(>CUVHneM{Xr1Z!kW!#&FnUMA#(jQ_OsTay=92M*r~Lq8|KAryLddS{=s* zAEJEA>l-I@eiY?Y#{BM^J;EvL)F4V`SID<>qt-ck@$|(0svhtB>$<&juz!7ca=!ob z{@FC(_UJL)?0sf`xeY(7fFtP(p$hNfZO1LqQMD{V(6y@ESz&ID(UDlh`(ly9t@>E( z^@SQXi-A!o#;jfqCQ#u`_=>YIN3a(Cjjz~KdT6UhmnLTzV-mirbgWT?=-f-p01HN1 zJ&3-BU3NIb+=a^6yHNo-9oV?J$yse>G&b7f9-$xr;+b&8R)~}{WL_9RDbF048Bs7q zkb6K->5=)fx3uKNApCf?T1Vks3}TLDq4vDk&0hS`klf)&9$1mg9$^B>j80?mc69cQ zo9t^&+lcsq>9Sx6C~#iL8%r&57w8Mi>z0MA`sPOG0Fz+wN+396H{h^?ovH7 z3EUuM_WjyxFTya7M1QU8rRQ~*dUndCEbj_tiLq=v48HPXI2ew0(xWgKr}Y8Qf~WfaHr@t&?rV|PYi>ny zk5Y1Qr<=Ws6=j*`9>t;U++&xP9Wtw9XdGaLL%MDf^(Mo~n4V*f<%)ebiSYgwpnb0j zmECe2GiU5bO2N{?qjc}*6OV$k1YDOXHXWix@MIow2~HK0BD_g zjS6Y55|_`Q%Qcy&C)8=!IqNq2rxh2R!U@5AyHei$Ld&mlZe)D5zLDG(>(k7%Sl02k zAX`{$tYnf~MYPH^(ipJ_$()vEZ!^3TMdpUAH3KW8ZN20)f0Xe@XlVWjP41F_kD_pg zgblC0N^Wn>Iz|SmlUu^d>KgoiV=mVO<%{)F7X=-s(kA)=RT0A-U?9)6$5jK&cFOJD zgH*^*y4}pNQac>ogTN)XdXc`XM;a4Aap4*H4Qk)`rX?&Kv)kR=IhN0@$JYVhHZb1N z*cWG)W7wS%c|gGIxYag2mB*5ZXe!oWWL@VhkC+IF%J$gHUh!iunPQe4_V`P2gS%$v z*KcawR>v%`qJDAwKCdH2p=6OHww1l8)H2)!7uT z54F+;xu{(YSQxn6L5OR4A;pe=dN$>8iej6!M+Tl|=q-az``2Atb zs&cbtbM!$aJA^QwBNrqS`dyI;J=-EPr;+ypHlXPA=yrs1bJkGm$5mW=Nhv%J zX&bCVR}L~vMV@TT-uWKQqC0nYaTIo2eIAC{W0u0!fn-$Q%wQr}tU{Hvhl8RDUKdnAR@4gN5ZNF4d{|HkOpMBxbd;aoWl#C#umy4I zfvWR!!~4LLvCVIuqt~^<+3DpDpN!e+nMcMnJ^1wCaHRX`i4_Mb6HxidFco@nCA0lm z5TI4!+5LGnm!8sxhU(S1VY$ zXdfff2))Igo>`8EDWH^Ufnrgh(#rkqHzMCvl?5o>`=0w)drwQ{J0l|_BO~LXX^LJq zNd3m?WgA#lu$Lc^B)dc33oR5^lM3=R$5}aj>b^@hL*!UY+^N-$=>t93wrJ@D@2w05 zD6vrbk}xP6l^9X|X>F~d`$j#G%A9L!;@1Jw1LIC~g#szoe!$1b1}X%qIdhJ!Os?ik z9N|;_p;Lzz=T9De8Im%ce06QDI)C!j5v$^Q^1Oj8=a-|9;Z7o zsB~@q!j_Bb7apS8TfA@sMQeA(#>R%tZC7+ZxDD16w_DNokDYvH>ymoZ`lWGDPw#Mj z-F}FhzDPCOYh?Zfd7wf$okGNQArdr1aKGK7XY>MA=w|T`M+sf&yBl?gt$h?CSwtd4 zLDZcVSlgLQq?*)>Hq@9#A(4VB<#x23KC@W{3kfnvL;hqVl~X8PM7Sw{7vF5D;#f)&Cwk=N*WDYEPb=D0VTRpJTpB4%Y&r=+ zV>dy|VOfOqQ3{szFhcEg@vv4Z`6e_p39BaAi}45nqd*j~^Jj9(zV`5wE~|{mCfixMC71sp@H>lwnDSBeDZx3pN{|C{8L5uqVh05d{ff&9W9BqVKt+00v)Cq6ib zQY#~g%y7UxaH*A~SZMGDq_K7jM;VV3PAi%&`a<}ZPFmzx+xoD0WVB26`ffcx02m4n zgzDlI8dH26_ObtGrazwsGpfJ#U>DJo1dG8iw4|hV=-tAwI=qiMJs#MH6j>Tt#KYi$ zpt5|OlUJI-p~>}JR#K}o1+h}U&3S$p9SR|n@adopHGe_Wx3rKs68W5H+Nz=HF%f>t z+QzDEj56G~F_%KopQG5AZfn4#RW|7u1l77oEbVHR|8W;*^)SoPDPF|~av4<6#o$>m zj6L3S7LL+v{O6`9Hc`r+LrgU7uc#TB-XKNoB5L{6oklicR>2i}Dw>11Q0h1b?r+ezuLH>`JpakpLTcPGDlL;sffIZ{;4gjCG8*o?m7*pA)_$m*O1 zVSuk7F$)ZEKF-tKo34@&*BXIo%-u-Ym}VSo?W5O#eFjvI%m(MPnu5d$FidJPYj-aA#w+e2wm^zqMkJIY8X3E*cQn$;QQ%$xo>!lPS&?#D-xw}uxdp zy3<;_%f`&y}!|bV=QMvMrd#UUigJL!L-eh&c>&huUW^T3WNu z$AfM(U->s-1mBn@_&@P0>iFP+&^J+j4Oa;JpeyVa>3vgxAF(4XF0nh~`o>0m15SmdbC<>7Uree8r%^$(GH;uR=X$jQ?TE^>MkVJ@ zJPPFa#1~bFP?L$@EN7`epxWtNEr=OSo9belqC{Nv!Bn18MWZ@MLZ2zB=so9Ewj&=X z1mV7u3udaS2@6PPBTw$=UYc=w3WA;@-AOs!jHTz_^|)d3VJGdBT)YM4L2kz6UJop| z6>^)^2fS3RS~GbM6Twm24;tvAC2BAnUHD-SB``8vshtAJShH!>*?GlYr50AGNk3#} zc$Zq}5iO!zm)r$W-(B&QpF8~aJYAj{6Voib7noaTxtSQp*k+nTvy|q<)>i6r!rU$W zWlJ$MiDy%p6MeUezgTf@gx`iZ^EVv#`{sw6`|RboU+cF#Veh3$$JrqRE$`&yJr_gy zj7MHua&BlhP2xjDTWV4JnOd8%?PptQtt6Tt6bI3OQd*lU?MuTb67>z>u%xc9F0k+D z#`e6mPWC}DuDn5Nr`q)KC~b2w1%qq0?z_~cC>L%FqPl86iH4)voOdZo{0C**Ilfrtyx>IB2K zH6s0p2pXC?#tfV0;Bzl;JRm{#cr@%D_u3A+(Spx<$G;sp`5a6&$d?&(mwJDxinB4*&tqij(5{~JLblLMVu6>=oq2FdxatMF1E8L5>JA$(Sf>Jon z@?V6_q7V>4S_%_MG6}_!!hjj|5*d)F@R*gqRq6>`t627NHkk+)g5kY4tfR*ye>8zI z(FC4<<=)9G_)WeH{lW>xULtg2g(ef)PvcHdw={g)+Yz|7v%{>7cDC`qJ+g%kQMbuf zevj;IK>;YSohLiHY5uo=mf;bz+^qYkHTX5axyEtS877R6CfN%g-#+Bq1f{NUV~LYh zNTNjC3%cntz0|(E@E_E{BCtT>lmA_R zfcv713NPdXg3Ar1HdOLVg1ZJajL%7)nBPB5McK@!32xX>_8M5X8&xPC41Bt-Vancau?B_ie)M7x&l?FLp`c6 zq1eT`mztbdh_V~mCaerSW~81QphYGFi=KmvHeeVhg}+?0pdVR(#6r{DSWL=MEZTVE zKBx6AB59>E6%xYsfsh#44^H>GeFMX|!>hkd z$JB;8Oq$4?#7)IIe`WJFJDOn&Ew4jz`WCu$feG`S#2@JptK0Si!&Ii27SaFY6QTZF zqk3*U3pS3@Sfj<(^HaIf4^wRbkpT<0eQaB2f!vI!b{K4KtL=2N-jmltBaXGTHoAgg zU_uXkMVtHHd#3#t+HAw&D8%n|t%@4Uog_ZxzVvZ|LR}82s6KSZCJC=NsCO2XTiK?4 z7O#emG<5f{8WiC+)lq1TURR^23?!4FqGqB+>M%Sq6iB0s`=EO!6!b5>e_MAZ31qO? zIA}8^%Vax^8?~^>-1be(L9RY8z&z%xqiatk5$o6exF)G^;AQWshYu@ z)*=Y0+LDMc)kWp9;Hs0vaFofh`YM;Tfugfm-AK1ow5DpxzK@<`T@>^h~dE^fpU zK`XC_-kntJ?MzJwOz+)_*T7htTCQ$o#>~o^ZhJ-GXNDeCQHN+8tanqmjG{9U=Eyd0 zcj1J&bC5Eu=Hw$(_b|yW*pY)$I8lrtDH1J~v#vE6lO`F;0&A8(vcx#-!rkEmdLeTj z*tZnN9HmSOfXHw4<1{BWogh?BL3_xIh7RY0xql575Rw%D>gM@(eZ~u)x!Bl5+P6nC z&5^0nJD4_Ln=?h7ILE~*U3YF&8U3L~@)|3=*?VsyWN)mhjZ&3Ux7D$_cxBg!EpNJe zgBoAl6J>VNZ4W5>RAudbpJ0OW#M2Niu|P7D67=IL^C;siN z(%6pfajkjbwOysjx6jpwmzUKBbK^J8>diio25nZDrp)XTpN2AS`vGMN?aYzS&=boZ zvuZF8K8>SIUk#;%zLxNqQ=_B5a1O68;SL5E#3>aAW|d7@S3{LlESXg{rFp<M?N@ zJtlI>l9v~h2e=PEptt)6CFyA-P0Su5`&*^b=W=MdE?eeHyPAuVLnQ1Me&6r8T@;or zaK6yUE#flRm1+X~lG`YDVLU>tlMOL?B#lGO)LVJvc8p}nLb&sGxPXL`BzMTA=3mfn z0>6OpibT|tI;K41C|Agns#8{9;()l?s7{#_q^?=}RRF#fDU&Ex0Lo$v%-l}$t=;ST z4ewMuCuk+<@U*fOQPw`vYC56@Y8QyoGux4UlGI_Tt_UrUuUP92O{bbv1*^WkPP1qt zz(9DRt*=W&W5;}jx+>QEE8h$x~$aj1-I#eMR=|7-YH{{{bl_#V#4EDQpzU>!$m530zUYFRMyRl(*T zj@fpj_K^v=GZ&fO39%QOza|$=b&v>Nf{5q8Vp=s-o;$I{_O~c zpIk3n7oT3Bps6Ib&?PjaUBPSXit5*ylhUU-CA9AfcYb;1JhLeYdrd{wX%&skiz*Bh ziHqT7+QsnFd@+17Uksn5{bn(_;Ab39fgYVv)LdKR3v^~r#Vv_rT0_S)v5bh64Yr7x zOxjFxk>TfJb~N-J z3}4YlKRc_Pc%KLzAWrr19Z=3ulHFuJ9Ho0k!kqJ7dUvN!1N8Zd2MMOsy;0FC#1yUM zn9K1o^UbWQ#$92Ja+XP~8#c<3SFJ0whX=md536p~;(Gp9w$0uXFv!Xknna;bW!%dl zn+8%zwxyXb$Q4iE3zgr71?tM2QdJsbgj?6co-FkF=3WBmS@&Q^@2~o` zSX%8QVQDI@4xa?$Ll2_}%F;7Qg8d;I5r|jNQ$ZZ$?7|v_FkJ=!b4!nQT6OBzEa#?J zeR%;U4Q_cd$*BVI)#c9GHmXE6*;U;BJ5o|@xGP;OCU<NmENv~Yjbg+~ow{X^qXFdWItF1`oNb(G^d6}h<+c?Fv`*=xfp|@6B&a2g z+0{@lQ%3n?a)>R%=%$2)^MP|Y38*VW-(?lFH%ssA^iXWnFh}NLhNPiw>wPhzRYz{<;pQX!u}HZ+pYINGnqC<%OTW zhCCSCs*@3S{ER>)1qWOjOOxte_#txcD_phqoNCPsSAyY6kB+ynl3B-)1!$X?Xp8~X zJd7+{*}4-`CUu|6EE<(3r`QPb31Mo~2^bTdeRT5P4l$fTkiM-%9Yf2FL{LX>>r7P2 zAqgG8<)_{n`h!vEXaGbRF?F1Mh4WxBgPF${gW8O3#lqBY?dFsU2D*FQ%59m#)&Ho# z=InAfU`kMw^`JISQj>zKPfVox#J#SU#xKkCjR=1CTL~u%f}}|OERo<)hx0vmcwY+Z zfKG65;mbRlrJByFF1eaxxKbY@3p_ z6`0X9xTCi26U}e!Y7w@fFZ5@PN{m3_b};1jF4@V=)F1mX`eJl&4y*>+Sx|05rk-{^ zynsO_BS^2wJ#j~_Qa-i!tAl0BvbOK=^CnvDBbspze{e*l9zj$5;a(M}4|A zeizSNK(1WJw|bE2WKF;zOf^O6dIK(11p57HM`8Vlqy|9Lj*WO|oT!^J+>VqJKMs9#SjhD>;VAnKD<+qBdwu(t z?O&|kQI8KEo$RJmWpkxG+#pNyzLfi;t<8_8m~%9iEkGeMTz9r%7V3`Z;vI2pCu_Rd zP;^m`T`EL7^DFV|(5wnV#yFD7lC~i(xnp|9fARaHJr;Sc$HehNfP8%6BXmRV zvQ#`7oA#us^qv)`NW4_uSW0YqS!n1a0TpdhgA=Vaqe2|6SUzQD(YIK+31+RrP%MIl z8$s-sake?Wz4hd_fpcDBPfsBJtd&aHP^=Gy*qwO=^v$&=bMuCsmCS8ZZ4!iRY}4Zr z(6;rrsI*cKN@h1_pmkjly8;lX95kp*4%o4*Iyh(}wCQ^6WYwZ?p^^D?248S2Z6i>h z950ZHVa!n-bG#U%t$|9X+WNpqd>Q&|yHftjK2pC6>Sq>p)eT3xh&Agry{9$6^<*S7OBG%5`JE3?^!P}n7ml+!`l$@tmI#k;$7APkYzToyFalbS z>CImXu*ehDdNo{Ztq;cm21;YNLLqVNaY!+M^rkJhU*Zf%l(lCCpc!e-7l(v_b4e+w zH<3-$0&Y-O-ZIqIK#DjKI?=uVI=9r>V756J*#}1Re8@?X1>i^lVT9ceeCO)km8f8_1&bJDNWneFzw3E_vh# zZcO$*r_ruG_XHBSofn6SI2B^q8pihKU@VM{HX(@WYihD8iVVFKofZJMB6Wq_6r;T+ z1b(J5>dccM&k>WQ@!UDmtK#49o~cSg(+$18+w*K|tkJ8&%Dd^h zb7MoQN-kDD(HK>{uMLkWTOMD&sC4jcgGI7#4Pm@Pjj(8?gg?`jp}Zzibrb70+YMUm z1kbV8F_OW~acfddppW!Yiet{`Mh+ytJ>w(B^%lc*VS>b^D1hjwZF5$47I3InPcHn| zb^59EINBH)3%aL|@A`)L5eVp`pCN%|FNAccFchGNJe+~Nj)@a`{?L0+oCqBv)-UDS zm>TDptme>`sV^NKXuKI*-MUO4mHNcONQ%y(^-S%sxS|!i+!mNqHuf>KHNW>vv6I!* z3uS|@)KLVw&`8NTdSF&x8x8iikk-aVS_^2eQ1;sv>kj^3iWv=1Wb{cr zV)u@Ea2PP9EcO;X)La`FgJ%yJO2~(4_W00`J-h5K^X!6jw(Vj#Z+6&(iHDbbZcBf7 z*-bpMEdQ`lSA$?XIILFc4!ZKc1HK)tPf&Mx2tqMB z7>!jcy(fqBNQaZQFCNvfn(<+c5_?SVVPE#pq&=8-WK*?&9B;ol?%q?{#ddamj4?qb z5mZ+DiRdoU#m7SUw+}ysOB-? zV|$E`jcOlONr}|R1-T?o+9-Rs+)l~*JPFYBOn38RXuD-qwkv*Z>pw1P` z_d{j~SwAk9ovNzi!ZCAsRdGrz>DC=Tp-Fvz#DrW zA9=K@^NHFxcDtFQ?E?MXWbwHsnWH>Qkgv#@qfM3qGzZ;V-er!q3OT)9N{^_IVYUrI z=L?4yWK>Wcbqu#&=U3syQoQ@r=!>&6@&L~~&bWRi{|3hOvyO!a|JJ{bHu44OqQdi- zmjt&NTHiOm+T>65eGcD6&pY^2xb>oAtt-fVC-L-S9#q%K=l3>ugiq>3#q${z_qOb5 z==Rj(B5pS!eM?N8nK_C}TAhF6wXQBrAnVHSh_Ml&@|3VtV^3qV>d;p+DF=%eLVG1a zGSEy(^&lj_%> zf`W)9`M2;w8Yd`NES|{A3gUo8_-~$Lpc9giN0LQ(h03&?{FDKIVhE3=;)%(!audXg zi*z|!Bc);^Hf2S6(rB3KMkPkdCh3x@lE{;OVRe#4mqSlkTT75|wg&+7EEDA?^>~V{ z;U{-}Dz=f9CQ8L3qxxc-i%YWF-*@uUR`Q53ia4g!7RM_3w+1kOfxv6=a!YWdKm}SI;#VD|lTauAo z`Dki-E7covp?{ZXt2MpVDz)0xQ%Xf)6&qWe8rs3e7N>@WuCa0#Oe5)Q@e-{`kG?vU z!q<4c3&FRYJLQch^4c;+VUG*LLqRIY+Rt?^J>@S@nFBc3 z`iIO36Y_Mhe{!&2a@uoLiTZ_195hymJ#jlu{^dpf-sF~@dME#+ovctGJDGo?!Dl4D zl%-i{&y>jfXXfzWJsl&|Q$0c_S1(SUAd9JzH(Bx~DMPYdOw9GYn5-bbOk)e1Q6_NJ zY?Nk0F3FLcP1xH;m8|BGS_rP%2v7d+d;L#Fw7@#0O+r)3Vbq<~vKlt(j4^cdO?O?6 zkZIV~8TGnxG(*fQ&&Iqf6XtC?eo=eaYY6gE=f)ds$~+K(mG`#My$nN9ox1wWQ%GdE zu*yxWhaPG4acW<&A=<{L!Z`u}4lLxc%Avd#EPdaH-K4JewFhr_+YKIZ5%^&ps3gXn zj-f8UeQ4Sk+6|gg`nN5ISX#$&`O?DKI!?CpSV3hvPJ|)8yX`G zAMsU!Jqq(my$7r|VwX8MbAfdsRSdP!Fx^A8UtWyq`IPic3b+_2pHg;<4k+z5YSYnm zsF$cK93h2C2~LMOr;HF1)BvOxPFl%g?ckzVQwsQ($&%N#o8qM)?^`b~@^}8I1oXdf zsgr(4*|eusr)$ySlH{2sNNr?6sU`dvmw?0;2Z0v3pxKOu_hIs>f(FEvnUsYB6Y(FZ zmH~enVuO>0VQ(jpQSE5bFl}a%TzHa-pSIe-J-Y0%`wDmWgD6m@_BPe)()v0x=bO;G zEAni>PiHc4Xs+ft%G8{)6dYXuPFy+_X0XWoAzd6?7B3VYJh9wUAqqy$4iN6?z)3io zIpYlp{y`KybmXAVo%+$e4l{K50CGT$zbn1C)?jw1DpfR37q^CF_(=rj9$-cX9`p3f>oV8v)yWk?naS7a4o<6+W~%(%#R3ECXY$7V{hY{syb} z4Z3X5V;)hiG_t;-de9c`%5&$NP0l$*|F-e{(Ah!6xw@_zpmV;SXGgdV-QWlIXcxaj z^~=;s{M5I36lGrMqF8n=S<0JX1(%b{jWWZiot!9mCgAl|hu3)&UNC+tEN*#z*Lr#n zwKbsS0chVT(0G%dobvj&Uv_du^9(;RuEw6G0f1*G=P$frO*ISlhP>Q14z@Or&|%nq zp@Bqo^8=8)LuYSuYa0%c1N^baQ}#v5z9^I1 z6|rkam4^Bf4V0X!!eDymy@DI>m4aZ+iQpd`!b7-8BF-F^Wli`@3;<3FwwhJ7mQ{Tv zkw>KpcV!#J3-RiJq?z96zQsssMsEfurRq-SjimINk%*P8D2R6i#TGC@o+s^WCsoIA z_LLlT`qUib`GeR5Pf_7wK z@f;Mdkk3xVE_{Z1=;+;8jkf=9Y<}p$aAB%I(=M-v-VNz^PVFBh6#&9>s>M6+paTCW z6#v7i>nKj$;dyIociy4X^3=;IpwFu+wUFuE^n*HZ@IWWfjLFFhmxb?hU$Q7Y{K$mp$<%Ry(XGBWt27gi)&n`>`sXQjE z;>=oJA&*KxLiC-9K{=`2A&S%~*Y{`E!^=ubPuU@RJb)Zm* zCVjQlq`n{Kj?S;YqvL0RF@>sJppP)C^?dOoj;Z(&mI#U(2=hlu8XhwwkF3+olSf`f{DI~W1J*{|DUQ-sw(tna@Og|61to}{--^I zBZyPkK)fM;Ku$iMvxyjW=W)*Bk5%<|ADDRTC&z(Ie`B8m&(;_AZr;NFL9w~`$AMER z{*k(_e=NMNmFTk0EXfv5iYygj?<&Gxp7Yc%`NepNuo?_|R4-?k?Teq#ZW&!JUg;FD zB)QI-pshI{&JdI7HHM=|s{Z$?vWN>h1Cp#Vfm|av1FkOMPk(_DMIg4^b02INv)D(W-MOnp0Tw+H(qs_Tg3tq<{Pou1k zCV-+`4uFPoI1vdRWo}I3JIdEk*&StO5`5E{#y5R6^G)YYBX&QCa5LW=^X>hUfklFS zlX`;(63hh5CBWXxh%jqJSsM>|k3XHSz_8?i&gUpIQanF03+>zf(8+X1!_477?Lz9~ zfuIX5Y#UA)(J$~P2OYSpYfKDK=F96Auso>Mj#iWyC<OBD$`!sO z5o3Qdzni3ZYyUHsiw|UH^TU3D{@mMy>4{%k>{lLsn9yr$OSHn{YNs*gzXP-X8!+H- zo%tQbHO7&y|85ts02AVv%53k`64>5Re5YrwzpQ5xTexi*_I2h43chpp5DN_Z=68Dv zxcm-r`8OSvf3v6mIl^0MfnI$vrvy}cWF*aK7*4O%DacGQIXN=<&MJLN!v!zignlY+ z;+IWvYv70mh$!lA1-&y(e z@$Z7lGZeV^_;);n=$=xu-`^)6@?>jID%$6_@??K@l+YigZ;#?CR2F602; z%Hy9#$18RJ=+VuK*Xl_4fX!?z+>@hAm+JyC1zt&~KwHFQatQtI|-aS+t$z zQ8TNs(z>$?cf}qHjDrbITl!IQf9WG9j&?{6}=!&>!QAI1d7o^R%X6?{d8WF!J2N)udNht=3l*@k*<@WdGFIjgd zZ%6%}@Rd@|A(^-Kh*C;l8D}5`6YJIXsb}C6&HbKqnKEN?!m)}O=Y_W_#Flf4mcmJ6 zObLLs)tPD7(oNBSxtp#3(l!~UJSg2NarQ)9EAYcWx#;M`S&_E?AUF}+Q5!fR;6i#Y zFR`MT73AkPScJKZGL@FPbmB$_v&Q>e$9SI`{o-m+w3E#Yo{H>Bn9tGw!8fu+^2F)K z0~4V|`eXL@h$$XMUO}fmy1s?gMVtP1YFYis9kFkS(SB*n=BOc#EBVW8Ta341PZhD zoA2Fzs}l^FdBgiAEKcYRBZ)~*$NRaZdTdg^%_ADz9i}Bajinp<%`eq&%N=^kt3)XK zjinp<-TW#20;AQZAw~^7ZY|ei*B>+k*luc$BE`_xTis*xzECbgtEkRolA*V^ddXg( zH*OzqTEVwEiCCytT4Q* zj31m0_xy5X>J>vs0e*ftn#De;Unkl5y*Fw4{Wd=TqN}=Y*G-xGa)b**SIa)}W9BrM zqfv>z(ui?>IU02vblW=P%fAi%EJvGC`q6IrhAx*QP+&i{Wv4%EE=Nub z{dN8RJ?-=ad*RVughLUwRdPuV9BXg5QK(~hEP6sIUSxX)wMeseS10?Ok z)`#u<-sUz2bsZ-n&9-e7{r!La6|TQ08B{zmlx(3jc{2GyYXIuMqYa4XNJilr>-F^t z>G*dYDrMmz!wU@&O$VSOKh}jY*p&KW)k$7hG@0SkXM3H7@y!dEDT4rX{B9faFuF2Z zc#ahzSCti>?l0VdhFO5`Cjyg1R98`vZMsm!Ly#HVgY;C}_^l`zRAuo^uf<$PC&>y! z)s_>Pf=~|-9=)mIZEU-4F0x(WSN1mi?2bB#?athWlGfra@Bq>xXlzRhKp^Le5ye+E z&nlR0bU-hrsyvmcM$i#FbCYkQzhAMN-AC64P|3Kh`mT<;)mOs-(9;~k-iF6AZta+^ z{H@7L@K|XwL2Cj(wKLl1C^||(Q4BRX2qhjW=0u^U77|l7d?`bw-lv94jTN5LSR|Y( z9*Lnm^hW-u>p49}>8{5&4xDYw#$m*KSi?3`Q|5uG;=wOkxO&#=@a1K7fQlYp09pL- z6dhk#Lkf16{=1r^k>{BP4Ra37ayXJPfH92?)Uz1IcLMrYd3iC7%yPBT*NKW7`5T+! zqjdGn^t{HjTK5!m+iG%Ah^=s|2U54qyuS!8P&U&ugA=DMQ?3wxSl_7VaMXn!`zY8 zI~qC`B-;OQ3-p(}fxpRE+g3LKhGC)yF|e^sfNvG8bV#fmR98*qSW{56voW{uj67|B zBZQ$?I5L4&aDm!VQ7`<+N>MNT?I+;m;J~=`pDJFz@R()Jj6aJM=!DTSEl?TJ!^GMo zpbzXPemE*fN2NnEtGv<6D(27rC7;W!o2xL64~n-qFKyf0nJOFkFe}G==&Il7NL9-^ z(6cZ{4HdG~2dk#O4n!`Rhvv^QOAQ(3Y4Xza}!Brl<&E6ces2CvP$(bstbY z#VkErPV(A8EpOQ!{YsU)ZZ0Qxjdq3M?%Tm*{~S}%iq3EO1K0G3xVfANHrcH=oZsoz za#C2o{~0fAm+amqdygg?dRr?wYH}dSRr5XBLPW0;cyYA%N?~g*QJCQ_TZ0K@1 zfh)96wd{HWIIE+YKdBP#t>uKR>0Nf_qtSBW*7UC9Imhf-{F65^0bn`0wD>4yirTl9 zqg1aL1;xKK3Ha7>R1CY4vQYiWL!}z}T#kfc>!CsEES8?^cY8T1h8G#QnnR-g@)$`q z^tl`jqnD>hU#592N4I+H>ZA?@_B{)Ex0fSZJq$X>bV*dND$UT}ax@EA8n@?-;G~OC z=V-E_*X797LcON#%kAZe6uy6lsjUXE{O_0tvmJ)Tw=prVObP zQ*Sdn%h9@UdBWN=_ zO^uuNVRt!-HnUe$$Qv7Gy1OLJp@&1crL&D%nxVhtXbua(cI7tDg4UQyNtB61BFoVG za^z=(R+QX?N$Xc78hTug{&2r2=i=#A6E!5W481Q$gvR}GICi_pd0ctJp5I3$kx(0f zDcdlLU5;*H`-Ur7G}+MWD+$-2>yA(z@_i(R zV%@*%yXw3%a4phP+L`y^m1HW`SE$`Q`{PqUC?2E}? z9A8OTOx>vo@)SciZ>1!&x-snFy|)sKWIticMc)gCKHf?tI| zO}zJ3f}yM>BsD}&=&%ny$(&T|*n2DK==vJ#h#%=)yp>k4#}T!Y*{7j{w~`7f!tl{B zJt4NADZhAaT<}>P#-c_WI(sX*Fmy(fs3pFkpSRM9nf=VV7{1oJe6b$Q8t$*PD_^Xy zFC*i1@U_O|va?ag>v@U{b}9GlhRlf4)X`gMhN&a;2`~y%yLv03Fm>f|tFn}?-bye` zUHJ?PQ+j$U3Zw^9sKN66BocJx+iVeH87`#pD%+SgkthPkh>mDs(5 zZmm-}%hR8&DGj-cmKK!&a-r_AB%HKWf8E=#Ys%m7w4ZS zxdgwcu4A*+5YLpHS6WVBvhtzIFe2X8Z8cbKYOO8{bPC z|ITgfHx3T}+W0H`{;$6ZfBo{;(O>I-UH^6S*Z(5_^IyfxKmL06*WkG_-MCqQKb~ko zk}KX55N)d|SEot6ZS%Fsae!p3Ofj-p89NhQl+0=-3ip*J(5S1SKj?a=|2fK_5AFi| z%S&yWORdsUtD@A7X#9XD?8*dDXYukPl0Kx2XD=mv-<-ZF7woilmXTOJ>cAy| zk_;a%J$G)GdN#1FzsLO!oFHAVy+ZMA1(&|C^6vS!dacTF%)gxgc1(*a9rwXonFM3> zI(-+6Mp!&paog<`cLh5?`rDpPhaQ@=G-C?<4D*{m0P&|N9^qQEMQ)elhb0UOXW2!Y zveNs4dyp@?W5S__PGHCLj>#8LLx$NE8B7J;IW#qp&soPcH*wW=hWCMe2DuE z*NbfJB}SXyNembEeRQPx&Fw;T*4xQ;b`$LYv9RMl(*-5sWKPgFPG)k2s3&o;6bvDz zku5rFvj{ZH*@T9&&!SIMOJ8|=%IA{U`C@OrylA9A_b(sm5^bTHN2~clG82~cq!Xzi>w(dJ2n4v9eT74Qn2LAG)4P4M-R8ND9c#UQ@% z0>e#+sNC739si7tN95+U3NEP^y3)g$^;nYivprZ4RV`@k);z?f#~8l z^~2wq$jP$B_aiN6+qFpncWh(FGFF|Bv64Rk&;$FqxxUULC$U_N3X(s9A?6D7_vX>D z{JpidX5rw0=B}^PU?|1rL2~G8YXg3co^{pcon6Iyk*lGp>2=2;SES+($r|R4m;{P+uBY#cM(bYBQzX^KSx@H_Y$>(ow;-%i!bJ@w=I2rhxA(-%`etPNTAq9VArnYta@?sg9y>*_a zc6?qRe&W2IfS(VcxiVV9__w|{g!Occ8BsScw~@Q<3E#;~UUVW%yMsrlc9Ie7Lz*|1H`}o)-S;f$09BIjkt!(fnXoGjc z$T6G=KzgS5M@$Rr(e&G_7`8pd9e)zrM_3Ni^>XIHBAD-E(!}kbx6mkd`sDZ9a}f8e zTsftfi$56Zp4BQR9C_JKmV8;OT{U>#Cgf?~3cqEqM!eqpdD9I$!6Sd-R`1TJVh=c? zNlEXS|D02DB0Ky|2=2!NRnf}uw{+UBu$azh?sQHQ?sQIR%yQIS9tM4UPVF)` zMa=Pk=F0#s2$pp+x3{YIG}3!IN%V9wyQh=jv7d=bVmEhwB1x%F`mGZ$Y{88W1~H3h z0NC+Oeh1W^gcgF!GHg(qIuop|kXAHBPde5&T+Oz2@1 z9l&j5>f2h}83eF?G!OUZYOgLr$uOKi0qenUu?g^~l3VQf9!dVFJm}ES<3$#?k3ffib0l}y@Q0~rI zUmjn5s3Mt@=`aXJq4bP%A_D1X=Z98HdFYwQ(NHHe4vkxQ!d62vxGN`9SYUwLY5UG& zvu5oM7(>QLL~U56g>Wh`X!4kv2@Malet|=KLPkt#FH_{|!k~>R5Kt>Uwoxq;xL?*MM~K zflC~eZ2rlO#JYxTib4=CV2{ElYG%mN%oI>1Ozl=J$Dj7T|hKyk_sl&>)!`Cau$ z$sVG)E;ycn2?h=Ej;q_anlB|xJ3BX5shqzAEy?J@LzL`=^L!Mr$9XNLd$H(Ty*uB*0pIRB; zke<<^qTO56zoq>=xxQ61yn#J9IpRr?@$p-*-!7aG>i?xMnA!!)RMfeS76T3>+Q&pY zAW!-A;Z}ovmT~?9$0Ausd`<*{P8_*>)Ke#I$rT(8zh9$l$fhqf)KL<3_GM-MRpvm! zu*n;3ffy@r5nl=V-N{PRTLIL>2b>k2>#eve(wr1vc~7|qe8b@bok;g3j%7QCCnPd* zq=mRu$t21M& zszib`BYt z^F!-cqRu4S^>3*_5@XXx^9C|6fgE4@oC}8a$1dp0|1<`f6F&aQiifw)HqL|(75dRe zsq>bTqtzTL8JuDuY`TCp6kS`p&wjZqL)w?2Z#A<+-VZuYiCiEb0| zwEr3?4pN|Kt*$n+FkjKj%L^t1-L^mr=Gzm1VRRK4x zX#qOkeiU$W>keYF4ULBUgiBW$MT<UEuu+YI8Sz|@075d^S-(OsE`t2^N*k#7VZ@2_FvZJY<5*$dhz z|7+LABkCB1Z7D#=$1H|$d+^!{V9YBcDZ|;p7>X+=GN!C(jE*OZ5VOiQsXF5s@Z+U8 zQ?PmkM5ro6Nmc7=#vE+hPva>W9s8Wx=t&zW3r5+41+#8 z2aNbWmJpDuKsheENWI0r);#FJuCCf-kv2~I?erE%SYL9j0&>-bY&~A?^WgXy;``w5!`o8 za{{`yR>P<5o;C+IL@kr~Z5sDSkY-t>`8)qglMD8l<2EJ>eQh-L5Kuo7(}Yh42mYn4Ej;7a(sKnE%&?V3SdK^uKqpcz%HR& zxQ72+I1w7lBUskqIQlrjeU_rM&fyb{T1m;A*vHKG__>|%qM5hJSLVq#OP$$ufRkczNO6YN8QI*nizRkf{R+rT z3nb)cxY>1*zf?joWwTJ~;9@WjKd@UGvF~bB5x^*yEV8pbL6c%&uuP)hZYJMNikNaPqGZ591`B^3p7;xhAgnb z3;5wzfRu+rLau0EXaKk6S3+_#l3obcd{ESL@ zGC0SgeKl~C1&6H4pRJapI zSx7gApOr_O8kH9EB5$i9RHjk}T%FoUPU4lIlzVVFP@4DdPXlF0qr9^|f?Mu5xnwwc z0d%tlu>dd!S$7PO8Uv$bghz2E^PDSUP=OQ{H54S5-EA0Hfg7u)9ZqG_WbEv%-^IZm zXZ?@{pn?UA-E$NRw?LoK1K<^X;zNYn?TY!P-6y86;eRgzxaxixP}n2yc13xQG7C14 z9kLLsqfyXbTPyRxJ=p=@OemYNtSd)m0Pl)ITE$UaNsbCo>?$j1I6mEU$3UK~7{SZf zQhmDWBs$dD(ozcljl(ZRS@oJzN^+p=c*9o^>%uv_NZVm@pjDf-T@!8B(3^MH9fV$~ z+qJ|wC?JOc#!*V(GB?YX%E5RR@b`r28C&-J<;#~nNFjf{fm0Z zPb*En0lVtoPL5flg$(N?LtrR(eRK^Jsx+)o?*PMlU&!QCNAI8`H*GGP+{zC)31DBF zl=x&w0Q=By-52o5?Af@0R8LFWiqKm&o28b5?7CWUn_d?$)0DM_A-uE3eah}6viXfyTMNo1<3!ssLB?8{it#U-CN6pXd$XF;U*@aY=w~o*? zR3Xo>%}1R=m9jfE=dhOLSX}XLM<#(>l=G`e&QFLg;@I-Q?wnE#oL=|P`Rr<&g>Mi3x%tiYG zYBOhauZHWZx)5^#7;s#^OaU-3v_tm}zC}Oe$%!NGNzkJzOm^`JxRxhFw{2_#Sl`%T z2m@HXM7fsZWRL(K87nUhmKlv|fUpa69Gq^<9}42n0xiE0UF^dA0pu5(8r+vPfpApH zY7jl#qJ&C4&|uRTe>6%*V6{l5hwLp%O){j$1n{*iBc)m#y5fAK6xfkLQ#cZ*wsR}g z5?o(VP$wX4T_1A(q)&I3XgkA&rmrAejP;$jJ@CzrBC+8Aikgh^mPVrlb~t!Uz!Bw# zv%r4F0gbwg8S-7y-cQbVF}sb6;-z!>@*?9IeX!Z z15o;3S$@xbfsR^4X_NDXfG{2~5L^nQ zOB0`R5e&Uj6ToFf1?wFHJAO$SOgS>P*fBZjg1DQ1E$+$+v$2XxGsT#`YN6@QwLq*X z=k`L|nGwCW?C8`}^MB(_&57+R_O)OpU$eDYo&P;|_r~jXHv^bOMS`9g$UNw!9+vm? ziHpe&>9D9A!Lnm-bVoFgv-;;AibO1%z2pIvI17fVJ?qsSFG`O%LPSUs2e9}5tofF3 z63p{Gl4SPYEI;ja%kwryp8a})E6vMZMXP|j(Y9)xMV`{6(<||N9o^ z)5bSgme-Qjx12ezJU~(|e%CZ8;i|f(ij}@}+G*1Bnk`~xJ~^=qIrB0^;5NXiDvB|} zf!j~J!S8UX40*DPXNbl0;w=yu=G^R3p$0?W@BA2Jwkg*4#Oabk4`X5v+&35O?d41$ z$=8%qClv;;^JZxk-07-gRN7&EB{eD^J?G$q`@u6GMhsSb|7HGqD&_FM7x5#*-3KYMCEHr61w42=hZ1< z9i#Y$3ax|?345{Ocw^(wkZ)NG$AXfk@33&^GVmzsbtLPlH`Z3idlarQ$g-Op?J1Q@FyO+7!m zaPwWh(J4zpQ)$##dK6A$9;N?*k=G1@d!(so5Z48orBsq06FT{iS-7xwnFi&6T5zWE zizkGd6DE9%*w%e2pG;0jKFa!T?)+?~{(^=@(UeG&TzzVh6t=#XQa;Ak@BHk$7Zq6= zrlTjPO+hOY8}^6opFC`|WK9`*A}eM1qgc629IN(!@*JYX1~oTS6d`RsGmE9nEu2v& zKF{3GMloCvVMxoX_=*O^3LNVJzRZg|v*?V)o>eciz(^NpI#DTcOV2A{Z|{*kvXxJI zYx*&l^fE^2LAAl~q<><7q#>8e*9;SZbv*NP{&qbFr=39;m66JzSnJE1!SF(|OD)ueQ_^fjohmi4&N+Xi&y`$I5u`7!A@2 zylLif2UWs+=a4ZEabE#2Rc>?O6GZjG>ue66-63RWy|CpDJWDTauV>!n%o8Up zsTA@?=yKUq?=W<%UJGyuY%vFFksmFXurRmI^!%QO3{b}J zulPrPR(zwHT9&(=zu;+w)zuM|o3E|;^e@%5b75{4OXnU7R+_@!jb;bpqaDaZbK*FH z1Z&{<*$G2LHKBo;&;TZ+)#6M{7j-Hgjy-a+>t%%eRZImlvyr28m7j zl;@KcK)c0+=6!pLuRTrbB}%yO&^%^O#B0d0^gS6w{Je$G13n_I`ob?R_kwi8D~=rh zI!E7>0;Lx|lCDCqP|)?Vk1lMh4Bdw47p8?ikyhH?2=+XhiH&UHQ%AYXS*@%N-Dkrt z5E(0PGlyDzM|Le>Fp}mkEp(8}W)3a(ozQC81QMv03pu7Xe2{@VrcXwQl93K>rn1`z zjO^%Rz}BwjGGc$92;T^sPP3Z?KElaLXz&jfIG|&ZWKWeDf(4Onn@R@F5 z!;V^S)E(onMPb}Z^;NEXOTophMiM2X%~tdpcLEpmR#z+08fB-VJAmma47&6NXjhAO z+@lK0M#nuSDJpQ>xk8#%jZmACbw<8YdQ;V&Oj%FoPW8GfpAv71U)R>ovu$Dt`7a740=D#)t8>BXw58XuP$j8r;P#gA}h z#@S+p>pB`sQ`ToLYE`D%EMY^*H|d$OF$y+#yBQKOKsV7J>SMT`)z%?7 zN-gu%V^n7yw^xddDVdKZ`D(+Kal_WL8Xnov;T@+MT{o4{wLV%>R(nK_TOU)}1|;q+ z+yo1fh?S{ZG7_J1SrCLHeR2xPHh6ZXV9w8w7WD*E9|eQ3;AhMIZZ;f!#t=-^9r z9rx;`a;C3iZ)3P88C{&Pw8hk>%-JceC8kLnGR8E)0N3#Ww5xHn8NJrA@Z52qrP;zp zK85X#$l>r9Y2XcxH)3sV*)K1Vlzjd}JZXPFk+L06*~uqTa`6;YoHiljiBg12Y+MRd zxouNHC=b{=3(hk}mjF}`IgFCs6qW$vbeCn0wCTQz=i6y`h5DuXbUFS;yi_GFJCt2$L~aVtBez-izr#^G zbs9?DJ+vZVPt2uao=fFzbCH)8sa@X|9RC9ybXnaut{m}1#|4e2Or3=)PiE|5$GReQ z(k3wo$Y~ijvteizL>W4dXL|N3eZ|5Z=}=Aca-SU%WzuFQd&p*DS;n!JZmAm3q=4a% zn7dW;{oYkKt&TD^x8;_2pyCwRw4}m+<8~!wC)0=VW#GofQel6>#f|-jok>dKHyVKO z->@5jmuC)^n0ud(V;@~CS$S{UE?#g;UGDkkp9cWc6-sTLOgO%~^MGgIJOmRW9R5=& z!k#%fxQ2+OE1n&EEuJZ5*mI|SeRe~>JM#KAvp3oWZsC8Tj&QVGW`(N6QY*(oGN1oB z`=w?l>kgiZ%v=|p1;PK|n@&P#?4rNjk8bF2(QVZ?@`>cg7ZSN_1McLYK5gqOR)voqu(rWSd_9Kx zcZHP66+!oNk36!_S%6yKckEd>TRS`BmfaT#NM;V+!*U&F>}gsCbNfSC4r~@pv2DQb zk}{IL$TkuCEHr~vg0Lg?lY{pB>Y@Ud#lmH=3+#B`8)Aa+6xl*QibB;kmbt5 zRPq`b@~oOJbe+R)JQQ+%Q;Yk7f<%-ba@pbbF4@}MB1waAcMN_DwRt`?tsd?|-rk@IH1A zZ*h+^y<(aquoV;8jb}*$Tl7#HFCYnwH#?jm31qFV4n+-ITGz39dKG$aRWCce#LG@k zw&kv^xp7r}DDFmWa%3TP=7|FA3pfHdcE)!c%RO44T|j($ZEeV;Wf4D^JWV*f)H6xf zS*V8h;0-6tF_kO_XXG79KHCw==Yv%RdWDkDc0%%5g9ELtNj^(!Yc;dv^D!=6tR*F% z$)xqFCiyH;$!ASTJ~0zc`>ILuSwq1^)o#ZmpS6hOv&1ByiLvE15gY9`BKd4Mzdfl zdbPahw3QT{jtLXJxx^2dVg&Vh*@4f`R38toAB8Syx~=;=YR7ww>fcaO?=qPyI!u$y znob0^1U-YSiId`9TrxZ6c7DC6&~qG-D)x**&)(|t6DPXmAr*oD@U z`|K!!e@t4ik}Q@f7|LZd*?fndC3bY@bkg^Qo4yHn<9J0^?GIPzv#BookM?zvD*HcG zvVVQklHpw0f68$Z7yb{;!vCQX{_E2-O8?CTqT>I-GUEU7tHu9KvvlN5j{+LCo=d3t zfP27zM5$Qhm7q84m7urSD?#s7uLOy`Ip>w&_D8)E9RILa0{_*o1itZ=ATZp31NBNU zF})H5G2_(jpRRH|a{Fz!3p1fUs}0J=<^pM|uUeV7q3xC?n)r|s<7N37VPM!W^qYRy zA5GZngyUuFNT#`4N&bb3ORf8U@YwZWX-PC`EbJO|6k( z6G$HvGgh=RGs?(#UZ)}qjoc-V60s@4w;u61h6Y}X226V7F9IUhd8FZHDbP;IX_iK< zca)We^(;yjGBhvS8*F7@HBPCf9>!ra7v{ODINEG^ZS;zqQbQF8RV^CvKBWT9Q$_zX z_FMO7{*xD`lvf2*rI8!nb9*hXol-ASCR+8(g;KNXu>x8pZ`eaexgWi5H?5jhL{&s5 zr%XnRI!043vu~PBsaA?59 zF1?nAXK8+BBeAlxo7#LuQ=7A!+ImG(TeF+mennH;T2uJ;msSN#o(9VvMnDdQ-t*uy9kftZHg74DNOXzY+k|W*g%j^ z;JDjCuh#c!w;BcIhmed~7_F*wb$KHprMi#YDFG5=9;mMC-MOs^Yto}O&EY3+B4XBs zT2i1_DE0eLg=sSB^+L|~YS}!x25>iqgG5(XKd~~}Tu~qXk&XL^|J6ZJxaNs)`ZGQ8 ziPa>J%*o4R%CsOOjC{?U4CEW;VXN?<4QjUCrM#VW4CA1$oCd~WLR4X?(>`GbU`d8= zawZzC;5-VHJ4yr)A#~maet;6g7~>W5qN18yA<92w#Z-g`_j5O-(K8X9C*u5l#aK6E zW92O@GTN;-jrJ?+fQ^?zrpCN`&l~Bs5vpbcf^m%7esDbYn3{%!5}Aof@!`8&I51g9 znMEM7vp7T|qte%IL1^rztlPry5bN+3h&+nA3&7;Vt6>ts5RFBg2a>%QNL1Cup>ihc zya_P3TJ;5Bv;S(?Xyc>cVZ87>$mHV`iB?-2D(IW+eh~QR^8O7_X=>FMp@Od zurSF{o#}!sLI(43I;buNi-V~g>oxO=86@h`c?iD$zxZh8&tq$udBnSW(`qLhS!B(( z7hm&42NYC6|HNyK?>;WJA$H!lA@p9}1f6IDi$G>~amYj(r%>q!W$C79K2$!u@rc!X zc@tEk4J-ncy~UvtX`F4V$PIrkSoULJiBw-?Tj}NBwx^;kEC8U*+$%Ozq;&})F36b6 zLFNtMVRaXT4J-U+z=-OLKxOlFP~lBSXfcZ4;C{0xbm9bg(LH7CZYhEsYiSX1y@4u6 zdx=1f3b^J1EKZvB+OL2c7GDZntbs+K^a=_cX`EAN=3M6(QWmF4n{iV8TAF0+_KmdL z*wP|^dleBk^^$<#qPx;W(if&#$qttW+$%Qa)+;Exp$iJKgyeW0z_#K>jaLm`)QOB;O3mjEK7NG6TX@CjMU__#Usj^yj|=VR z4nHoqi8Zjm=wmhBwA&JGEV9*JA<&7pufZxRl%EeUah@y+m}vVM4(R8I6gK6xB<<-V z?HwcSQQ~I0IE-S$rGS!h__@G|AAF+bE1~t->$l%3{))82yI%~SUUA@wd2vLd&o^^{ z6F=5ywM8I<<=zGhR&#;LZ@=Q)Vy)7d)7PlEvf=pggtZo!Hx_%-v{}VPX8npA2W^x~ zJ?YEZ+-b*823Bu@iL-)llyS1Ei%k9%_XplAoxb_4a4t0BHwR-g3joJhZ=n;@T+=uw z_GmeGPH{QEv6(l_iPn45oLJ3iJVwCJcKCSQ^#{$s9k!D?If<+kZKYPMT*Bd_rm#eI zw#g>>kRzL>`6%0|aq*ZbjlqatKVFtzODoqAIY=dE<6(EbFHY#LomGs@liLo7@DINFuEz8f;!1Y$1)y{fPUTaL9 zPSQF}R>7Xq;9$HRrD|b-z$3HR0EB*dX(~uak9YUkGK>i!%7Xq{O}%jdFK_(O;C8Ty z$QbMM-kU%rQR|ouNgHj`E*`I~QDqGaEl7n6yvOO(Kyng5%k%?`ok`a|cAjkQe$f1Y z?vp&4w*o2N+$1|&WOIk)XAxyWS8sX3%pxf;gHB0<>HPJafa~@gn@nE3 zCDJq6syhXNvvufc&Kwdow7^~HKSZfa$Nh)sbyTS->c3E*mdR2yOZO{8JxKa|{I)h1 zZeS2n-PA/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

    #XrYK-_jHc9`%M%ShLTNhLR}vDG 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

    1cymHznq2X5QlAlCU>+AxuppswxIbya^hJ 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

    j9^hB!El?Omq1= z>Q2LW84bD&q5!9Fm{KN0rxs>P0#h4}gWCY^>Na13n*)K|wTo4oef8D6dE`B+VRZei zJ&&1B@t9!rM|_S>ThuK+b|f&nVoENcp@)GHCNL9MGwB%xXw%b1a}mb3jM&I>zwi$Z zNx86bkjy+b{8iu?F`XagszDosN<+V$jf&>IEvidC!K|CjKFC%^{?e-QZ=&DPaS1IQ zTa$KA)S(*8>Nn{Jm3OnL_QxzXa_ZnFETjElQER~@OQ&D4HD?p$4D4NE>r|5ooG88Hw1eDGG&20og z%I}$-Kh>{w56x+ZU29&Fd*f*E>EsCc>MC2dzr|1gEgEpv+wJLK+6P?j)Q3Fa+p*>h zXdqWcr>swxt_|LCw}ovo((ck%`GJ=K=4=fy~M@PfMKH=lBuD$=#oupw1m;y#lkK78xuE~M%{~myyC7D3&jfU<+zW8y2=UglHZ{{2Juf1(pENWh~ z;ct0{>M`&Ynx#5zpJ9Kl+J6%faWx)H1s0h1s#xMvG{OS>E+A-+M!;Hox#p%a*I;07 zSuE6Fd|HB0ZNG=C_fN^fI{9@{QHydPQnQtO3k!1GBg1wfndhjX=%Spc#>jnBu>+(g z%KfHQwY@r0Cq$Vm#{lI3j{PTAx#ME8w)+CJ2K+efHin%Lm}vB%9gp>(y_pbWpihZQ z^hVitK4X0%=F+R|RsZi9$89zzap3DQMcP3YVL+Kui*W3qxAwQoaX`Itl?3}OnF$}k_{}{* zvo9nW6=be8OwCrgX9d!*S4I^GkNU5W}Gy!up48 zOzy#!%A(M@ndfvVi`aM=U}ZRjiyJUpNNZ@BgBvGSmA%b1W!I@L0(%d?Wn@FtbERde zqEt+0+UH-It5FJ&N_7>pNn%apRc)W7v8C(44{fR*3Um#Ka2aQBEI&MBaGOU$Q>$6i zSI@}i8ZsKuHMkk0YI71}?-t+jQj{QWBfiYlMDgJ4w2!j>}kRk|eN0K^G33h%7A4 zX1HPlWqxEa?Prt)+sXb}IZE_Ym2lAug1%7X#6x*<8c`RqDwxudm zOM~)sziEV}#5#mi!%Q$?y|Tb* zV0o|9IZ#?cR-#PD@@02UDHsSjTV-!1keGIGYEaun*r1GN$+zuA@T!_KS!!Jfr#T3K zO=!``-SpB>Ag~oIGg>5EOP$lw&~3xmnySW>y=Ulj612!1hpiK)smY&as$SCSbPP$? zqIT+{go>gDD#G9ozSn(9|Ljik@F2T3efzTQuZ6EIuOvA<68wm+rTRDv&k{YVsvDz(^ZlBnDtleOdkI zJnzY;rkn>p)-ApwwzB)pd3NLV>bJL;zVuP`9%<8#*tBPycpAKPA>?9pv+*n4GoYgJ z+^o8_-lyl_tli0MoJ|cWIdTQrZS|+NJ1p68<_u@x@i>q?YYuD|1H!9eo3a*EU1z+u z=E8UZCFX2^XU-!7=(XIr&4cd3+SZ(jij8<3#Aa{EF9R*9ac7uGK;&P3BXBOKf%BG} zdyPhhR|fi=;Bzwf^eF^^^9AOv6kuPV>oz`(Dz3pPkx#(vpAUnF5fy}~LdV4u#I#<_ z0q3jXXQNJjS`VT5le7#iT5}4bHaCSlYK@Ya`ogrbI%6dEM4ornaW`lnPV&svtop03 zCVXf09HNW-$t`rw^hQhQTrZIpH-MZI8jzT-4S|HNw79AQ%N9~5x%J8v~wV63#w1)UbZoTnzSf89h z#S_`KJ~>9_$7sf!y~?E$RmNqEmNE#++%pzQTWMCZ5jw@Xesj5E&=$B;+DJVTP2iUZ zh8Yl_*YPn*rDOb#Qq(U}W7My=!6f+vB1x5FdG%N4qODh~} z&H>QLT?h-vi*5GPW6E`mc{($u8S?#9G8940+AJw4@16$xVg*{38kYy$E%v!|(0)Z1@k$PCS7P$7|ubo=tE8Yu=Ge&tQZ3s{`nZEI2n zRA5w&R@#tDC1wLR^tYVnuv7icn_!qgX3aN=SR4xg)GB@jE(0HF4q-q0$#=qE|EtfP zAa0LC`m0*}m<@m;35Td?kq^ApH1^><8)hwMn2R^`Rz)*ZKrWV9H;VdSf-#=}S{`8F z>U+2j8l7s1Fnc_{HrRPs9*afhRxhs-W`(KSU($dJA{^T<>_zrgvv5`HZ*=WV;}U8- z*i(gzS3gbzCzvcwBeFv@aD<*p-fX8&gTeF8B*^`us35Z1IWhYyGNNr)9EGwaQ}E))uR_zF4)5#j3r%B0K6_;TwjSe<%Fw4bDqh))c__((7pjT5EHtUi8W2(HHu1N#o+ohZZ^J%b98j>d zG%3#+h&Gtfu1S>uR!jadr)>tHus8Z!=DneH z7`LOB@Gj>jgiC==f@a`v4OI2~`a*_8@X|uI+g!Hs^O~V9WT4E`mzOD@zzoZmM~?Wpg7sQ0Z=L(c++tR3nzJF zOw|Yi7Y0lZKCLYTEF6FZM_*(cxv0%rxrF^e?XReP*Nul#@SuhK))7o+{P^-RqY9wo zu+^VYN~T!1iJWSLIbA4sekaZ36z?7)iX zwbSY&IkiX?4fHXI)F`f&m4<;4{+qP)-MI8TPmbf!%LhpF6~QR5>boE>u%jIAVi%uV zcu=cT!gjw?9VZxYB!t6pdwYsL$@I3s3^}U1pTT2{)J&8Nn9V{t zchoNGqQGDRY$qGas zc#~Ea0~NDBM6Tca3wgQXHNU{&Sd8LO4=nr2bdKbppjObCZnwNIXC zT*mN*tP&Mb+`Odb*XGcjI6xd&@=+;81|98Es>44@5%bV@~z?& z82KTWWpU=!LboM) zPa0KvXUN*JP>huQ2_`K}qfG@^a2`sL2Nz#Lp#E?|69(p0=fzN4Jyg&b$~9yw z*wyLl*aX#}6Vw>Tm+_Spr7!6#BIhq#ekgg}K3s0CE#UI|o9S-gWQ4b2pc0t%ffa5o zQ_e(-eU#bcvVVodx3#rZW&^x-Uz}gsm}+4<{5b?Uxj?5=81VTND49XcV`xAUx2(Vx zfQA2cdUEW=v^2bZoV7mO1d*PjIE*GhvR7HfqI}C1$r$vLE%mh2)6j9L$t?CvH(H({ zWQcfhCfG|5S$bQ=X%R5JQeJ z-P|mfYl9cR|58r0{=J*1-$}K@kJ}ZaRmEr}^I4{v%98DMqy4(k9)bNcKxe6Gx0mX} zDBXT<^z%NUX>Vb zD(fy;FO`teaZk}HTzq4{OeJ(=Xlm2VVNDFu^QSe&;m9;iy_Gg{j&N=CH;0TDYWRKD zw6R*=!f5)J8-Fye@Rq2#jn!4G3nlQo$LgPn`e!TU%^|CQ#_ON0tknAc8M{sTej{PZ zL}ZZ9!{KDD!b~xo{%X(t0~XVP>EFSB*YMw|T0&ngq2X`*F(qgI(d+7;QOf2>m;u!$LjVs9R$sFRbG zGUGB)d36mV)t8q~w?x}~a;deHDUj%!jpS`G41Va=Ftw4ovfxs_}1kH-(!S;+?#nsf;Y7JcEfm4JJa+ zQ{s>i@q|DlHooniUgotE zmdbDk-?K5a+&+1Y;H-#_MM9R!pKE_)R0j@^m7OA z2r5!+yD23^rp-f0O&%~~v@af7<6gzl%+;KDb92L8jaR~#5-Z*V;wD60L*LKZ>VIQD zQ0+f6W|;_yHYG4yW3T{wzPawpAv2Y&wQJNsxou;ej|s)vX{_`85Wj0!=ldeXPN7|E zgFub=mS`^6iQpJ1ic8mc1K(CwZ0uN~M>?abNY*23s_e#Q?OHBUt^EHTgSBU?0gZCU zmF50`-xW1wSumv=R+}n1AzTVz+oqUv5OcApPt?m=?x&m3k6NlL8woAUB56`abSmc7 zIK{FMHoPLKFMgaP0=WL=8hJ;`Yh$Fwk&(ua5D^|dR@=19{p zR)|zFR^DyE*f84rnPx_Rx2lnIVi^WTHb`FBHOKY zkEctx2wFcgp1m`a9n2O$syn#Nisl)S?iJs*>AM^SgA>_qEwlmkwuoGjY?Ob*x7moW z=z%lYTqj}@E{evP0Lq3%3TV<0h))2Cd6dP7Tbp__Z`W^>rNeFp8;&NHI=9VO^Pg$f z{EFPrMC$_m^O)KPoka!Wc}U0_@vZt zV$?M7I9kW8yRb{2KK{=%Z2zpc@sTCliNIvkBF-$S)ZFwZHBpd;nCht#Zb#Nx!eupw zCIv)erBEiPMXb{eOHMI@LM_6yTR5@Nq%r&`^WOMNOU{zxa4O5Ep^Sn;X%ytr47pid zxCCuKC+*(J@UV3g^nLmBlX@l6KTcX9R>DZEA0Js0X~qFOhbJzDpWe}Qf-BI>S7cyL zW|+dJ-HEN$VSXrZMwXS zmIt#S1~pQR(U^~KKY-+xi%yKt?6ms*Jx&o^2T@}O(_i)b%YiH$iaOo&sMKyAU0E$vkGCMdz^ z8y+!uvM3&UK`6~=C#Y(gb2;EsmG&H#U(vKr&`S{S7V5z)q74_ixm-!;FS#XNoa5T` zPrOQ3Tl6knrB#*tNKrE?D4JsyNf=-BA{L|vuj_>T#z3nAQpIdL1!@2~*8-$z%uuuH z_>^JWutzm3$rZV5lfjiArVR;EPMU`c{eksw_d}c-B@DSTU`u8#uE5V@-COD{QKC+&q!{e)m%36 zQOaJsuUV<3sAF>3b0%9yrR0*l=nn8GoD1uicxP2J@MFA zq~QYukjDATymxH3x@9igrd8K!mYlTp;!#U@J8*pieY9{=i$smE5b0N z4VZDGVMd$e@59j8hv#fQDiTPTaMhJ>Y)8%tvU!#P5!$rW-92!VTIe7zqv0E4nEyfm zQ%*0$6ev{IZN&YH?N7d!pIjR&R)5stcvkR2S$$Vj?CS zb8*Ob@Q9B3;l%lqyi{NQ<4@*+68l@UNdwtBQZ6YsLnv7afh{<8&~GbZ``wo=zW44* znFCqJ&7I5A)mCX6|EWeR_>aKQoy+o7k{FoJsgO`Rr;!uq@9LT&UWMB}v-aB-(JWJ< zNsFphQH2-D+@3)B^iVqP%Zt94vY2}rxb!ptWTN`5vOR}2Hc+G=i%1;NI5n^J8Pzd- zS{7V{U~%*E!tHKumi*$7Rw!;Sm8&;spmnpEo_CT3MM|r8WM4a~FWWsNk~EC5;P)&F zY-HDqeI1rJ5)TpqwnZJxa)sqQPpYXI6@N0}*9G zri{Wv(Cd!h6HM8ih3FkgdG5An!p9RysM*%aXceeuzjL=ul^jlnr-G)nW0=n!ol!Mi z5kQkuH@(<-4WSv4W`1`*%aUd@pff?=wLxDNpm$pFefPO%arAw{%m#s{fj_F{ zb>QQA8XwnB=zH0|1VL4pbk6aX>nLUqR!wL+LSZ zwCAH=nlLbM9nELBOY@LXC%`2Pjit18eZj(wGFUjhS()Z8@Ay3tpm+MSg7e>^Ekkk`GQeCL#gfdZzMBN;b=-3vCjxCX> z%S9rpuQw)sHV(VpV2m^TIGs#Tjs1-HTs=;3H;j~AKq@d9&Z0dZj-A0P35+5M%@ zOxpekTKUPqmKct8huK>+c-1qXoh5{OV_V`5=Ar3&H`DkL9U~h22|_0Y%(9z$Py;QN zl}j|o2J5@-(>N?VZrJ~s2IEH;pvHtmE*-Wl>5vPLE;;cvTGfd@2Lj`PY{bqXsT2OT z(qPZ^l>f@5S37^q^5D{TRC7nhftV%KkEPC%MVDwcd6ui+_2CvuEJ-4WV#@n?z#ql`ya z!j?NVMG!O=ybvni;!H_AbT9-kB1MbtKtP?3vC{dW*|rBqj*hC~d0IZ3k{v;e3<61|K$-q=J)<18s&&idb@JD(m$vwYR z+uIb@TeUqEb`WEg24~`3qjd}F|NPX-S&W;AGdbIS4v_4`Ul$wFy?bN zt2inA_q0-~RA97&J{VS_zUe?cPvsBi{^8Arc_W>*YX zV>q9|-t_6|vEn*Ue?M@_S! z!e62W;R}!?dNCa!ZA#I49D}YsYm@`LKg1A|KpR62k-4Jt6@P*mni$f2g&k$Sz!$bF z@D^a&5qr;jW<2^HR{qM&|JXQ5!=M>>Wt5nT$RlrdDf%`KaG8}&Lr7pyM zzF1!7ySJzB-abW&3y;Et9dsZJgBCC-V>tXTFH^D)_Yi?WfDq{Ur+%R2Wz*e*1M-8y ze%pBhsbP=*g4$(r;XmV`RgJYt$OA(Gm~?f2Wkvk_;ntuz<5HSB!ahjJ&LV4Xna1x( zFn=UH6dcW_3`SCTNG!-nAx}Ep;b;9w@{&F)@oj}(pG?5m%5 z=xTu573{E%bhQh0(a1t)?7n)(nVt+G#28-V^0PEp^x0y(!}Makd=ZBD1THT= z4CBektvxm~VO&h(Hy{J4-TdE0_@VPssPL5K*B`%L@6^wBKc6(e;uR;PngsvUTfs%T z@aTS9nMzKS0i>l6;8v57*EmT-&%Gi8!7@yJ>-4>2Oa&SH&l~p1e9z0uWxM19FL`el zluM#bB~`>#QDi+;!etUtNjF*(MQf>|by1Y=a6`m;!r@)2NWh_-T2n;;qMV+(M2XbSS0p4- z%UTnlNX=qRfTElN`WlBtVm&BmCc1CQI{g24J^gqBK7~?I*;e3lBHvz&MrHxm-JdidS5E3SwjegHj`X4qL4Jn z17mZ@lXM!RDoDR6Tt=vt5yrfMD~`tVf5>to*yA66%8H`oBJE!A#MJ@)ess?iqbEGu zu=2j`NYy7ZE}5jvd09Q4_DsQM&K7$(y|c*K7mq|?j8lLKGcd097&h=WI`g9Uuj)nG&2CCb(7>O+qy=GX!4Nb#HLwB(a4ud{(P`+Rh zH$4Er=mL$o#Tu|0s+pNSmDZ}K0ja6ntrpTviSCA%N`-}`?#vE(OWjmiPgLss@VB0S zpweB$XWb~dX4p}5&v%%0cjh>IIUXc>AJn}+PKS6+_h`on<@3)<)kJ%vLAF&UG9X9V z5o8rj+N(|Z zhGWl;{^qU#&G`p5A(+jFi>bVG?S*LWQE&0LT^Q7%df8lL%$_bqP}*F7o4+ zy75R^i8J+`*WX=DK4X-n)^HjI@o<MbY7Kj84STo-4)F7g_9jSku7NoqzR2n~3$_<( zUKbi{v&sAHG4~f8b6<_QKV!_SjRGv0^!)SfBJ5VNS}cv^MY>39dMdCr-DhY&jE2E$ zI$#TSo}dpc2aQ_UlUmsm?>#Y2xw6_2e1&uxCP`_)1ePn*>H^3eHdn*rsr^4r3FaH>z5ZCm20d?KU>7XXw z+H&^x?K_t|Pohbyzfb$A?kD~UHN>RZFe&a(BT-&_k>KN8&TO{!|9HE7Ss~@C>SdW! zu7vfm^Z;V*#809nD}725#>t4xl7f}vY1iQTyYh3yWW)4~<7kMf`p|OEx8!tgU@UpV zloSnhqo31}>fhOOXLE`aS~rZRd04#L3$5FSRJRXWx7qjQfF}0@Vp^<}C>dqpLT)F) zm;vulSEkntZ0h`GE3poOuUYrgc_u zZi03T)l8yOq*1hOQFby`Bit?%nKWUsaoT(!`I1n)ysD~cQ9PToj>JuLnNBdS zwH)+QRg2oO;elA{sx<42z~9Vr0vnMgrixYg2sDEYy=M&lT@I~PCI##!psA4_5>gQ3 z@2DzRls7kaQsmtX$3^{(u_2|*mF_l6)PldwWl<3n6N=hOE9II&FhNRW@1TA=)hG1Oss2dR{j4m#5S?nq z>?g6m&ky@Sw!T!{=6|;`Q^~>G*>GSs0Q`PHJqny|pK-C(9MEMqx$Os%FCQ}*-_mi! zCqqr+oKwenAWLPCJEWC>;1-Hx85$M z6GejW9qfL+{&aG2Og<~G^njb1o=#xc*0_V0c?AE`R?cU)=1c`+d{Pw z-rdm%-&$JC0|V6tG1wB*W)f=WrD*DjCuC3_b@b!|#;gN7yG|TT>Jt#tV2fa~(lCZv$`r|yF2wyxKfA+D zk^ES^7ZiA8piF>>bnRO;Vev=V!>C!Jw^>>`wDrb4KM-c`liVam8VTZJ+ zB}+Y*R&vhL<>?mLb8Aa~^?9@8Xe9Anq+fEC&V^;*vs@j79B}T9JZ=@tR(+6qg5WO1 z7RqY(v;UcElP9KUONx=nXj`j8# zcxzf!te}mX(1Csb;pHWe?(n)pL8gS4vHeQYgEb1}r zWi}4XJPXf!hE+hS`_^#67|r0my0^Ui89lluarK#};rmL`%v^N>vem2?n(6|tI2rwF zOk#BbMv^SZK+2p<3)RL5DV$30^Ov8T7*bkjCktoVlX!O1B62W|mzRT_$L){(>3COr zTTpL&pADjH42%)pK8r_GE}KeX`B|4QK3lrIUMuF$N-inRnnzK4cfuS$6t6}}F26=a zQmKiV!B4;H_SGuC?xvniv?p;M3&gl&8W4>769Fe%6yYdlUi?S{qdW&KPR{rIhwYYk z9NaUbLp+$=c@3>YJ;cnPL3KtAiPc2CE9L^)*_+R=Xs%lqX#$yo4#o!?wZ=dD0r#|% zH10tQg}D2DV4c#CV!aq2~o@5(@?R+LI(L3_s_fPfC;L%AK_p zdYT^<({6zzD`mGuBep6WOpfPy=TdCpJDtt( z?caudn0k@MFKlC|LDq@uoHJ(E-R6H(FRu_r-xr?|eZnd@(;mP2LkveI%?1&+VSR0ubI@uS z6>?{z@CQ!>pf*>~%i=i)(`oy`Z(f$JYz>|eS?vTomUTjE zLRHFm7vL6~_B+%_p+_yHV7u@13E|scfVX!MAI;_UTPC^p*y@IB0ZI<8g;&aL?yk;l z`v4GTJBt2WGApE=Rm%VYrQ1#BpJUj-pV>z7XTmS0LJl)Rh_4agWe@DfVOq3Kx?V$J zjb5}t?yNLFXClA)v2A3YVSzi-s=Fm#3)$PFe3zi^C*+b$i68Hb<(PP%*D=9`JCd%%tXTgtOKC^4nHy!_x9 zroWD=hJ?T*<3c5xmQ^j$>JTx2{KQ&_k^py+M z&etr~Sj>{t#V*>oplXK2U!a{RBf#pZN2BIa1p_v+%1NrN7Faa1tsc!KZ9A_`*w$NT zn$;)P8-A0&-#;XxNBfL7v(ETKV&10BjQL>DfHwO4l}J-rJaB4^Q3Ii>X~Uq}3P0LC zt3ER>Xi6J1tp!`xgL;}W&oz6rWUEFqvn^BX31uO2+io2XUbu1Gh9vZMIgMub0 zJ>v7+>FAb?`E#*r*KMO-+Ql=f0-H0}@wc@%#W2yyJcNpfyg8$H}N_jr$ za8e9Y0SZI2o-J9%k-(7{gvUZ5vs>RZgl{plOIVkP|DT@aYB_fpo!-qHrd&%OWerC2cY(n^ZytQ42l}{_ zSVkNF(hbO27KT9jo0lcB{_@Sr-+NsX)dK)f=oUQx_jYo zU6?dQUIu?G!s5E-lFFEu;v6ka6SDElu@vPRkgNJoz0q-=q^q0+ z0(Fq%;FiUOha@5US~nS)3@5T%U+;~_V&;Wfm)O~f^90l6bp${DM1GJ1_xZpZMWZQi zBv>82pC^rxk-@pJ*Lx2k;S>#xzphGak_&RVe?^{uayy*U=?ImiRS?AoaI^yXyF>+2RX1@(YR7tJYDe4CjKVMUb_d~PA~^X}o$RI_HS<~2?UtU;&cDUUk;_6<)3l0- zgIC#OPqqh5rkR*o1xsWMEa*SF&#nh7S9i$b$Q9dE=WTd%%v@7w7+c8tdFx7bOe5p@ zMU=PGWrlN6+RcR3F?7ioPe?eCSsdlM@IN;}kmE9{JBhMwSa@qy^$aM)>JiD>UagtA zrb+9D#%n2(V#ylhb1>Y;tQOSBz9$ze!hsoenKnDK`rC}^v?9y2Kt0Oh04|+iOh12u z1KdS-Obp@=Ct`Gts$qH?V6j63PodE`v!%1z6uF$50kGV~&6ZBJ8PDHdHCkS$Gwl{B zb{JNQ)Zbn+j!Y4pTR4Ndli}|TCygST(kSv_rcESBb;;_JqajkM=1qznrJ%6xEa;XdgHH z1#EUF>9eW6Xx;E+Z{}^R6(#AHH|ffhstlXTsuq<)690ms4wYMCGwmF%)$?hrWX68c zc22B?d8E|-?ZCD_xRB1XO61} zd;BxDDT6*6&(Dcv05Nk5(2hleKm42zd|qi5P7z>z{bnU+SMeHI6@HZE0~c6Hc|g>{af~n6)TlYRkQu^F|Ne^wf2{mipXq zLF%Pd&-8AA`DHNE>dY(@9%7K`Gfi6pCeCHJ3h>gN`eM7NjA)w+#|k zFBpfDqU9McX8NoFLi512biP8}k*`Z?CNkBMp@CXa*#1W)(MU^@s1m(SckOa|u$(}Bk*pnp`$qPhFziTvOjIY2u; zf1e?xbP9SBZ};3(k`2=6Jjh34Q4;$%CO%s0XPJ9Yv`Fpa(-nun%YT5gglTa`&sOrAmfE2hsIn&f~foZo={j{xMbeJ z-A&uP(}YWM$n$MuVcR)-Vjkk8dXTjdKS=Iy2^xhp{W_0IsqSB-qT?a$m~dFoqR^@_HCe!rPF6MwI=KqIUl$b%*5N57aT} z0&HbEv2(%BsR);!#rqG9fhfLC0?GJgCngI-g$Y#&PR7FE%Kw_ueNb(DcAg+HIQMeM z*aGI|VAwHoTcONhjF5K?JQc5I zMsQ^FvQ1IirdNr$u%|-W#$aW}1(Gtcqwzsg28g71$)I#q)a;wvnck-J!M>zHM)ys4 z{^4*Jp8|YE8&yifYJ1d zZVR6bl-M1Qqw%)t$?k{;1wrd{@?WPX$6id`!Nc1}oDww$D*lh6>sFl^ecZM}+JQL{ zHZ*V?v-%|>On*0^o>f?>`0_#@Gs5@?gy2qeKV&}YF0K~+S)6^psZy&am(vPE#l0J)K9L42fNmBy>P=zPjWaKb@Liit~jU zPKdk;+)wi#e2M=LdvD&?Mv^Uv{{8N!08I_Q%vV9S#A>8Yb7fWy>mboCn_^@kB_LZ! zTx|vmz0dy6Ik9I(rUZ6%_xxsV-L68Jv1P=GvoBY$IPVX2r-K2vz7JG1oTZc)7;$}C z4f}@<-u|PwShz+j1(0RDNPnP-0r6EM3O|doPKwFGD-|~92pohf1^pY5irl#BMeM^h zjQs(og6H^w_z)lUBFTi=OZPtM5vJA?0ml@nnt z3b8h$(8(onVnG!A5XR^r$&l7GiyNXi0jh20hK69&Z>xw`zCe()kn~Fi!Dsi8RSm;r zWCE36M*|{|c#xeKP~dYdF7>0L)Ivl=@aUF^5FhyHNBCST_}<(mSi`vyE+dzLU{sSV zoF`kbPux|B12-mB%r~xD-4GAUANv#k=XznA-@N^%Em59xg(QlE# zFIl1Pv39fpgftA;AR$1V{$s=os3)VsobuQ`-CYDlT!cUa>aSpUA9c-3iWvMZ1B07O z(r_711!6YF=JtOn9a{l zp<^O6?b>Nwa`AERkPK1JPxgVvZi1`lQCKeL;&S0XhsDwZKHFfU zpi-kN#bL&(Z(_FGWDnWJ$KJ6T4rOnje@)R#Wd3?ufO(>BYp}2*1TStci@5@Wzyj>` zqzyMg=GUfXiZ~_+tgKcAzZ!$0h$da&l0ptsAHxJK9!%Q`blB(K(<6-CZFya>9Q|q# zeDAl30yEc3;Jz+wof7+YbM}Z?jK1CAutird{x!JS6c@nIYXwMVaU;*ZbF*t9pP#ZO z?{X4#M|?;OUwbU(3Uy%U6hPz{+53uxpnwU4`lId+N2}cUA=QDTYxV{h?b?cjv@6f- z>WE!lhvk01ftnBculEDQnjbGOS3-E;|4{)EH^Jpa1=?Qr+ujkhY^#ig@UWs7txJFV zD;4S0lX{cB0I=fGlzpY#5ER5`H1P$Wf|=0{fDt)B-p?469Rxfs9QCQ~uGm`4-}auf zfN^|1jM#yojHoQ7pOkrGH|TXQyV27lkEKFN>=y~{g4jml#=3Sic9TT82iQKjRY%+2 zR~g=XWm<=?7w&pU10_~qsK`aC9t1%SWBf_4i|VhG?ha*#8f@XAJ-}ROD8UJZfl#4g zVfbmxPW{Aq5{&2$oeTRKVx?ii_YkqM3%2IFn(|?M?@8yM*->y$dnoEsS;h|9DZk{L znmYMZfoGqi0EdFzy3nVYb+Le2khET;D3c`PgDF$x&6Rg>Ym13XJU6l+PJ$(x1BdA4 z+5@ba+2g0;t4qI1Wq97Y38qD14g@!2lM;O}!9|YiHKbhS)>Zg3H#q;V+TfM^df_#D zoZwS`0?-_+a>g#Cf3WvRJD;?+cca^W4*J2kzY3QVlsQ8Fl- z5z%Ur7qa{Oa2D}F#Qk+?>1(ElG5xhWo+f#u?Rp_Ew_W!9tG0gQU$^xc;@C8Hl}Z0q z?zSX{pe}W;9z8|P(J+$f25nv~r=7>R&jIYSluf3@QU zdP><&7e1Cy|4yS4&y{eQQl3&is{pHlyU~A!lko0>J-l55l-UAHMDf+GS&vQm0TDU* z@USJ{g6 zj$FaN*V*dEJN9l33)P}C7E*lo|GaN4^9+VoZ@2D$82S%|_?tJ0VE(=6)9GQbh2EnU6fUBA;X|SDyA4LR#j;=(*j`Yv%EWWk(|2bwtzF8P<<sm?VUaZebkdH+hp5=Se8jE@iRr0?8-4;!^~N;&R{-HG{zhV`K3+3#ZxjT`80(aBFgq5gZji_zu9+`x$_=^w z$lZkOvMC-IW=DAlI(aZ%N*NqE2(PZ=p7EkG^X{lm8Qp0necWnKjMI-{8cZ5!CS%Rm z9K@VrJ6l*oXLg5yXzr!LkM^kHtMgsRDrNQM;jn=d{BOE^i7CwGr$Cp=;+^t7=~I~j zrKxSQz%+dYS-o_P-nZTijq!%=Ln2;^>3``AMsuAkRS^-KSe0``WFi(D>U;CuOn?3x zT+&4K7>TNVp~(XZz(~ks$0oo~?pw|-=cM1ttO#u@l0Z&ziQ z|0JfRs+V$q)D9&+MR)lpT;?>!=~&(2zY0{}wC;JgKJK*re-Tjv5&gw@;q8ddWc2bZ z&U(*ecixH$gt`lLU!>o;Zw%bCC^KT5O|)Qk7T}pwlzhmC$kIwbz(4yqh&qkO0kVZ}M-Z%PAiu?m|H|uJ_e+!+kgGKngwzm^<+{0b#jhB|x z!+_E~o!xr5o6+Dohu+uA1?c=OX`F^Zf6cCYb>-J9+51dD^c6Armx~SP!KbqK^&X#1 z*}txfh}2n2X7e0lVle*aoli_9Y8R?uzEu5ty;S}EcfWNt{=Iq~cCPN=Khq2t5OYa& zUp*TkG07*7U%lIluiR~k`+hlpR7$6Le<7oz3AI1zEG^wFEup!s6Ey}=%E{a*^llNe z&dbYUOH#}?lf=6>jF9(P)iXySYNJ)EyfJx@``(>T%*A5;O%s`(+hnI7mj=9<3KP(A^~U6Y9c0*=ut>~#5p)mRz+ec{7@LiqOyZKlzRKVW%kcw(LivwqP4u_vdYSjhAg zXVw$rXnA((vn;5oO{b{<&0%@QO$TsjATBjGA4k@f9vJ%uwwcOJVLAdn_zH{;_}4s& zSj-8T8#TK1H7r*UmdD0}8a_DoV`iO7&?JmJ@N3-lA7RBi6+t$qJ_5_*R;ZY}#Or2-}IN2x6WxkM%rP_mhvslmSSYed6hNgK}Po*P!x`=Q~|ch zD3l_VNM+EB8(Z#`vE_mnz<8y_rIBfIaf~UZ~@==hRd) zcASRPWKZ6Q&t{s{QPF09GycbXZWzCtT2JqQX1}Sli=`}($A}wr8#qh6^_qM(L}(9To{hrPaU>V{ z@b^*a0c1QS$2i(vJz#->rb<8V7){g%d0<*Hn7Z%uL@UvfL7JBCteGe+CYm7=)3jLx z7-L72QI1hJKc-)N&hp!6I*@b*ibltl#5$_Ihr}9|mYQ!7tSI5Mp$^T!^9gla^RHYS zKcI)~+HdEb(Lf%3`33;?L)1YC$N=ti022w59w_8}B&mihs7u$f$wr8h;}0LC6f_E( zw8p594ssNNO*y@9g*O#f4{<*?3JUPO`|y1{KtLt|&p4ChSpd&)k8!mPQF++bI0}Eh zK36>6E9vWBT{T)YQa{+=J?;N^v?SqdcqYMbJpz8Hoh>$+)GVMnS8@226s(kjoZ zDnx&@1UQ|8EY)swVo>$KDA8t`9MeolFTRY?)qF!LD(w4gu2uj9&*BHuIJj&|mBI~rt(DMPYc?PbQn;Qp{75P_JKu%e}e4Ysld zLIH>g1-8jH-(k+n70hq>ZgmTNKG#;+=K2;05o>I71BHjxcPp>XWa;qn?7u~Zz?`!e zlm{00ZI!PQqq6$#28dscl1k0i@WwKA*%y)1c$sn_w_C;ECgbTBfi&+!avqes$n(qQ zWRHhlAB#iW_Hvj!P2`*fCUxBJbuV~r8Ar-EvNCynkxdOm7%cqaksB#sk~&G{6eADV z6Om4zxSr^#O8X-zQLb-c%b9w$mFG(_e9qL{w&0+CKvo=f;TI7ZRt^S)iL zs4l^}8uHRY@iczNVZC(BQ--5;pR(}fFj2wsZMy?FqDcwUl`@&NJxw33$;HP3HY?lBPK{;{jW&&RW;ZFv7RD3A!=Np> z%#+j(w9HO)OO@3xvYYi0Rbo3?3!$Fa|JK#fXI3V<2s?wet zQJdD3C$T99?Yl0KOp){+CjXe-G5} zeK#Pc0lzK)QK?$x*vO!09LUXo1NATx6dhuLpDv^&opW&69Ns<(m-s`5hM z0~SSMghF8pxN6?03LC{f$rmemdSR3xJ{N<1dPr#F~3)RO)6Nbg4VPAfmL=h#a zZ_uhB`!ilEZ#mbbhBf@0R1~$yA`s`Ta zFj*^06}1%wW^&>x*TM;1p}j$~@rdctuoyRC0b*g`PZCVHSa`x80U8VjO@Ksy3i$Dg z>}Zt$Q;}fRpe;1PYR2o-_m2b4yXl$__61| z07^i$zwsH*qku`Qya{S*AEILJw($*C@z@yN7Y$AonDuUepFsKZ_AAGGg7o}#vsVN* zc1&HWaZnI*hGl7RI}?9wmy2iI=A{p7^)-jp>xj}6gKh8UkBi0Dd-X3mwzK2iy$g~u z|LMoZr@jtufjOhJ5^vqrl$QnzCnP;$crd6oMw;bN+!bIa*il#yg;88B=F+6n8yt8r zS4XKr#Wv7w3jeEorV9T15KZT?1CITEdAYjwrH1V)*NQMU8jEk_K=7^w0w;#(D9S&M z%aVhLpQ0&X%G|v*mD;cp@Jc6IG=sg3@d4Cd7$*1@np}YOw&lqae0j;`a6v=_;+srU zDL$z2|=TkzmN*8Ia5G1yVvBSr{XRpgI z(klea#4Ef?BQz?20M|fbVS*A6G#}4`Sh@HHLZ9V`IxUM4bHZ_1u0b+p^u^+D5U{As zDW(Pv%M?(GrJ_*R(zxR`8;}};$36*Hq97v3M)nZRPP_T-72Q)sKvl4>==e-|Ea_h= zw{+&0l6Ktj3B)-kD$JrIUXW6BsuWW>-NkiKcUoOIa7HB>o(8st@FAu*yk_X_C$(2C zt-V?pV}_s(=G6JypZ!0(FMsx5{_OtkjsbK}V|u++t=HQ^%l{TDtQW9sO(DO^HqjYi zrNB1VXX@{M-r9fA8}^Wk6FGY#QU0;h>qhd`{~W=gl$*_HpsXgQ2S6_oOY9dBH+T5I}|g8t&#Iul-PnZ{9FWPMeZx zLMJgE>LkWPRWhVB@Ba1J+%0v~?XD{&#x?6nKNx)m-{;GKHbAvA&v*6=kWiyVoE}$$ zI}0i}g%at{4tfj2-U7b-8!zC3iKXnUAcB^~a+cl9%tN!1f42^jM6;-Jg{*9?PR;CP zB3TFk4CN{YGGC!RqbxWoNyvZcZ6vho^@8(@z5U7`l%pyJ@dHE%+BhMS!O0Dv0>Ix> z5>pL)_RY#8v1jIypoKMP6*`NARa|0ca3R`)$vbj2!LE+aRC7xd|1ugNHGZ0fd6EUR@ zk@Q-UR|fxdVW{R`g`t`fLp9%mp_&>)HPbOv`c}3RI4Yy<3@pVY>CH; z#_c;RYvZa!luh(ycm<-I^NL6eHE9EnMG(&|L_5TE=?B5-+3DU?VO{G=$Be=P@0tga ziF=2?68E+x?tSI=XJP1hLG5ibYy6J8IAyPx{KNAOu+w+F{_{^SqyFJjeWzU8J2<=e zl%O%ITU(~}dTons{Uf<6ral^41BeVY7)2^T093r4iaKso<) zU}ilpx~QSE7lkafQ9|d5xBW>E1K_DH<21P;sDAN!R98BYBDNoyXC?2KxVJy@jAwDVVeOqRXq#1b`JIE-7pNl1?U$1&;Z&q96r9h zB%cj@RWAKD_zv^-zT>h^X>sTQXN;}$CHbr;OH1N$2``KxETqTHLfh&u*iumvfliiU zyT~z;YqEw|?D1F?e+n?;I5ubK2!5`(N9NgO>b%)q&%;7*faeuMdLQ6 zG`6!+0gE;;es1Ib727d3Es4KwX5hCQ&5k{jhm*KrHaixN&A4VaJ`**Z`7N))s;Fj} z@447I;P~@#!D3w_{dXH|)rIAM9=G2&>tulr>Cc-^qxlW~91rTPMxXzsy^i4T$xUMr z6?5Z3j)}s@#l-^ak2*xR$>|P@gJRBkZXPP;^7MZ>rcFl0+%5iJlmlujy0m%Rm)*13 zS}m*=j8@UZBd~?-0XFNBzaOlnJ%pZ3qZRB%uX|^;0ovO#T8z;x>IOH%UTC54?wz9< z>ihVf#um8tZey)nHhK`uHZa?~*{s!~9Wa|cJVfzU`TRS(mAJijqpf!v>+cecf_p4h zZZ=%aujZTPXyi8YXg7M7k1edx?e>O(0k#|BKSo1DH_7E&P2j?|AKJsj7sTgO?Eu9- zbYfre4*zjBeu}rnVfXjVH8$>Md@i&I+O6Pm6l=J)zqwJ~i8UnVW{$QG(XauOWiXgA zIkrnIF-mDAy3xHK8m=`~2E^p=`Eq47o386!3(rnH!}W)A(}_%~vzm^^A8Kb=&c4KdVdf z7!!~l?=t&t2us*pn?J__M9aZ{&4NwQ@VSu~GQQmaAXvwG#>Ar4JfI<)-gbK5V;>Hy z-2IT!)Nz#)tKjv0um)D5?FRjyvu%8{HaFkB+uCwA{ocME&KOtIsN~2yoB90CW^Q^d z+@y+=t8YRD_CZnQ>tgP|?c@LL<(PWCuSUVwl9a30l`iMh6>o{H_SW}4>=&Tbt!mW* z)O9cddAEQKc31HqqX8EO;?1^J@gHM0HH-3_!)E2(-HrYIwcXrw$~5Pq7?oxGIX}0u zyN3VR+)7~&|Czv={lkZ~EwiDEz4@@Vv9V>L@D%o@*^FJLBzv>E zyR-FS4)$hu2mhIqy-85n4E83;g2j1<#5w#k*_-m_*1OHsc)P?JclNdlo9|-H60P7y zmpAs4tunZv1gxfWL5Y1z<$_XMzLpD0tS*xaN^70Q1tm5$iwjB&p2-De3~h2jK>{8U zH`&Dry`dXmf@Cj&w6ocp#HY;7v^ZIj1Z<@97dz|kHg+5X&U2JASdqjkGFXwVJpS|R zS&_uJS*!?dF7i$@SrI{W(^wHnr?Xj+)$;1@S{5s^mdAf)vLc&#{AW&9WMzZ1B1)ek zc#-?&GX0*P86kFT-)2S<^7Fp~Gg2r6%jafB{#{rLv6tB#!%iOmnS*0U(%Lt347jYh z6(Who|3WTc1`hri1|XI2rZWHu5d7bT0eA)N{|U06_>xSrzY17vb(X&1--w|8TT`-x z)NE5SiR4phRHA{KMo9!WHMRPh^w975Nzcj_{$rD#1PXPMo)7CQ`TXubjr6Q+0CLJZ zn*Cp`{lAUY{{Ik7d;;?SuO{A2jOfm0NO?1cevR@vfwmKe^g2cJ9NOc5e+}<`Dlw91 zKb06I8n}s(Xg0Oo_1E%w(~)Uom94I`O-#K}SX*W5>jk#8vW_0KtE*ISjcu*5cUzlm z{dM^_ex=8gY1R*;;Bco-Nxtf}!@ZNeI#z1rPd^-&caH3*|ESh?%NNOqi2;;>-Sv`e z?aslpa@)NEL*R5TT(bownNDdZxG+2cdv-OyPAu698^ziW%=Wl*a09I#!u8bl45rM` z*~^L5|HTi}-X#)_)AqPkuLmO!rhFE4yK)x>gS)2k}1 zU}|pHcxoO3f2j6}L#2c>YGG_4c><5=gQ_aM3MG+Q3;|$$b70KWB?869bPoC#Iq8WU z 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

    dEfNacx(COV`@YUW-+*v8EM|b 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⪚9r%8Dz46$y1p0RI36eF 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

    85Hb8RrOiMiy>e0@*;_?={xh3T(wrs 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 literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/editor/editor.main.nls.js b/static/monaco-editor/min/vs/editor/editor.main.nls.js deleted file mode 100644 index cf71d80..0000000 --- a/static/monaco-editor/min/vs/editor/editor.main.nls.js +++ /dev/null @@ -1,27 +0,0 @@ -/*!----------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/vscode/blob/main/LICENSE.txt - *-----------------------------------------------------------*/define("vs/editor/editor.main.nls",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["input"],"vs/base/browser/ui/findinput/findInputToggles":["Match Case","Match Whole Word","Use Regular Expression"],"vs/base/browser/ui/findinput/replaceInput":["input","Preserve Case"],"vs/base/browser/ui/hover/hoverWidget":["Inspect this in the accessible view with {0}.","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."],"vs/base/browser/ui/iconLabel/iconLabelHover":["Loading..."],"vs/base/browser/ui/inputbox/inputBox":["Error: {0}","Warning: {0}","Info: {0}","for history","Cleared Input"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Unbound"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Select Box"],"vs/base/browser/ui/toolbar/toolbar":["More Actions..."],"vs/base/browser/ui/tree/abstractTree":["Filter","Fuzzy Match","Type to filter","Type to search","Type to search","Close","No elements found."],"vs/base/common/actions":["(empty)"],"vs/base/common/errorMessage":["{0}: {1}","A system error occurred ({0})","An unknown error occurred. Please consult the log for more details.","An unknown error occurred. Please consult the log for more details.","{0} ({1} errors in total)","An unknown error occurred. Please consult the log for more details."],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","Super","Control","Shift","Option","Command","Control","Shift","Alt","Windows","Control","Shift","Alt","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["editor","The editor is not accessible at this time.","{0} To enable screen reader optimized mode, use {1}","{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it."],"vs/editor/browser/coreCommands":["Stick to the end even when going to longer lines","Stick to the end even when going to longer lines","Removed secondary cursors"],"vs/editor/browser/editorExtensions":["&&Undo","Undo","&&Redo","Redo","&&Select All","Select All"],"vs/editor/browser/widget/codeEditorWidget":["The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.","Increase Multi Cursor Limit"],"vs/editor/browser/widget/diffEditor.contribution":["Accessible Diff Viewer","Go to Next Difference","Open Accessible Diff Viewer","Go to Previous Difference"],"vs/editor/browser/widget/diffEditorWidget":["Line decoration for inserts in the diff editor.","Line decoration for removals in the diff editor."," use Shift + F7 to navigate changes","Cannot compare files because one file is too large.","Click to revert change"],"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer":["Icon for 'Insert' in accessible diff viewer.","Icon for 'Remove' in accessible diff viewer.","Icon for 'Close' in accessible diff viewer.","Close","Accessible Diff Viewer. Use arrow up and down to navigate.","no lines changed","1 line changed","{0} lines changed","Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}","blank","{0} unchanged line {1}","{0} original line {1} modified line {2}","+ {0} modified line {1}","- {0} original line {1}"],"vs/editor/browser/widget/diffEditorWidget2/colors":["The border color for text that got moved in the diff editor.","The active border color for text that got moved in the diff editor."],"vs/editor/browser/widget/diffEditorWidget2/decorations":["Line decoration for inserts in the diff editor.","Line decoration for removals in the diff editor.","Click to revert change"],"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors":[" use {0} to open the accessibility help."],"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin":["Copy deleted lines","Copy deleted line","Copy changed lines","Copy changed line","Copy deleted line ({0})","Copy changed line ({0})","Revert this change"],"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines":["Code moved with changes to line {0}-{1}","Code moved with changes from line {0}-{1}","Code moved to line {0}-{1}","Code moved from line {0}-{1}"],"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges":["Fold Unchanged Region","Click or drag to show more above","Show all","Click or drag to show more below","{0} hidden lines","Double click to unfold"],"vs/editor/browser/widget/diffReview":["Icon for 'Insert' in diff review.","Icon for 'Remove' in diff review.","Icon for 'Close' in diff review.","Close","no lines changed","1 line changed","{0} lines changed","Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}","blank","{0} unchanged line {1}","{0} original line {1} modified line {2}","+ {0} modified line {1}","- {0} original line {1}"],"vs/editor/browser/widget/inlineDiffMargin":["Copy deleted lines","Copy deleted line","Copy changed lines","Copy changed line","Copy deleted line ({0})","Copy changed line ({0})","Revert this change","Copy deleted line ({0})","Copy changed line ({0})"],"vs/editor/common/config/editorConfigurationSchema":["Editor","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.",'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.',"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","Remove trailing auto inserted whitespace.","Special handling for large files to disable certain memory intensive features.","Controls whether completions should be computed based on words in the document.","Only suggest words from the active document.","Suggest words from all open documents of the same language.","Suggest words from all open documents.","Controls from which documents word based completions are computed.","Semantic highlighting enabled for all color themes.","Semantic highlighting disabled for all color themes.","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.","Controls whether the semanticHighlighting is shown for the languages that support it.","Keep peek editors open even when double-clicking their content or when hitting `Escape`.","Lines above this length will not be tokenized for performance reasons","Controls whether the tokenization should happen asynchronously on a web worker.","Controls whether async tokenization should be logged. For debugging only.","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only.","Defines the bracket symbols that increase or decrease the indentation.","The opening bracket character or string sequence.","The closing bracket character or string sequence.","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled.","The opening bracket character or string sequence.","The closing bracket character or string sequence.","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.","Maximum file size in MB for which to compute diffs. Use 0 for no limit.","Controls whether the diff editor shows the diff side by side or inline.","If the diff editor width is smaller than this value, the inline view is used.","If enabled and the editor width is too small, the inline view is used.","When enabled, the diff editor shows arrows in its glyph margin to revert changes.","When enabled, the diff editor ignores changes in leading or trailing whitespace.","Controls whether the diff editor shows +/- indicators for added/removed changes.","Controls whether the editor shows CodeLens.","Lines will never wrap.","Lines will wrap at the viewport width.","Lines will wrap according to the {0} setting.","Uses the legacy diffing algorithm.","Uses the advanced diffing algorithm.","Controls whether the diff editor shows unchanged regions. Only works when {0} is set.","Controls how many lines are used for unchanged regions. Only works when {0} is set.","Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.","Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.","Controls whether the diff editor should show detected code moves. Only works when {0} is set.","Controls whether the diff editor uses the new or the old implementation.","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted."],"vs/editor/common/config/editorOptions":["Use platform APIs to detect when a Screen Reader is attached","Optimize for usage with a Screen Reader","Assume a screen reader is not attached","Controls if the UI should run in a mode where it is optimized for screen readers.","Controls whether a space character is inserted when commenting.","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.","Controls whether copying without a selection copies the current line.","Controls whether the cursor should jump to find matches while typing.","Never seed search string from the editor selection.","Always seed search string from the editor selection, including word at cursor position.","Only seed search string from the editor selection.","Controls whether the search string in the Find Widget is seeded from the editor selection.","Never turn on Find in Selection automatically (default).","Always turn on Find in Selection automatically.","Turn on Find in Selection automatically when multiple lines of content are selected.","Controls the condition for turning on Find in Selection automatically.","Controls whether the Find Widget should read or modify the shared find clipboard on macOS.","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property.","Controls the font size in pixels.",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.','Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.',"Show Peek view of the results (default)","Go to the primary result and show a Peek view","Go to the primary result and enable Peek-less navigation to others","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.","Controls the behavior the 'Go to References'-command when multiple target locations exist.","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.","Controls whether the hover is shown.","Controls the delay in milliseconds after which the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Prefer showing hovers above the line, if there's space.","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.","Enables the Code Action lightbulb in the editor.","Shows the nested current scopes during the scroll at the top of the editor.","Defines the maximum number of sticky lines to show.","Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.","Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.","Enables the inlay hints in the editor.","Inlay hints are enabled","Inlay hints are showing by default and hide when holding {0}","Inlay hints are hidden by default and show when holding {0}","Inlay hints are disabled","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","Enables the padding around the inlay hints in the editor.",`Controls the line height. - - Use 0 to automatically compute the line height from the font size. - - Values between 0 and 8 will be used as a multiplier with the font size. - - Values greater than or equal to 8 will be used as effective values.`,"Controls whether the minimap is shown.","Controls whether the minimap is hidden automatically.","The minimap has the same size as the editor contents (and might scroll).","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).","The minimap will shrink as necessary to never be larger than the editor (no scrolling).","Controls the size of the minimap.","Controls the side where to render the minimap.","Controls when the minimap slider is shown.","Scale of content drawn in the minimap: 1, 2 or 3.","Render the actual characters on a line as opposed to color blocks.","Limit the width of the minimap to render at most a certain number of columns.","Controls the amount of space between the top edge of the editor and the first line.","Controls the amount of space between the bottom edge of the editor and the last line.","Enables a pop-up that shows parameter documentation and type information as you type.","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.","Quick suggestions show inside the suggest widget","Quick suggestions show as ghost text","Quick suggestions are disabled","Enable quick suggestions inside strings.","Enable quick suggestions inside comments.","Enable quick suggestions outside of strings and comments.","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the '{0}'-setting which controls if suggestions are triggered by special characters.","Line numbers are not rendered.","Line numbers are rendered as absolute number.","Line numbers are rendered as distance in lines to cursor position.","Line numbers are rendered every 10 lines.","Controls the display of line numbers.","Number of monospace characters at which this editor ruler will render.","Color of this editor ruler.","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.","The vertical scrollbar will be visible only when necessary.","The vertical scrollbar will always be visible.","The vertical scrollbar will always be hidden.","Controls the visibility of the vertical scrollbar.","The horizontal scrollbar will be visible only when necessary.","The horizontal scrollbar will always be visible.","The horizontal scrollbar will always be hidden.","Controls the visibility of the horizontal scrollbar.","The width of the vertical scrollbar.","The height of the horizontal scrollbar.","Controls whether clicks scroll by page or jump to click position.","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.","Controls whether characters that just reserve space or have no width at all are highlighted.","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.","Controls whether characters in comments should also be subject to Unicode highlighting.","Controls whether characters in strings should also be subject to Unicode highlighting.","Defines allowed characters that are not being highlighted.","Unicode characters that are common in allowed locales are not being highlighted.","Controls whether to automatically show inline suggestions in the editor.","Show the inline suggestion toolbar whenever an inline suggestion is shown.","Show the inline suggestion toolbar when hovering over an inline suggestion.","Controls when to show the inline suggestion toolbar.","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","Controls whether each bracket type has its own independent color pool.","Enables bracket pair guides.","Enables bracket pair guides only for the active bracket pair.","Disables bracket pair guides.","Controls whether bracket pair guides are enabled or not.","Enables horizontal guides as addition to vertical bracket pair guides.","Enables horizontal guides only for the active bracket pair.","Disables horizontal bracket pair guides.","Controls whether horizontal bracket pair guides are enabled or not.","Controls whether the editor should highlight the active bracket pair.","Controls whether the editor should render indent guides.","Highlights the active indent guide.","Highlights the active indent guide even if bracket guides are highlighted.","Do not highlight the active indent guide.","Controls whether the editor should highlight the active indent guide.","Insert suggestion without overwriting text right of the cursor.","Insert suggestion and overwrite text right of the cursor.","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.","Controls whether filtering and sorting suggestions accounts for small typos.","Controls whether sorting favors words that appear close to the cursor.","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).","Always select a suggestion when automatically triggering IntelliSense.","Never select a suggestion when automatically triggering IntelliSense.","Select a suggestion only when triggering IntelliSense from a trigger character.","Select a suggestion only when triggering IntelliSense as you type.","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions (`#editor.quickSuggestions#` and `#editor.suggestOnTriggerCharacters#`) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.","Controls whether an active snippet prevents quick suggestions.","Controls whether to show or hide icons in suggestions.","Controls the visibility of the status bar at the bottom of the suggest widget.","Controls whether to preview the suggestion outcome in the editor.","Controls whether suggest details show inline with the label or only in the details widget.","This setting is deprecated. The suggest widget can now be resized.","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.","When enabled IntelliSense shows `method`-suggestions.","When enabled IntelliSense shows `function`-suggestions.","When enabled IntelliSense shows `constructor`-suggestions.","When enabled IntelliSense shows `deprecated`-suggestions.","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.","When enabled IntelliSense shows `field`-suggestions.","When enabled IntelliSense shows `variable`-suggestions.","When enabled IntelliSense shows `class`-suggestions.","When enabled IntelliSense shows `struct`-suggestions.","When enabled IntelliSense shows `interface`-suggestions.","When enabled IntelliSense shows `module`-suggestions.","When enabled IntelliSense shows `property`-suggestions.","When enabled IntelliSense shows `event`-suggestions.","When enabled IntelliSense shows `operator`-suggestions.","When enabled IntelliSense shows `unit`-suggestions.","When enabled IntelliSense shows `value`-suggestions.","When enabled IntelliSense shows `constant`-suggestions.","When enabled IntelliSense shows `enum`-suggestions.","When enabled IntelliSense shows `enumMember`-suggestions.","When enabled IntelliSense shows `keyword`-suggestions.","When enabled IntelliSense shows `text`-suggestions.","When enabled IntelliSense shows `color`-suggestions.","When enabled IntelliSense shows `file`-suggestions.","When enabled IntelliSense shows `reference`-suggestions.","When enabled IntelliSense shows `customcolor`-suggestions.","When enabled IntelliSense shows `folder`-suggestions.","When enabled IntelliSense shows `typeParameter`-suggestions.","When enabled IntelliSense shows `snippet`-suggestions.","When enabled IntelliSense shows `user`-suggestions.","When enabled IntelliSense shows `issues`-suggestions.","Whether leading and trailing whitespace should always be selected.","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Controls the indentation of wrapped lines.","Controls whether you can drag and drop a file into a text editor by holding down `shift` (instead of opening the file in an editor).","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped.","Show the drop selector widget after a file is dropped into the editor.","Never show the drop selector widget. Instead the default drop provider is always used.","Controls whether you can paste content in different ways.","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted.","Show the paste selector widget after content is pasted into the editor.","Never show the paste selector widget. Instead the default pasting behavior is always used.","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.","Only accept a suggestion with `Enter` when it makes a textual change.","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.","Editor content","Control whether inline suggestions are announced by a screen reader.","Use language configurations to determine when to autoclose brackets.","Autoclose brackets only when the cursor is to the left of whitespace.","Controls whether the editor should automatically close brackets after the user adds an opening bracket.","Remove adjacent closing quotes or brackets only if they were automatically inserted.","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.","Type over closing quotes or brackets only if they were automatically inserted.","Controls whether the editor should type over closing quotes or brackets.","Use language configurations to determine when to autoclose quotes.","Autoclose quotes only when the cursor is to the left of whitespace.","Controls whether the editor should automatically close quotes after the user adds an opening quote.","The editor will not insert indentation automatically.","The editor will keep the current line's indentation.","The editor will keep the current line's indentation and honor language defined brackets.","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.","Use language configurations to determine when to automatically surround selections.","Surround with quotes but not brackets.","Surround with brackets but not quotes.","Controls whether the editor should automatically surround selections when typing quotes or brackets.","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.","Controls whether the editor shows CodeLens.","Controls the font family for CodeLens.","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.","Controls whether the editor should render the inline color decorators and color picker.","Make the color picker appear both on click and hover of the color decorator","Make the color picker appear on hover of the color decorator","Make the color picker appear on click of the color decorator","Controls the condition to make a color picker appear from a color decorator","Controls the max number of color decorators that can be rendered in an editor at once.","Enable that the selection with the mouse and keys is doing column selection.","Controls whether syntax highlighting should be copied into the clipboard.","Control the cursor animation style.","Smooth caret animation is disabled.","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture.","Smooth caret animation is always enabled.","Controls whether the smooth caret animation should be enabled.","Controls the cursor style.","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.","`cursorSurroundingLines` is enforced always.","Controls when `cursorSurroundingLines` should be enforced.","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.","Controls whether the editor should allow moving selections via drag and drop.","Use a new rendering method with svgs.","Use a new rendering method with font characters.","Use the stable rendering method.","Controls whether whitespace is rendered with a new, experimental method.","Scrolling speed multiplier when pressing `Alt`.","Controls whether the editor has code folding enabled.","Use a language-specific folding strategy if available, else the indentation-based one.","Use the indentation-based folding strategy.","Controls the strategy for computing folding ranges.","Controls whether the editor should highlight folded ranges.","Controls whether the editor automatically collapses import ranges.","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.","Controls whether clicking on the empty content after a folded line will unfold the line.","Controls the font family.","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.","Controls whether the editor should automatically format the line after typing.","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.","Controls whether the cursor should be hidden in the overview ruler.","Controls the letter spacing in pixels.","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.","Controls whether the editor should detect links and make them clickable.","Highlight matching brackets.","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.","Merge multiple cursors when they are overlapping.","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).","Each cursor pastes a single line of the text.","Each cursor pastes the full text.","Controls pasting when the line count of the pasted text matches the cursor count.","Controls the max number of cursors that can be in an active editor at once.","Controls whether the editor should highlight semantic symbol occurrences.","Controls whether a border should be drawn around the overview ruler.","Focus the tree when opening peek","Focus the editor when opening peek","Controls whether to focus the inline editor or the tree in the peek widget.","Controls whether the Go to Definition mouse gesture always opens the peek widget.","Controls the delay in milliseconds after which quick suggestions will show up.","Controls whether the editor auto renames on type.","Deprecated, use `editor.linkedEditing` instead.","Controls whether the editor should render control characters.","Render last line number when the file ends with a newline.","Highlights both the gutter and the current line.","Controls how the editor should render the current line highlight.","Controls if the editor should render the current line highlight only when the editor is focused.","Render whitespace characters except for single spaces between words.","Render whitespace characters only on selected text.","Render only trailing whitespace characters.","Controls how the editor should render whitespace characters.","Controls whether selections should have rounded corners.","Controls the number of extra characters beyond which the editor will scroll horizontally.","Controls whether the editor will scroll beyond the last line.","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.","Controls whether the Linux primary clipboard should be supported.","Controls whether the editor should highlight matches similar to the selection.","Always show the folding controls.","Never show the folding controls and reduce the gutter size.","Only show the folding controls when the mouse is over the gutter.","Controls when the folding controls on the gutter are shown.","Controls fading out of unused code.","Controls strikethrough deprecated variables.","Show snippet suggestions on top of other suggestions.","Show snippet suggestions below other suggestions.","Show snippets suggestions with other suggestions.","Do not show snippet suggestions.","Controls whether snippets are shown with other suggestions and how they are sorted.","Controls whether the editor will scroll using an animation.","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.","Font size for the suggest widget. When set to {0}, the value of {1} is used.","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","Controls whether suggestions should automatically show up when typing trigger characters.","Always select the first suggestion.","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.","Controls how suggestions are pre-selected when showing the suggest list.","Tab complete will insert the best matching suggestion when pressing tab.","Disable tab completions.","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.","Enables tab completions.","Unusual line terminators are automatically removed.","Unusual line terminators are ignored.","Unusual line terminators prompt to be removed.","Remove unusual line terminators that might cause problems.","Inserting and deleting whitespace follows tab stops.","Use the default line break rule.","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.","Characters that will be used as word separators when doing word related navigations or operations.","Lines will never wrap.","Lines will wrap at the viewport width.","Lines will wrap at `#editor.wordWrapColumn#`.","Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.","Controls how lines should wrap.","Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.","Controls whether inline color decorations should be shown using the default document color provider","Controls whether the editor receives tabs or defers them to the workbench for navigation."],"vs/editor/common/core/editorColorRegistry":["Background color for the highlight of line at the cursor position.","Background color for the border around the line at the cursor position.","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations.","Background color of the border around highlighted ranges.","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations.","Background color of the border around highlighted symbols.","Color of the editor cursor.","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.","Color of whitespace characters in the editor.","Color of editor line numbers.","Color of the editor indentation guides.","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.","Color of the active editor indentation guides.","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.","Color of the editor indentation guides (1).","Color of the editor indentation guides (2).","Color of the editor indentation guides (3).","Color of the editor indentation guides (4).","Color of the editor indentation guides (5).","Color of the editor indentation guides (6).","Color of the active editor indentation guides (1).","Color of the active editor indentation guides (2).","Color of the active editor indentation guides (3).","Color of the active editor indentation guides (4).","Color of the active editor indentation guides (5).","Color of the active editor indentation guides (6).","Color of editor active line number","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.","Color of editor active line number","Color of the final editor line when editor.renderFinalNewline is set to dimmed.","Color of the editor rulers.","Foreground color of editor CodeLens","Background color behind matching brackets","Color for matching brackets boxes","Color of the overview ruler border.","Background color of the editor overview ruler.","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.","Border color of unnecessary (unused) source code in the editor.",`Opacity of unnecessary (unused) source code in the editor. For example, "#000000c0" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.`,"Border color of ghost text in the editor.","Foreground color of the ghost text in the editor.","Background color of the ghost text in the editor.","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for errors.","Overview ruler marker color for warnings.","Overview ruler marker color for infos.","Foreground color of brackets (1). Requires enabling bracket pair colorization.","Foreground color of brackets (2). Requires enabling bracket pair colorization.","Foreground color of brackets (3). Requires enabling bracket pair colorization.","Foreground color of brackets (4). Requires enabling bracket pair colorization.","Foreground color of brackets (5). Requires enabling bracket pair colorization.","Foreground color of brackets (6). Requires enabling bracket pair colorization.","Foreground color of unexpected brackets.","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.","Background color of active bracket pair guides (6). Requires enabling bracket pair guides.","Border color used to highlight unicode characters.","Background color used to highlight unicode characters."],"vs/editor/common/editorContextKeys":["Whether the editor text has focus (cursor is blinking)","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)","Whether an editor or a rich text input has focus (cursor is blinking)","Whether the editor is read-only","Whether the context is a diff editor","Whether the context is an embedded diff editor","Whether a moved code block is selected for comparison","Whether the accessible diff viewer is visible","Whether the diff editor render side by side inline breakpoint is reached","Whether `editor.columnSelection` is enabled","Whether the editor has text selected","Whether the editor has multiple selections","Whether `Tab` will move focus out of the editor","Whether the editor hover is visible","Whether the editor hover is focused","Whether the sticky scroll is focused","Whether the sticky scroll is visible","Whether the standalone color picker is visible","Whether the standalone color picker is focused","Whether the editor is part of a larger editor (e.g. notebooks)","The language identifier of the editor","Whether the editor has a completion item provider","Whether the editor has a code actions provider","Whether the editor has a code lens provider","Whether the editor has a definition provider","Whether the editor has a declaration provider","Whether the editor has an implementation provider","Whether the editor has a type definition provider","Whether the editor has a hover provider","Whether the editor has a document highlight provider","Whether the editor has a document symbol provider","Whether the editor has a reference provider","Whether the editor has a rename provider","Whether the editor has a signature help provider","Whether the editor has an inline hints provider","Whether the editor has a document formatting provider","Whether the editor has a document selection formatting provider","Whether the editor has multiple document formatting providers","Whether the editor has multiple document selection formatting providers"],"vs/editor/common/languages":["array","boolean","class","constant","constructor","enumeration","enumeration member","event","field","file","function","interface","key","method","module","namespace","null","number","object","operator","package","property","string","struct","type parameter","variable","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Plain Text"],"vs/editor/common/model/editStack":["Typing"],"vs/editor/common/standaloneStrings":["Developer: Inspect Tokens","Go to Line/Column...","Show all Quick Access Providers","Command Palette","Show And Run Commands","Go to Symbol...","Go to Symbol by Category...","Editor content","Press Alt+F1 for Accessibility Options.","Toggle High Contrast Theme","Made {0} edits in {1} files"],"vs/editor/common/viewLayout/viewLineRenderer":["Show more ({0})","{0} chars"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Selection Anchor","Anchor set at {0}:{1}","Set Selection Anchor","Go to Selection Anchor","Select from Anchor to Cursor","Cancel Selection Anchor"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["Overview ruler marker color for matching brackets.","Go to Bracket","Select to Bracket","Remove Brackets","Go to &&Bracket"],"vs/editor/contrib/caretOperations/browser/caretOperations":["Move Selected Text Left","Move Selected Text Right"],"vs/editor/contrib/caretOperations/browser/transpose":["Transpose Letters"],"vs/editor/contrib/clipboard/browser/clipboard":["Cu&&t","Cut","Cut","Cut","&&Copy","Copy","Copy","Copy","Copy As","Copy As","Share","Share","Share","&&Paste","Paste","Paste","Paste","Copy With Syntax Highlighting"],"vs/editor/contrib/codeAction/browser/codeAction":["An unknown error occurred while applying the code action"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Kind of the code action to run.","Controls when the returned actions are applied.","Always apply the first returned code action.","Apply the first returned code action if it is the only one.","Do not apply the returned code actions.","Controls if only preferred code actions should be returned.","Quick Fix...","No code actions available","No preferred code actions for '{0}' available","No code actions for '{0}' available","No preferred code actions available","No code actions available","Refactor...","No preferred refactorings for '{0}' available","No refactorings for '{0}' available","No preferred refactorings available","No refactorings available","Source Action...","No preferred source actions for '{0}' available","No source actions for '{0}' available","No preferred source actions available","No source actions available","Organize Imports","No organize imports action available","Fix All","No fix all action available","Auto Fix...","No auto fixes available"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Enable/disable showing group headers in the Code Action menu."],"vs/editor/contrib/codeAction/browser/codeActionController":["Hide Disabled","Show Disabled"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["More Actions...","Quick Fix","Extract","Inline","Rewrite","Move","Surround With","Source Action"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Show Code Actions. Preferred Quick Fix Available ({0})","Show Code Actions ({0})","Show Code Actions"],"vs/editor/contrib/codelens/browser/codelensController":["Show CodeLens Commands For Current Line"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Click to toggle color options (rgb/hsl/hex)","Icon to close the color picker"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["Show or Focus Standalone Color Picker","&&Show or Focus Standalone Color Picker","Hide the Color Picker","Insert Color with Standalone Color Picker"],"vs/editor/contrib/comment/browser/comment":["Toggle Line Comment","&&Toggle Line Comment","Add Line Comment","Remove Line Comment","Toggle Block Comment","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimap","Render Characters","Vertical size","Proportional","Fill","Fit","Slider","Mouse Over","Always","Show Editor Context Menu"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Cursor Undo","Cursor Redo"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Paste As...","The id of the paste edit to try applying. If not provided, the editor will show a picker."],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Whether the paste widget is showing","Show paste options...","Running paste handlers. Click to cancel","Select Paste Action","Running paste handlers"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Built-in","Insert Plain Text","Insert Uris","Insert Uri","Insert Paths","Insert Path","Insert Relative Paths","Insert Relative Path"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Configures the default drop provider to use for content of a given mime type."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Whether the drop widget is showing","Show drop options...","Running drop handlers. Click to cancel"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["Whether the editor runs a cancellable operation, e.g. like 'Peek References'"],"vs/editor/contrib/find/browser/findController":["Find","&&Find",`Overrides "Use Regular Expression" flag. -The flag will not be saved for the future. -0: Do Nothing -1: True -2: False`,`Overrides "Match Whole Word" flag. -The flag will not be saved for the future. -0: Do Nothing -1: True -2: False`,`Overrides "Math Case" flag. -The flag will not be saved for the future. -0: Do Nothing -1: True -2: False`,`Overrides "Preserve Case" flag. -The flag will not be saved for the future. -0: Do Nothing -1: True -2: False`,"Find With Arguments","Find With Selection","Find Next","Find Previous","Go to Match...","No matches. Try searching for something else.","Type a number to go to a specific match (between 1 and {0})","Please type a number between 1 and {0}","Please type a number between 1 and {0}","Find Next Selection","Find Previous Selection","Replace","&&Replace"],"vs/editor/contrib/find/browser/findWidget":["Icon for 'Find in Selection' in the editor find widget.","Icon to indicate that the editor find widget is collapsed.","Icon to indicate that the editor find widget is expanded.","Icon for 'Replace' in the editor find widget.","Icon for 'Replace All' in the editor find widget.","Icon for 'Find Previous' in the editor find widget.","Icon for 'Find Next' in the editor find widget.","Find / Replace","Find","Find","Previous Match","Next Match","Find in Selection","Close","Replace","Replace","Replace","Replace All","Toggle Replace","Only the first {0} results are highlighted, but all find operations work on the entire text.","{0} of {1}","No results","{0} found","{0} found for '{1}'","{0} found for '{1}', at {2}","{0} found for '{1}'","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior."],"vs/editor/contrib/folding/browser/folding":["Unfold","Unfold Recursively","Fold","Toggle Fold","Fold Recursively","Fold All Block Comments","Fold All Regions","Unfold All Regions","Fold All Except Selected","Unfold All Except Selected","Fold All","Unfold All","Go to Parent Fold","Go to Previous Folding Range","Go to Next Folding Range","Create Folding Range from Selection","Remove Manual Folding Ranges","Fold Level {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.","Color of the folding control in the editor gutter.","Icon for expanded ranges in the editor glyph margin.","Icon for collapsed ranges in the editor glyph margin.","Icon for manually collapsed ranges in the editor glyph margin.","Icon for manually expanded ranges in the editor glyph margin."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Editor Font Zoom In","Editor Font Zoom Out","Editor Font Zoom Reset"],"vs/editor/contrib/format/browser/format":["Made 1 formatting edit on line {0}","Made {0} formatting edits on line {1}","Made 1 formatting edit between lines {0} and {1}","Made {0} formatting edits between lines {1} and {2}"],"vs/editor/contrib/format/browser/formatActions":["Format Document","Format Selection"],"vs/editor/contrib/gotoError/browser/gotoError":["Go to Next Problem (Error, Warning, Info)","Icon for goto next marker.","Go to Previous Problem (Error, Warning, Info)","Icon for goto previous marker.","Go to Next Problem in Files (Error, Warning, Info)","Next &&Problem","Go to Previous Problem in Files (Error, Warning, Info)","Previous &&Problem"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Error","Warning","Info","Hint","{0} at {1}. ","{0} of {1} problems","{0} of {1} problem","Editor marker navigation widget error color.","Editor marker navigation widget error heading background.","Editor marker navigation widget warning color.","Editor marker navigation widget warning heading background.","Editor marker navigation widget info color.","Editor marker navigation widget info heading background.","Editor marker navigation widget background."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Peek","Definitions","No definition found for '{0}'","No definition found","Go to Definition","Go to &&Definition","Open Definition to the Side","Peek Definition","Declarations","No declaration found for '{0}'","No declaration found","Go to Declaration","Go to &&Declaration","No declaration found for '{0}'","No declaration found","Peek Declaration","Type Definitions","No type definition found for '{0}'","No type definition found","Go to Type Definition","Go to &&Type Definition","Peek Type Definition","Implementations","No implementation found for '{0}'","No implementation found","Go to Implementations","Go to &&Implementations","Peek Implementations","No references found for '{0}'","No references found","Go to References","Go to &&References","References","Peek References","References","Go to Any Symbol","Locations","No results for '{0}'","References"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Click to show {0} definitions."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["Whether reference peek is visible, like 'Peek References' or 'Peek Definition'","Loading...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} references","{0} reference","References"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["no preview available","No results","References"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["in {0} on line {1} at column {2}","{0} in {1} on line {2} at column {3}","1 symbol in {0}, full path {1}","{0} symbols in {1}, full path {2}","No results found","Found 1 symbol in {0}","Found {0} symbols in {1}","Found {0} symbols in {1} files"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Whether there are symbol locations that can be navigated via keyboard-only.","Symbol {0} of {1}, {2} for next","Symbol {0} of {1}"],"vs/editor/contrib/hover/browser/hover":["Show or Focus Hover","Show Definition Preview Hover","Scroll Up Hover","Scroll Down Hover","Scroll Left Hover","Scroll Right Hover","Page Up Hover","Page Down Hover","Go To Top Hover","Go To Bottom Hover"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Loading...","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["View Problem","No quick fixes available","Checking for quick fixes...","No quick fixes available","Quick Fix..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Replace with Previous Value","Replace with Next Value"],"vs/editor/contrib/indentation/browser/indentation":["Convert Indentation to Spaces","Convert Indentation to Tabs","Configured Tab Size","Default Tab Size","Current Tab Size","Select Tab Size for Current File","Indent Using Tabs","Indent Using Spaces","Change Tab Display Size","Detect Indentation from Content","Reindent Lines","Reindent Selected Lines"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Double-click to insert","cmd + click","ctrl + click","option + click","alt + click","Go to Definition ({0}), right click for more","Go to Definition ({0})","Execute Command"],"vs/editor/contrib/inlineCompletions/browser/commands":["Show Next Inline Suggestion","Show Previous Inline Suggestion","Trigger Inline Suggestion","Accept Next Word Of Inline Suggestion","Accept Word","Accept Next Line Of Inline Suggestion","Accept Line","Accept Inline Suggestion","Accept","Hide Inline Suggestion","Always Show Toolbar"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Suggestion:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Whether an inline suggestion is visible","Whether the inline suggestion starts with whitespace","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab","Whether suggestions should be suppressed for the current suggestion"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["Inspect this in the accessible view ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Icon for show next parameter hint.","Icon for show previous parameter hint.","{0} ({1})","Previous","Next"],"vs/editor/contrib/lineSelection/browser/lineSelection":["Expand Line Selection"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Copy Line Up","&&Copy Line Up","Copy Line Down","Co&&py Line Down","Duplicate Selection","&&Duplicate Selection","Move Line Up","Mo&&ve Line Up","Move Line Down","Move &&Line Down","Sort Lines Ascending","Sort Lines Descending","Delete Duplicate Lines","Trim Trailing Whitespace","Delete Line","Indent Line","Outdent Line","Insert Line Above","Insert Line Below","Delete All Left","Delete All Right","Join Lines","Transpose Characters around the Cursor","Transform to Uppercase","Transform to Lowercase","Transform to Title Case","Transform to Snake Case","Transform to Camel Case","Transform to Kebab Case"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["Start Linked Editing","Background color when the editor auto renames on type."],"vs/editor/contrib/links/browser/links":["Failed to open this link because it is not well-formed: {0}","Failed to open this link because its target is missing.","Execute command","Follow link","cmd + click","ctrl + click","option + click","alt + click","Execute command {0}","Open Link"],"vs/editor/contrib/message/browser/messageController":["Whether the editor is currently showing an inline message"],"vs/editor/contrib/multicursor/browser/multicursor":["Cursor added: {0}","Cursors added: {0}","Add Cursor Above","&&Add Cursor Above","Add Cursor Below","A&&dd Cursor Below","Add Cursors to Line Ends","Add C&&ursors to Line Ends","Add Cursors To Bottom","Add Cursors To Top","Add Selection To Next Find Match","Add &&Next Occurrence","Add Selection To Previous Find Match","Add P&&revious Occurrence","Move Last Selection To Next Find Match","Move Last Selection To Previous Find Match","Select All Occurrences of Find Match","Select All &&Occurrences","Change All Occurrences","Focus Next Cursor","Focuses the next cursor","Focus Previous Cursor","Focuses the previous cursor"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Trigger Parameter Hints"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Icon for show next parameter hint.","Icon for show previous parameter hint.","{0}, hint","Foreground color of the active item in the parameter hint."],"vs/editor/contrib/peekView/browser/peekView":["Whether the current code editor is embedded inside peek","Close","Background color of the peek view title area.","Color of the peek view title.","Color of the peek view title info.","Color of the peek view borders and arrow.","Background color of the peek view result list.","Foreground color for line nodes in the peek view result list.","Foreground color for file nodes in the peek view result list.","Background color of the selected entry in the peek view result list.","Foreground color of the selected entry in the peek view result list.","Background color of the peek view editor.","Background color of the gutter in the peek view editor.","Background color of sticky scroll in the peek view editor.","Match highlight color in the peek view result list.","Match highlight color in the peek view editor.","Match highlight border in the peek view editor."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["Open a text editor first to go to a line.","Go to line {0} and character {1}.","Go to line {0}.","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.","Current Line: {0}, Character: {1}. Type a line number to navigate to."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["To go to a symbol, first open a text editor with symbol information.","The active text editor does not provide symbol information.","No matching editor symbols","No editor symbols","Open to the Side","Open to the Bottom","symbols ({0})","properties ({0})","methods ({0})","functions ({0})","constructors ({0})","variables ({0})","classes ({0})","structs ({0})","events ({0})","operators ({0})","interfaces ({0})","namespaces ({0})","packages ({0})","type parameters ({0})","modules ({0})","properties ({0})","enumerations ({0})","enumeration members ({0})","strings ({0})","files ({0})","arrays ({0})","numbers ({0})","booleans ({0})","objects ({0})","keys ({0})","fields ({0})","constants ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["Cannot edit in read-only input","Cannot edit in read-only editor"],"vs/editor/contrib/rename/browser/rename":["No result.","An unknown error occurred while resolving rename location","Renaming '{0}' to '{1}'","Renaming {0} to {1}","Successfully renamed '{0}' to '{1}'. Summary: {2}","Rename failed to apply edits","Rename failed to compute edits","Rename Symbol","Enable/disable the ability to preview changes before renaming"],"vs/editor/contrib/rename/browser/renameInputField":["Whether the rename input widget is visible","Rename input. Type new name and press Enter to commit.","{0} to Rename, {1} to Preview"],"vs/editor/contrib/smartSelect/browser/smartSelect":["Expand Selection","&&Expand Selection","Shrink Selection","&&Shrink Selection"],"vs/editor/contrib/snippet/browser/snippetController2":["Whether the editor in current in snippet mode","Whether there is a next tab stop when in snippet mode","Whether there is a previous tab stop when in snippet mode","Go to next placeholder..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sun","Mon","Tue","Wed","Thu","Fri","Sat","January","February","March","April","May","June","July","August","September","October","November","December","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["Toggle Sticky Scroll","&&Toggle Sticky Scroll","Sticky Scroll","&&Sticky Scroll","Focus Sticky Scroll","&&Focus Sticky Scroll","Select next sticky scroll line","Select previous sticky scroll line","Go to focused sticky scroll line","Select Editor"],"vs/editor/contrib/suggest/browser/suggest":["Whether any suggestion is focused","Whether suggestion details are visible","Whether there are multiple suggestions to pick from","Whether inserting the current suggestion yields in a change or has everything already been typed","Whether suggestions are inserted when pressing Enter","Whether the current suggestion has insert and replace behaviour","Whether the default behaviour is to insert or replace","Whether the current suggestion supports to resolve further details"],"vs/editor/contrib/suggest/browser/suggestController":["Accepting '{0}' made {1} additional edits","Trigger Suggest","Insert","Insert","Replace","Replace","Insert","show less","show more","Reset Suggest Widget Size"],"vs/editor/contrib/suggest/browser/suggestWidget":["Background color of the suggest widget.","Border color of the suggest widget.","Foreground color of the suggest widget.","Foreground color of the selected entry in the suggest widget.","Icon foreground color of the selected entry in the suggest widget.","Background color of the selected entry in the suggest widget.","Color of the match highlights in the suggest widget.","Color of the match highlights in the suggest widget when an item is focused.","Foreground color of the suggest widget status.","Loading...","No suggestions.","Suggest","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, docs: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Close","Loading..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Icon for more information in the suggest widget.","Read More"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Toggle Tab Key Moves Focus","Pressing Tab will now move focus to the next focusable element","Pressing Tab will now insert the tab character"],"vs/editor/contrib/tokenization/browser/tokenization":["Developer: Force Retokenize"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Icon shown with a warning message in the extensions editor.","This document contains many non-basic ASCII unicode characters","This document contains many ambiguous unicode characters","This document contains many invisible unicode characters","The character {0} could be confused with the ASCII character {1}, which is more common in source code.","The character {0} could be confused with the character {1}, which is more common in source code.","The character {0} is invisible.","The character {0} is not a basic ASCII character.","Adjust settings","Disable Highlight In Comments","Disable highlighting of characters in comments","Disable Highlight In Strings","Disable highlighting of characters in strings","Disable Ambiguous Highlight","Disable highlighting of ambiguous characters","Disable Invisible Highlight","Disable highlighting of invisible characters","Disable Non ASCII Highlight","Disable highlighting of non basic ASCII characters","Show Exclude Options","Exclude {0} (invisible character) from being highlighted","Exclude {0} from being highlighted",'Allow unicode characters that are more common in the language "{0}".',"Configure Unicode Highlight Options"],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Unusual Line Terminators","Detected unusual line terminators","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.","&&Remove Unusual Line Terminators","Ignore"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.","Border color of a symbol during read-access, like reading a variable.","Border color of a symbol during write-access, like writing to a variable.","Border color of a textual occurrence for a symbol.","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Go to Next Symbol Highlight","Go to Previous Symbol Highlight","Trigger Symbol Highlight"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Delete Word"],"vs/platform/action/common/actionCommonCategories":["View","Help","Test","File","Preferences","Developer"],"vs/platform/actionWidget/browser/actionList":["{0} to apply, {1} to preview","{0} to apply","{0}, Disabled Reason: {1}","Action Widget"],"vs/platform/actionWidget/browser/actionWidget":["Background color for toggled action items in action bar.","Whether the action widget list is visible","Hide action widget","Select previous action","Select next action","Accept selected action","Preview selected action"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0} -[{1}] {2}`],"vs/platform/actions/browser/toolbar":["Hide","Reset Menu"],"vs/platform/actions/common/menuService":["Hide '{0}'"],"vs/platform/audioCues/browser/audioCueService":["Error on Line","Warning on Line","Folded Area on Line","Breakpoint on Line","Inline Suggestion on Line","Terminal Quick Fix","Debugger Stopped on Breakpoint","No Inlay Hints on Line","Task Completed","Task Failed","Terminal Command Failed","Terminal Bell","Notebook Cell Completed","Notebook Cell Failed","Diff Line Inserted","Diff Line Deleted","Diff Line Modified","Chat Request Sent","Chat Response Received","Chat Response Pending"],"vs/platform/configuration/common/configurationRegistry":["Default Language Configuration Overrides","Configure settings to be overridden for the {0} language.","Configure editor settings to be overridden for a language.","This setting does not support per-language configuration.","Configure editor settings to be overridden for a language.","This setting does not support per-language configuration.","Cannot register an empty property","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.","Cannot register '{0}'. This property is already registered.","Cannot register '{0}'. The associated policy {1} is already registered with {2}."],"vs/platform/contextkey/browser/contextKeyService":["A command that returns information about context keys"],"vs/platform/contextkey/common/contextkey":["Empty context key expression","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively.","'in' after 'not'.","closing parenthesis ')'","Unexpected token","Did you forget to put && or || before the token?","Unexpected end of expression","Did you forget to put a context key?",`Expected: {0} -Received: '{1}'.`],"vs/platform/contextkey/common/contextkeys":["Whether the operating system is macOS","Whether the operating system is Linux","Whether the operating system is Windows","Whether the platform is a web browser","Whether the operating system is macOS on a non-browser platform","Whether the operating system is iOS","Whether the platform is a mobile web browser","Quality type of VS Code","Whether keyboard focus is inside an input box"],"vs/platform/contextkey/common/scanner":["Did you mean {0}?","Did you mean {0} or {1}?","Did you mean {0}, {1} or {2}?","Did you forget to open or close the quote?","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'."],"vs/platform/history/browser/contextScopedHistoryWidget":["Whether suggestion are visible"],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) was pressed. Waiting for second key of chord...","({0}) was pressed. Waiting for next key of chord...","The key combination ({0}, {1}) is not a command.","The key combination ({0}, {1}) is not a command."],"vs/platform/list/browser/listService":["Workbench","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.","Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.","Controls whether clicks in the scrollbar scroll page by page.","Controls tree indentation in pixels.","Controls whether the tree should render indent guides.","Controls whether lists and trees have smooth scrolling.","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.","Scrolling speed multiplier when pressing `Alt`.","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements.","Filter elements when searching.","Controls the default find mode for lists and trees in the workbench.","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.","Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.","Use fuzzy matching when searching.","Use contiguous matching when searching.","Controls the type of matching used when searching lists and trees in the workbench.","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.","Controls the how type navigation works in lists and trees in the workbench. When set to 'trigger', type navigation begins once the 'list.triggerTypeNavigation' command is run."],"vs/platform/markers/common/markers":["Error","Warning","Info"],"vs/platform/quickinput/browser/commandsQuickAccess":["recently used","commonly used","other commands","{0}, {1}","Command '{0}' resulted in an error"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Back","Press 'Enter' to confirm your input or 'Escape' to cancel","{0}/{1}","Type to narrow down results."],"vs/platform/quickinput/browser/quickInputController":["Toggle all checkboxes","{0} Results","{0} Selected","OK","Custom","Back ({0})","Back"],"vs/platform/quickinput/browser/quickInputList":["Quick Input"],"vs/platform/quickinput/browser/quickInputUtils":["Click to execute command '{0}'"],"vs/platform/theme/common/colorRegistry":["Overall foreground color. This color is only used if not overridden by a component.","Overall foreground for disabled elements. This color is only used if not overridden by a component.","Overall foreground color for error messages. This color is only used if not overridden by a component.","Foreground color for description text providing additional information, for example for a label.","The default color for icons in the workbench.","Overall border color for focused elements. This color is only used if not overridden by a component.","An extra border around elements to separate them from others for greater contrast.","An extra border around active elements to separate them from others for greater contrast.","The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.","Color for text separators.","Foreground color for links in text.","Foreground color for links in text when clicked on and on mouse hover.","Foreground color for preformatted text segments.","Background color for block quotes in text.","Border color for block quotes in text.","Background color for code blocks in text.","Shadow color of widgets such as find/replace inside the editor.","Border color of widgets such as find/replace inside the editor.","Input box background.","Input box foreground.","Input box border.","Border color of activated options in input fields.","Background color of activated options in input fields.","Background hover color of options in input fields.","Foreground color of activated options in input fields.","Input box foreground color for placeholder text.","Input validation background color for information severity.","Input validation foreground color for information severity.","Input validation border color for information severity.","Input validation background color for warning severity.","Input validation foreground color for warning severity.","Input validation border color for warning severity.","Input validation background color for error severity.","Input validation foreground color for error severity.","Input validation border color for error severity.","Dropdown background.","Dropdown list background.","Dropdown foreground.","Dropdown border.","Button foreground color.","Button separator color.","Button background color.","Button background color when hovering.","Button border color.","Secondary button foreground color.","Secondary button background color.","Secondary button background color when hovering.","Badge background color. Badges are small information labels, e.g. for search results count.","Badge foreground color. Badges are small information labels, e.g. for search results count.","Scrollbar shadow to indicate that the view is scrolled.","Scrollbar slider background color.","Scrollbar slider background color when hovering.","Scrollbar slider background color when clicked on.","Background color of the progress bar that can show for long running operations.","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of error squigglies in the editor.","If set, color of double underlines for errors in the editor.","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of warning squigglies in the editor.","If set, color of double underlines for warnings in the editor.","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of info squigglies in the editor.","If set, color of double underlines for infos in the editor.","Foreground color of hint squigglies in the editor.","If set, color of double underlines for hints in the editor.","Border color of active sashes.","Editor background color.","Editor default foreground color.","Sticky scroll background color for the editor","Sticky scroll on hover background color for the editor","Background color of editor widgets, such as find/replace.","Foreground color of editor widgets, such as find/replace.","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Quick picker background color. The quick picker widget is the container for pickers like the command palette.","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.","Quick picker color for grouping labels.","Quick picker color for grouping borders.","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.","Color of the editor selection.","Color of the selected text for high contrast.","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.","Border color for regions with the same content as the selection.","Color of the current search match.","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.","Border color of the current search match.","Border color of the other search matches.","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.","Color of the Search Editor query matches.","Border color of the Search Editor query matches.","Color of the text in the search viewlet's completion message.","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.","Background color of the editor hover.","Foreground color of the editor hover.","Border color of the editor hover.","Background color of the editor hover status bar.","Color of active links.","Foreground color of inline hints","Background color of inline hints","Foreground color of inline hints for types","Background color of inline hints for types","Foreground color of inline hints for parameters","Background color of inline hints for parameters","The color used for the lightbulb actions icon.","The color used for the lightbulb auto fix actions icon.","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations.","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations.","Background color for the margin where lines got inserted.","Background color for the margin where lines got removed.","Diff overview ruler foreground for inserted content.","Diff overview ruler foreground for removed content.","Outline color for the text that got inserted.","Outline color for text that got removed.","Border color between the two text editors.","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.","The background color of unchanged blocks in the diff editor.","The foreground color of unchanged blocks in the diff editor.","The background color of unchanged code in the diff editor.","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree background when hovering over items using the mouse.","List/Tree foreground when hovering over items using the mouse.","List/Tree drag and drop background when moving items around using the mouse.","List/Tree foreground color of the match highlights when searching inside the list/tree.","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.","List/Tree foreground color for invalid items, for example an unresolved root in explorer.","Foreground color of list items containing errors.","Foreground color of list items containing warnings.","Background color of the type filter widget in lists and trees.","Outline color of the type filter widget in lists and trees.","Outline color of the type filter widget in lists and trees, when there are no matches.","Shadow color of the type filter widget in lists and trees.","Background color of the filtered match.","Border color of the filtered match.","Tree stroke color for the indentation guides.","Tree stroke color for the indentation guides that are not active.","Table border color between columns.","Background color for odd table rows.","List/Tree foreground color for items that are deemphasized. ","Background color of checkbox widget.","Background color of checkbox widget when the element it's in is selected.","Foreground color of checkbox widget.","Border color of checkbox widget.","Border color of checkbox widget when the element it's in is selected.","Please use quickInputList.focusBackground instead","Quick picker foreground color for the focused item.","Quick picker icon foreground color for the focused item.","Quick picker background color for the focused item.","Border color of menus.","Foreground color of menu items.","Background color of menu items.","Foreground color of the selected menu item in menus.","Background color of the selected menu item in menus.","Border color of the selected menu item in menus.","Color of a separator menu item in menus.","Toolbar background when hovering over actions using the mouse","Toolbar outline when hovering over actions using the mouse","Toolbar background when holding the mouse over actions","Highlight background color of a snippet tabstop.","Highlight border color of a snippet tabstop.","Highlight background color of the final tabstop of a snippet.","Highlight border color of the final tabstop of a snippet.","Color of focused breadcrumb items.","Background color of breadcrumb items.","Color of focused breadcrumb items.","Color of selected breadcrumb items.","Background color of breadcrumb item picker.","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Border color on headers and the splitter in inline merge-conflicts.","Current overview ruler foreground for inline merge-conflicts.","Incoming overview ruler foreground for inline merge-conflicts.","Common ancestor overview ruler foreground for inline merge-conflicts.","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.","Minimap marker color for find matches.","Minimap marker color for repeating editor selections.","Minimap marker color for the editor selection.","Minimap marker color for errors.","Minimap marker color for warnings.","Minimap background color.",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.',"Minimap slider background color.","Minimap slider background color when hovering.","Minimap slider background color when clicked on.","The color used for the problems error icon.","The color used for the problems warning icon.","The color used for the problems info icon.","The foreground color used in charts.","The color used for horizontal lines in charts.","The red color used in chart visualizations.","The blue color used in chart visualizations.","The yellow color used in chart visualizations.","The orange color used in chart visualizations.","The green color used in chart visualizations.","The purple color used in chart visualizations."],"vs/platform/theme/common/iconRegistry":["The id of the font to use. If not set, the font that is defined first is used.","The font character associated with the icon definition.","Icon for the close action in widgets.","Icon for goto previous editor location.","Icon for goto next editor location."],"vs/platform/undoRedo/common/undoRedoService":["The following files have been closed and modified on disk: {0}.","The following files have been modified in an incompatible way: {0}.","Could not undo '{0}' across all files. {1}","Could not undo '{0}' across all files. {1}","Could not undo '{0}' across all files because changes were made to {1}","Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}","Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime","Would you like to undo '{0}' across all files?","&&Undo in {0} Files","Undo this &&File","Could not undo '{0}' because there is already an undo or redo operation running.","Would you like to undo '{0}'?","&&Yes","No","Could not redo '{0}' across all files. {1}","Could not redo '{0}' across all files. {1}","Could not redo '{0}' across all files because changes were made to {1}","Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}","Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime","Could not redo '{0}' because there is already an undo or redo operation running."],"vs/platform/workspace/common/workspace":["Code Workspace"]}); \ No newline at end of file diff --git a/static/monaco-editor/min/vs/editor/editor.main.nls.js.gz b/static/monaco-editor/min/vs/editor/editor.main.nls.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..142ee2d58d71f52a36d748b49495993bb6b2dbec GIT binary patch literal 22855 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 literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/language/json/jsonMode.js b/static/monaco-editor/min/vs/language/json/jsonMode.js deleted file mode 100644 index e250948..0000000 --- a/static/monaco-editor/min/vs/language/json/jsonMode.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/json/jsonMode", ["require","require"],(require)=>{ -var moduleExports=(()=>{var Tn=Object.create;var ie=Object.defineProperty;var bn=Object.getOwnPropertyDescriptor;var Cn=Object.getOwnPropertyNames;var wn=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty;var xn=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,i)=>(typeof require!="undefined"?require:t)[i]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var En=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_n=(e,t)=>{for(var i in t)ie(e,i,{get:t[i],enumerable:!0})},te=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Cn(t))!In.call(e,n)&&n!==i&&ie(e,n,{get:()=>t[n],enumerable:!(r=bn(t,n))||r.enumerable});return e},Ee=(e,t,i)=>(te(e,t,"default"),i&&te(i,t,"default")),_e=(e,t,i)=>(i=e!=null?Tn(wn(e)):{},te(t||!e||!e.__esModule?ie(i,"default",{value:e,enumerable:!0}):i,e)),Pn=e=>te(ie({},"__esModule",{value:!0}),e);var Se=En((gr,Pe)=>{var Sn=_e(xn("vs/editor/editor.api"));Pe.exports=Sn});var fr={};_n(fr,{CompletionAdapter:()=>X,DefinitionAdapter:()=>ke,DiagnosticsAdapter:()=>q,DocumentColorAdapter:()=>Z,DocumentFormattingEditProvider:()=>G,DocumentHighlightAdapter:()=>ye,DocumentLinkAdapter:()=>Ce,DocumentRangeFormattingEditProvider:()=>Q,DocumentSymbolAdapter:()=>$,FoldingRangeAdapter:()=>ee,HoverAdapter:()=>Y,ReferenceAdapter:()=>Te,RenameAdapter:()=>be,SelectionRangeAdapter:()=>ne,WorkerManager:()=>D,fromPosition:()=>L,fromRange:()=>we,setupMode:()=>cr,toRange:()=>C,toTextEdit:()=>j});var l={};Ee(l,_e(Se()));var An=2*60*1e3,D=class{_defaults;_idleCheckInterval;_lastUsedTime;_configChangeListener;_worker;_client;constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>An&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=l.editor.createWebWorker({moduleId:"vs/language/json/jsonWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let i;return this._getClient().then(r=>{i=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>i)}};var Ae;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647})(Ae||(Ae={}));var oe;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647})(oe||(oe={}));var _;(function(e){function t(r,n){return r===Number.MAX_VALUE&&(r=oe.MAX_VALUE),n===Number.MAX_VALUE&&(n=oe.MAX_VALUE),{line:r,character:n}}e.create=t;function i(r){var n=r;return s.objectLiteral(n)&&s.uinteger(n.line)&&s.uinteger(n.character)}e.is=i})(_||(_={}));var y;(function(e){function t(r,n,a,o){if(s.uinteger(r)&&s.uinteger(n)&&s.uinteger(a)&&s.uinteger(o))return{start:_.create(r,n),end:_.create(a,o)};if(_.is(r)&&_.is(n))return{start:r,end:n};throw new Error("Range#create called with invalid arguments["+r+", "+n+", "+a+", "+o+"]")}e.create=t;function i(r){var n=r;return s.objectLiteral(n)&&_.is(n.start)&&_.is(n.end)}e.is=i})(y||(y={}));var ge;(function(e){function t(r,n){return{uri:r,range:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.range)&&(s.string(n.uri)||s.undefined(n.uri))}e.is=i})(ge||(ge={}));var Le;(function(e){function t(r,n,a,o){return{targetUri:r,targetRange:n,targetSelectionRange:a,originSelectionRange:o}}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.targetRange)&&s.string(n.targetUri)&&(y.is(n.targetSelectionRange)||s.undefined(n.targetSelectionRange))&&(y.is(n.originSelectionRange)||s.undefined(n.originSelectionRange))}e.is=i})(Le||(Le={}));var pe;(function(e){function t(r,n,a,o){return{red:r,green:n,blue:a,alpha:o}}e.create=t;function i(r){var n=r;return s.numberRange(n.red,0,1)&&s.numberRange(n.green,0,1)&&s.numberRange(n.blue,0,1)&&s.numberRange(n.alpha,0,1)}e.is=i})(pe||(pe={}));var Oe;(function(e){function t(r,n){return{range:r,color:n}}e.create=t;function i(r){var n=r;return y.is(n.range)&&pe.is(n.color)}e.is=i})(Oe||(Oe={}));var We;(function(e){function t(r,n,a){return{label:r,textEdit:n,additionalTextEdits:a}}e.create=t;function i(r){var n=r;return s.string(n.label)&&(s.undefined(n.textEdit)||A.is(n))&&(s.undefined(n.additionalTextEdits)||s.typedArray(n.additionalTextEdits,A.is))}e.is=i})(We||(We={}));var M;(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(M||(M={}));var Re;(function(e){function t(r,n,a,o,u){var c={startLine:r,endLine:n};return s.defined(a)&&(c.startCharacter=a),s.defined(o)&&(c.endCharacter=o),s.defined(u)&&(c.kind=u),c}e.create=t;function i(r){var n=r;return s.uinteger(n.startLine)&&s.uinteger(n.startLine)&&(s.undefined(n.startCharacter)||s.uinteger(n.startCharacter))&&(s.undefined(n.endCharacter)||s.uinteger(n.endCharacter))&&(s.undefined(n.kind)||s.string(n.kind))}e.is=i})(Re||(Re={}));var he;(function(e){function t(r,n){return{location:r,message:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&ge.is(n.location)&&s.string(n.message)}e.is=i})(he||(he={}));var O;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(O||(O={}));var De;(function(e){e.Unnecessary=1,e.Deprecated=2})(De||(De={}));var Ne;(function(e){function t(i){var r=i;return r!=null&&s.string(r.href)}e.is=t})(Ne||(Ne={}));var se;(function(e){function t(r,n,a,o,u,c){var h={range:r,message:n};return s.defined(a)&&(h.severity=a),s.defined(o)&&(h.code=o),s.defined(u)&&(h.source=u),s.defined(c)&&(h.relatedInformation=c),h}e.create=t;function i(r){var n,a=r;return s.defined(a)&&y.is(a.range)&&s.string(a.message)&&(s.number(a.severity)||s.undefined(a.severity))&&(s.integer(a.code)||s.string(a.code)||s.undefined(a.code))&&(s.undefined(a.codeDescription)||s.string((n=a.codeDescription)===null||n===void 0?void 0:n.href))&&(s.string(a.source)||s.undefined(a.source))&&(s.undefined(a.relatedInformation)||s.typedArray(a.relatedInformation,he.is))}e.is=i})(se||(se={}));var K;(function(e){function t(r,n){for(var a=[],o=2;o0&&(u.arguments=a),u}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.title)&&s.string(n.command)}e.is=i})(K||(K={}));var A;(function(e){function t(a,o){return{range:a,newText:o}}e.replace=t;function i(a,o){return{range:{start:a,end:a},newText:o}}e.insert=i;function r(a){return{range:a,newText:""}}e.del=r;function n(a){var o=a;return s.objectLiteral(o)&&s.string(o.newText)&&y.is(o.range)}e.is=n})(A||(A={}));var N;(function(e){function t(r,n,a){var o={label:r};return n!==void 0&&(o.needsConfirmation=n),a!==void 0&&(o.description=a),o}e.create=t;function i(r){var n=r;return n!==void 0&&s.objectLiteral(n)&&s.string(n.label)&&(s.boolean(n.needsConfirmation)||n.needsConfirmation===void 0)&&(s.string(n.description)||n.description===void 0)}e.is=i})(N||(N={}));var T;(function(e){function t(i){var r=i;return typeof r=="string"}e.is=t})(T||(T={}));var S;(function(e){function t(a,o,u){return{range:a,newText:o,annotationId:u}}e.replace=t;function i(a,o,u){return{range:{start:a,end:a},newText:o,annotationId:u}}e.insert=i;function r(a,o){return{range:a,newText:"",annotationId:o}}e.del=r;function n(a){var o=a;return A.is(o)&&(N.is(o.annotationId)||T.is(o.annotationId))}e.is=n})(S||(S={}));var ue;(function(e){function t(r,n){return{textDocument:r,edits:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&ce.is(n.textDocument)&&Array.isArray(n.edits)}e.is=i})(ue||(ue={}));var H;(function(e){function t(r,n,a){var o={kind:"create",uri:r};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(o.options=n),a!==void 0&&(o.annotationId=a),o}e.create=t;function i(r){var n=r;return n&&n.kind==="create"&&s.string(n.uri)&&(n.options===void 0||(n.options.overwrite===void 0||s.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||s.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(H||(H={}));var J;(function(e){function t(r,n,a,o){var u={kind:"rename",oldUri:r,newUri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(u.options=a),o!==void 0&&(u.annotationId=o),u}e.create=t;function i(r){var n=r;return n&&n.kind==="rename"&&s.string(n.oldUri)&&s.string(n.newUri)&&(n.options===void 0||(n.options.overwrite===void 0||s.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||s.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(J||(J={}));var B;(function(e){function t(r,n,a){var o={kind:"delete",uri:r};return n!==void 0&&(n.recursive!==void 0||n.ignoreIfNotExists!==void 0)&&(o.options=n),a!==void 0&&(o.annotationId=a),o}e.create=t;function i(r){var n=r;return n&&n.kind==="delete"&&s.string(n.uri)&&(n.options===void 0||(n.options.recursive===void 0||s.boolean(n.options.recursive))&&(n.options.ignoreIfNotExists===void 0||s.boolean(n.options.ignoreIfNotExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(B||(B={}));var me;(function(e){function t(i){var r=i;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(n){return s.string(n.kind)?H.is(n)||J.is(n)||B.is(n):ue.is(n)}))}e.is=t})(me||(me={}));var ae=function(){function e(t,i){this.edits=t,this.changeAnnotations=i}return e.prototype.insert=function(t,i,r){var n,a;if(r===void 0?n=A.insert(t,i):T.is(r)?(a=r,n=S.insert(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=S.insert(t,i,a)),this.edits.push(n),a!==void 0)return a},e.prototype.replace=function(t,i,r){var n,a;if(r===void 0?n=A.replace(t,i):T.is(r)?(a=r,n=S.replace(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=S.replace(t,i,a)),this.edits.push(n),a!==void 0)return a},e.prototype.delete=function(t,i){var r,n;if(i===void 0?r=A.del(t):T.is(i)?(n=i,r=S.del(t,i)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(i),r=S.del(t,n)),this.edits.push(r),n!==void 0)return n},e.prototype.add=function(t){this.edits.push(t)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),Me=function(){function e(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(t,i){var r;if(T.is(t)?r=t:(r=this.nextId(),i=t),this._annotations[r]!==void 0)throw new Error("Id "+r+" is already in use.");if(i===void 0)throw new Error("No annotation provided for id "+r);return this._annotations[r]=i,this._size++,r},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}(),kr=function(){function e(t){var i=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new Me(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(r){if(ue.is(r)){var n=new ae(r.edits,i._changeAnnotations);i._textEditChanges[r.textDocument.uri]=n}})):t.changes&&Object.keys(t.changes).forEach(function(r){var n=new ae(t.changes[r]);i._textEditChanges[r]=n})):this._workspaceEdit={}}return Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(t){if(ce.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i={uri:t.uri,version:t.version},r=this._textEditChanges[i.uri];if(!r){var n=[],a={textDocument:i,edits:n};this._workspaceEdit.documentChanges.push(a),r=new ae(n,this._changeAnnotations),this._textEditChanges[i.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var r=this._textEditChanges[t];if(!r){var n=[];this._workspaceEdit.changes[t]=n,r=new ae(n),this._textEditChanges[t]=r}return r}},e.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new Me,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var n;N.is(i)||T.is(i)?n=i:r=i;var a,o;if(n===void 0?a=H.create(t,r):(o=T.is(n)?n:this._changeAnnotations.manage(n),a=H.create(t,r,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o},e.prototype.renameFile=function(t,i,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var a;N.is(r)||T.is(r)?a=r:n=r;var o,u;if(a===void 0?o=J.create(t,i,n):(u=T.is(a)?a:this._changeAnnotations.manage(a),o=J.create(t,i,n,u)),this._workspaceEdit.documentChanges.push(o),u!==void 0)return u},e.prototype.deleteFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var n;N.is(i)||T.is(i)?n=i:r=i;var a,o;if(n===void 0?a=B.create(t,r):(o=T.is(n)?n:this._changeAnnotations.manage(n),a=B.create(t,r,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o},e}();var Fe;(function(e){function t(r){return{uri:r}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)}e.is=i})(Fe||(Fe={}));var je;(function(e){function t(r,n){return{uri:r,version:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&s.integer(n.version)}e.is=i})(je||(je={}));var ce;(function(e){function t(r,n){return{uri:r,version:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&(n.version===null||s.integer(n.version))}e.is=i})(ce||(ce={}));var Ue;(function(e){function t(r,n,a,o){return{uri:r,languageId:n,version:a,text:o}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&s.string(n.languageId)&&s.integer(n.version)&&s.string(n.text)}e.is=i})(Ue||(Ue={}));var z;(function(e){e.PlainText="plaintext",e.Markdown="markdown"})(z||(z={}));(function(e){function t(i){var r=i;return r===e.PlainText||r===e.Markdown}e.is=t})(z||(z={}));var ve;(function(e){function t(i){var r=i;return s.objectLiteral(i)&&z.is(r.kind)&&s.string(r.value)}e.is=t})(ve||(ve={}));var m;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(m||(m={}));var le;(function(e){e.PlainText=1,e.Snippet=2})(le||(le={}));var Ve;(function(e){e.Deprecated=1})(Ve||(Ve={}));var Ke;(function(e){function t(r,n,a){return{newText:r,insert:n,replace:a}}e.create=t;function i(r){var n=r;return n&&s.string(n.newText)&&y.is(n.insert)&&y.is(n.replace)}e.is=i})(Ke||(Ke={}));var He;(function(e){e.asIs=1,e.adjustIndentation=2})(He||(He={}));var Je;(function(e){function t(i){return{label:i}}e.create=t})(Je||(Je={}));var Be;(function(e){function t(i,r){return{items:i||[],isIncomplete:!!r}}e.create=t})(Be||(Be={}));var fe;(function(e){function t(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}e.fromPlainText=t;function i(r){var n=r;return s.string(n)||s.objectLiteral(n)&&s.string(n.language)&&s.string(n.value)}e.is=i})(fe||(fe={}));var ze;(function(e){function t(i){var r=i;return!!r&&s.objectLiteral(r)&&(ve.is(r.contents)||fe.is(r.contents)||s.typedArray(r.contents,fe.is))&&(i.range===void 0||y.is(i.range))}e.is=t})(ze||(ze={}));var qe;(function(e){function t(i,r){return r?{label:i,documentation:r}:{label:i}}e.create=t})(qe||(qe={}));var Xe;(function(e){function t(i,r){for(var n=[],a=2;a=0;p--){var f=c[p],b=a.offsetAt(f.range.start),g=a.offsetAt(f.range.end);if(g<=h)u=u.substring(0,b)+f.newText+u.substring(g,u.length);else throw new Error("Overlapping edit");h=b}return u}e.applyEdits=r;function n(a,o){if(a.length<=1)return a;var u=a.length/2|0,c=a.slice(0,u),h=a.slice(u);n(c,o),n(h,o);for(var p=0,f=0,b=0;p0&&t.push(i.length),this._lineOffsets=t}return this._lineOffsets},e.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var i=this.getLineOffsets(),r=0,n=i.length;if(n===0)return _.create(0,t);for(;rt?n=a:r=a+1}var o=r-1;return _.create(o,t-i[o])},e.prototype.offsetAt=function(t){var i=this.getLineOffsets();if(t.line>=i.length)return this._content.length;if(t.line<0)return 0;var r=i[t.line],n=t.line+1"u"}e.undefined=r;function n(g){return g===!0||g===!1}e.boolean=n;function a(g){return t.call(g)==="[object String]"}e.string=a;function o(g){return t.call(g)==="[object Number]"}e.number=o;function u(g,E,R){return t.call(g)==="[object Number]"&&E<=g&&g<=R}e.numberRange=u;function c(g){return t.call(g)==="[object Number]"&&-2147483648<=g&&g<=2147483647}e.integer=c;function h(g){return t.call(g)==="[object Number]"&&0<=g&&g<=2147483647}e.uinteger=h;function p(g){return t.call(g)==="[object Function]"}e.func=p;function f(g){return g!==null&&typeof g=="object"}e.objectLiteral=f;function b(g,E){return Array.isArray(g)&&g.every(E)}e.typedArray=b})(s||(s={}));var q=class{constructor(t,i,r){this._languageId=t;this._worker=i;let n=o=>{let u=o.getLanguageId();if(u!==this._languageId)return;let c;this._listener[o.uri.toString()]=o.onDidChangeContent(()=>{window.clearTimeout(c),c=window.setTimeout(()=>this._doValidate(o.uri,u),500)}),this._doValidate(o.uri,u)},a=o=>{l.editor.setModelMarkers(o,this._languageId,[]);let u=o.uri.toString(),c=this._listener[u];c&&(c.dispose(),delete this._listener[u])};this._disposables.push(l.editor.onDidCreateModel(n)),this._disposables.push(l.editor.onWillDisposeModel(a)),this._disposables.push(l.editor.onDidChangeModelLanguage(o=>{a(o.model),n(o.model)})),this._disposables.push(r(o=>{l.editor.getModels().forEach(u=>{u.getLanguageId()===this._languageId&&(a(u),n(u))})})),this._disposables.push({dispose:()=>{l.editor.getModels().forEach(a);for(let o in this._listener)this._listener[o].dispose()}}),l.editor.getModels().forEach(n)}_disposables=[];_listener=Object.create(null);dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,i){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{let n=r.map(o=>Rn(t,o)),a=l.editor.getModel(t);a&&a.getLanguageId()===i&&l.editor.setModelMarkers(a,i,n)}).then(void 0,r=>{console.error(r)})}};function Wn(e){switch(e){case O.Error:return l.MarkerSeverity.Error;case O.Warning:return l.MarkerSeverity.Warning;case O.Information:return l.MarkerSeverity.Info;case O.Hint:return l.MarkerSeverity.Hint;default:return l.MarkerSeverity.Info}}function Rn(e,t){let i=typeof t.code=="number"?String(t.code):t.code;return{severity:Wn(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:i,source:t.source}}var X=class{constructor(t,i){this._worker=t;this._triggerCharacters=i}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.doComplete(a.toString(),L(i))).then(o=>{if(!o)return;let u=t.getWordUntilPosition(i),c=new l.Range(i.lineNumber,u.startColumn,i.lineNumber,u.endColumn),h=o.items.map(p=>{let f={label:p.label,insertText:p.insertText||p.label,sortText:p.sortText,filterText:p.filterText,documentation:p.documentation,detail:p.detail,command:Mn(p.command),range:c,kind:Nn(p.kind)};return p.textEdit&&(Dn(p.textEdit)?f.range={insert:C(p.textEdit.insert),replace:C(p.textEdit.replace)}:f.range=C(p.textEdit.range),f.insertText=p.textEdit.newText),p.additionalTextEdits&&(f.additionalTextEdits=p.additionalTextEdits.map(j)),p.insertTextFormat===le.Snippet&&(f.insertTextRules=l.languages.CompletionItemInsertTextRule.InsertAsSnippet),f});return{isIncomplete:o.isIncomplete,suggestions:h}})}};function L(e){if(!!e)return{character:e.column-1,line:e.lineNumber-1}}function we(e){if(!!e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function C(e){if(!!e)return new l.Range(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Dn(e){return typeof e.insert<"u"&&typeof e.replace<"u"}function Nn(e){let t=l.languages.CompletionItemKind;switch(e){case m.Text:return t.Text;case m.Method:return t.Method;case m.Function:return t.Function;case m.Constructor:return t.Constructor;case m.Field:return t.Field;case m.Variable:return t.Variable;case m.Class:return t.Class;case m.Interface:return t.Interface;case m.Module:return t.Module;case m.Property:return t.Property;case m.Unit:return t.Unit;case m.Value:return t.Value;case m.Enum:return t.Enum;case m.Keyword:return t.Keyword;case m.Snippet:return t.Snippet;case m.Color:return t.Color;case m.File:return t.File;case m.Reference:return t.Reference}return t.Property}function j(e){if(!!e)return{range:C(e.range),text:e.newText}}function Mn(e){return e&&e.command==="editor.action.triggerSuggest"?{id:e.command,title:e.title,arguments:e.arguments}:void 0}var Y=class{constructor(t){this._worker=t}provideHover(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.doHover(n.toString(),L(i))).then(a=>{if(!!a)return{range:C(a.range),contents:jn(a.contents)}})}};function Fn(e){return e&&typeof e=="object"&&typeof e.kind=="string"}function un(e){return typeof e=="string"?{value:e}:Fn(e)?e.kind==="plaintext"?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+` -`+e.value+"\n```\n"}}function jn(e){if(!!e)return Array.isArray(e)?e.map(un):[un(e)]}var ye=class{constructor(t){this._worker=t}provideDocumentHighlights(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.findDocumentHighlights(n.toString(),L(i))).then(a=>{if(!!a)return a.map(o=>({range:C(o.range),kind:Un(o.kind)}))})}};function Un(e){switch(e){case F.Read:return l.languages.DocumentHighlightKind.Read;case F.Write:return l.languages.DocumentHighlightKind.Write;case F.Text:return l.languages.DocumentHighlightKind.Text}return l.languages.DocumentHighlightKind.Text}var ke=class{constructor(t){this._worker=t}provideDefinition(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.findDefinition(n.toString(),L(i))).then(a=>{if(!!a)return[cn(a)]})}};function cn(e){return{uri:l.Uri.parse(e.uri),range:C(e.range)}}var Te=class{constructor(t){this._worker=t}provideReferences(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.findReferences(a.toString(),L(i))).then(o=>{if(!!o)return o.map(cn)})}},be=class{constructor(t){this._worker=t}provideRenameEdits(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.doRename(a.toString(),L(i),r)).then(o=>Vn(o))}};function Vn(e){if(!e||!e.changes)return;let t=[];for(let i in e.changes){let r=l.Uri.parse(i);for(let n of e.changes[i])t.push({resource:r,versionId:void 0,textEdit:{range:C(n.range),text:n.newText}})}return{edits:t}}var $=class{constructor(t){this._worker=t}provideDocumentSymbols(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentSymbols(r.toString())).then(n=>{if(!!n)return n.map(a=>({name:a.name,detail:"",containerName:a.containerName,kind:Kn(a.kind),range:C(a.location.range),selectionRange:C(a.location.range),tags:[]}))})}};function Kn(e){let t=l.languages.SymbolKind;switch(e){case v.File:return t.Array;case v.Module:return t.Module;case v.Namespace:return t.Namespace;case v.Package:return t.Package;case v.Class:return t.Class;case v.Method:return t.Method;case v.Property:return t.Property;case v.Field:return t.Field;case v.Constructor:return t.Constructor;case v.Enum:return t.Enum;case v.Interface:return t.Interface;case v.Function:return t.Function;case v.Variable:return t.Variable;case v.Constant:return t.Constant;case v.String:return t.String;case v.Number:return t.Number;case v.Boolean:return t.Boolean;case v.Array:return t.Array}return t.Function}var Ce=class{constructor(t){this._worker=t}provideLinks(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentLinks(r.toString())).then(n=>{if(!!n)return{links:n.map(a=>({range:C(a.range),url:a.target}))}})}},G=class{constructor(t){this._worker=t}provideDocumentFormattingEdits(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.format(n.toString(),null,ln(i)).then(o=>{if(!(!o||o.length===0))return o.map(j)}))}},Q=class{constructor(t){this._worker=t}canFormatMultipleRanges=!1;provideDocumentRangeFormattingEdits(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.format(a.toString(),we(i),ln(r)).then(u=>{if(!(!u||u.length===0))return u.map(j)}))}};function ln(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Z=class{constructor(t){this._worker=t}provideDocumentColors(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentColors(r.toString())).then(n=>{if(!!n)return n.map(a=>({color:a.color,range:C(a.range)}))})}provideColorPresentations(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getColorPresentations(n.toString(),i.color,we(i.range))).then(a=>{if(!!a)return a.map(o=>{let u={label:o.label};return o.textEdit&&(u.textEdit=j(o.textEdit)),o.additionalTextEdits&&(u.additionalTextEdits=o.additionalTextEdits.map(j)),u})})}},ee=class{constructor(t){this._worker=t}provideFoldingRanges(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getFoldingRanges(n.toString(),i)).then(a=>{if(!!a)return a.map(o=>{let u={start:o.startLine+1,end:o.endLine+1};return typeof o.kind<"u"&&(u.kind=Hn(o.kind)),u})})}};function Hn(e){switch(e){case M.Comment:return l.languages.FoldingRangeKind.Comment;case M.Imports:return l.languages.FoldingRangeKind.Imports;case M.Region:return l.languages.FoldingRangeKind.Region}}var ne=class{constructor(t){this._worker=t}provideSelectionRanges(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getSelectionRanges(n.toString(),i.map(L))).then(a=>{if(!!a)return a.map(o=>{let u=[];for(;o;)u.push({range:C(o.range)}),o=o.parent;return u})})}};function de(e,t){t===void 0&&(t=!1);var i=e.length,r=0,n="",a=0,o=16,u=0,c=0,h=0,p=0,f=0;function b(d,w){for(var x=0,I=0;x=48&&k<=57)I=I*16+k-48;else if(k>=65&&k<=70)I=I*16+k-65+10;else if(k>=97&&k<=102)I=I*16+k-97+10;else break;r++,x++}return x=i){d+=e.substring(w,r),f=2;break}var x=e.charCodeAt(r);if(x===34){d+=e.substring(w,r),r++;break}if(x===92){if(d+=e.substring(w,r),r++,r>=i){f=2;break}var I=e.charCodeAt(r++);switch(I){case 34:d+='"';break;case 92:d+="\\";break;case 47:d+="/";break;case 98:d+="\b";break;case 102:d+="\f";break;case 110:d+=` -`;break;case 114:d+="\r";break;case 116:d+=" ";break;case 117:var k=b(4,!0);k>=0?d+=String.fromCharCode(k):f=4;break;default:f=5}w=r;continue}if(x>=0&&x<=31)if(re(x)){d+=e.substring(w,r),f=2;break}else f=6;r++}return d}function V(){if(n="",f=0,a=r,c=u,p=h,r>=i)return a=i,o=17;var d=e.charCodeAt(r);if(Ie(d)){do r++,n+=String.fromCharCode(d),d=e.charCodeAt(r);while(Ie(d));return o=15}if(re(d))return r++,n+=String.fromCharCode(d),d===13&&e.charCodeAt(r)===10&&(r++,n+=` -`),u++,h=r,o=14;switch(d){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,n=R(),o=10;case 47:var w=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r=12&&d<=15);return d}return{setPosition:g,getPosition:function(){return r},scan:t?kn:V,getToken:function(){return o},getTokenValue:function(){return n},getTokenOffset:function(){return a},getTokenLength:function(){return r-a},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return a-p},getTokenError:function(){return f}}}function Ie(e){return e===32||e===9||e===11||e===12||e===160||e===5760||e>=8192&&e<=8203||e===8239||e===8287||e===12288||e===65279}function re(e){return e===10||e===13||e===8232||e===8233}function U(e){return e>=48&&e<=57}var fn;(function(e){e.DEFAULT={allowTrailingComma:!1}})(fn||(fn={}));var dn=de;function hn(e){return{getInitialState:()=>new W(null,null,!1,null),tokenize:(t,i)=>ur(e,t,i)}}var gn="delimiter.bracket.json",pn="delimiter.array.json",Zn="delimiter.colon.json",er="delimiter.comma.json",nr="keyword.json",rr="keyword.json",tr="string.value.json",ir="number.json",ar="string.key.json",or="comment.block.json",sr="comment.line.json";var P=class{constructor(t,i){this.parent=t;this.type=i}static pop(t){return t?t.parent:null}static push(t,i){return new P(t,i)}static equals(t,i){if(!t&&!i)return!0;if(!t||!i)return!1;for(;t&&i;){if(t===i)return!0;if(t.type!==i.type)return!1;t=t.parent,i=i.parent}return!0}},W=class{_state;scanError;lastWasColon;parents;constructor(t,i,r,n){this._state=t,this.scanError=i,this.lastWasColon=r,this.parents=n}clone(){return new W(this._state,this.scanError,this.lastWasColon,this.parents)}equals(t){return t===this?!0:!t||!(t instanceof W)?!1:this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&P.equals(this.parents,t.parents)}getStateData(){return this._state}setStateData(t){this._state=t}};function ur(e,t,i,r=0){let n=0,a=!1;switch(i.scanError){case 2:t='"'+t,n=1;break;case 1:t="/*"+t,n=2;break}let o=dn(t),u=i.lastWasColon,c=i.parents,h={tokens:[],endState:i.clone()};for(;;){let p=r+o.getPosition(),f="",b=o.scan();if(b===17)break;if(p===r+o.getPosition())throw new Error("Scanner did not advance, next 3 characters are: "+t.substr(o.getPosition(),3));switch(a&&(p-=n),a=n>0,b){case 1:c=P.push(c,0),f=gn,u=!1;break;case 2:c=P.pop(c),f=gn,u=!1;break;case 3:c=P.push(c,1),f=pn,u=!1;break;case 4:c=P.pop(c),f=pn,u=!1;break;case 6:f=Zn,u=!0;break;case 5:f=er,u=!1;break;case 8:case 9:f=nr,u=!1;break;case 7:f=rr,u=!1;break;case 10:let E=(c?c.type:0)===1;f=u||E?tr:ar,u=!1;break;case 11:f=ir,u=!1;break}if(e)switch(b){case 12:f=sr;break;case 13:f=or;break}h.endState=new W(i.getStateData(),o.getTokenError(),u,c),h.tokens.push({startIndex:p,scopes:f})}return h}var xe=class extends q{constructor(t,i,r){super(t,i,r.onDidChange),this._disposables.push(l.editor.onWillDisposeModel(n=>{this._resetSchema(n.uri)})),this._disposables.push(l.editor.onDidChangeModelLanguage(n=>{this._resetSchema(n.model.uri)}))}_resetSchema(t){this._worker().then(i=>{i.resetSchema(t.toString())})}};function cr(e){let t=[],i=[],r=new D(e);t.push(r);let n=(...u)=>r.getLanguageServiceWorker(...u);function a(){let{languageId:u,modeConfiguration:c}=e;vn(i),c.documentFormattingEdits&&i.push(l.languages.registerDocumentFormattingEditProvider(u,new G(n))),c.documentRangeFormattingEdits&&i.push(l.languages.registerDocumentRangeFormattingEditProvider(u,new Q(n))),c.completionItems&&i.push(l.languages.registerCompletionItemProvider(u,new X(n,[" ",":",'"']))),c.hovers&&i.push(l.languages.registerHoverProvider(u,new Y(n))),c.documentSymbols&&i.push(l.languages.registerDocumentSymbolProvider(u,new $(n))),c.tokens&&i.push(l.languages.setTokensProvider(u,hn(!0))),c.colors&&i.push(l.languages.registerColorProvider(u,new Z(n))),c.foldingRanges&&i.push(l.languages.registerFoldingRangeProvider(u,new ee(n))),c.diagnostics&&i.push(new xe(u,n,e)),c.selectionRanges&&i.push(l.languages.registerSelectionRangeProvider(u,new ne(n)))}a(),t.push(l.languages.setLanguageConfiguration(e.languageId,lr));let o=e.modeConfiguration;return e.onDidChange(u=>{u.modeConfiguration!==o&&(o=u.modeConfiguration,a())}),t.push(mn(i)),mn(t)}function mn(e){return{dispose:()=>vn(e)}}function vn(e){for(;e.length;)e.pop().dispose()}var lr={wordPattern:/(-?\d*\.\d\w*)|([^\[\{\]\}\:\"\,\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:'"',close:'"',notIn:["string"]}]};return Pn(fr);})(); -return moduleExports; -}); diff --git a/static/monaco-editor/min/vs/language/json/jsonMode.js.gz b/static/monaco-editor/min/vs/language/json/jsonMode.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f73c43fd0456f4b001cd99fa3625641d45955092 GIT binary patch literal 11408 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 literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/language/json/jsonWorker.js b/static/monaco-editor/min/vs/language/json/jsonWorker.js deleted file mode 100644 index 719f00b..0000000 --- a/static/monaco-editor/min/vs/language/json/jsonWorker.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict";/*!----------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt - *-----------------------------------------------------------------------------*/ -define("vs/language/json/jsonWorker", ["require","require"],(require)=>{ -var moduleExports=(()=>{var lt=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Gr=Object.getOwnPropertyNames;var Xr=Object.prototype.hasOwnProperty;var Zr=(t,r)=>{for(var i in r)lt(t,i,{get:r[i],enumerable:!0})},Qr=(t,r,i,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Gr(r))!Xr.call(t,n)&&n!==i&<(t,n,{get:()=>r[n],enumerable:!(e=Hr(r,n))||e.enumerable});return t};var Yr=t=>Qr(lt({},"__esModule",{value:!0}),t);var _n={};Zr(_n,{JSONWorker:()=>st,create:()=>Bn});function Pe(t,r){r===void 0&&(r=!1);var i=t.length,e=0,n="",a=0,s=16,o=0,f=0,l=0,u=0,c=0;function h(v,O){for(var E=0,j=0;E=48&&A<=57)j=j*16+A-48;else if(A>=65&&A<=70)j=j*16+A-65+10;else if(A>=97&&A<=102)j=j*16+A-97+10;else break;e++,E++}return E=i){v+=t.substring(O,e),c=2;break}var E=t.charCodeAt(e);if(E===34){v+=t.substring(O,e),e++;break}if(E===92){if(v+=t.substring(O,e),e++,e>=i){c=2;break}var j=t.charCodeAt(e++);switch(j){case 34:v+='"';break;case 92:v+="\\";break;case 47:v+="/";break;case 98:v+="\b";break;case 102:v+="\f";break;case 110:v+=` -`;break;case 114:v+="\r";break;case 116:v+=" ";break;case 117:var A=h(4,!0);A>=0?v+=String.fromCharCode(A):c=4;break;default:c=5}O=e;continue}if(E>=0&&E<=31)if(Le(E)){v+=t.substring(O,e),c=2;break}else c=6;e++}return v}function d(){if(n="",c=0,a=e,f=o,u=l,e>=i)return a=i,s=17;var v=t.charCodeAt(e);if(ht(v)){do e++,n+=String.fromCharCode(v),v=t.charCodeAt(e);while(ht(v));return s=15}if(Le(v))return e++,n+=String.fromCharCode(v),v===13&&t.charCodeAt(e)===10&&(e++,n+=` -`),o++,l=e,s=14;switch(v){case 123:return e++,s=1;case 125:return e++,s=2;case 91:return e++,s=3;case 93:return e++,s=4;case 58:return e++,s=6;case 44:return e++,s=5;case 34:return e++,n=p(),s=10;case 47:var O=e-1;if(t.charCodeAt(e+1)===47){for(e+=2;e=12&&v<=15);return v}return{setPosition:g,getPosition:function(){return e},scan:r?y:d,getToken:function(){return s},getTokenValue:function(){return n},getTokenOffset:function(){return a},getTokenLength:function(){return e-a},getTokenStartLine:function(){return f},getTokenStartCharacter:function(){return a-u},getTokenError:function(){return c}}}function ht(t){return t===32||t===9||t===11||t===12||t===160||t===5760||t>=8192&&t<=8203||t===8239||t===8287||t===12288||t===65279}function Le(t){return t===10||t===13||t===8232||t===8233}function Ce(t){return t>=48&&t<=57}function pt(t,r,i){var e,n,a,s,o;if(r){for(s=r.offset,o=s+r.length,a=s;a>0&&!gt(t,a-1);)a--;for(var f=o;fs)&&t.substring(V,R)!==N&&b.push({offset:V,length:R-V,content:N})}var v=d();if(v!==17){var O=g.getTokenOffset()+a,E=dt(h,e);y(E,a,O)}for(;v!==17;){for(var j=g.getTokenOffset()+g.getTokenLength()+a,A=d(),P="",w=!1;!u&&(A===12||A===13);){var C=g.getTokenOffset()+a;y(" ",j,C),j=g.getTokenOffset()+g.getTokenLength()+a,w=A===12,P=w?p():"",A=d()}if(A===2)v!==1&&(c--,P=p());else if(A===4)v!==3&&(c--,P=p());else{switch(v){case 3:case 1:c++,P=p();break;case 5:case 12:P=p();break;case 13:u?P=p():w||(P=" ");break;case 6:w||(P=" ");break;case 10:if(A===6){w||(P="");break}case 7:case 8:case 9:case 11:case 2:case 4:A===12||A===13?w||(P=" "):A!==5&&A!==17&&(m=!0);break;case 16:m=!0;break}u&&(A===12||A===13)&&(P=p())}A===17&&(P=i.insertFinalNewline?l:"");var L=g.getTokenOffset()+a;y(P,j,L),v=A}return b}function dt(t,r){for(var i="",e=0;e=t.offset&&r0)for(var N=e.getToken();N!==17;){if(C.indexOf(N)!==-1){b();break}else if(L.indexOf(N)!==-1)break;N=b()}}function v(w){var C=e.getTokenValue();return w?c(C):o(C),b(),!0}function O(){switch(e.getToken()){case 11:var w=e.getTokenValue(),C=Number(w);isNaN(C)&&(y(2),C=0),c(C);break;case 7:c(null);break;case 8:c(!0);break;case 9:c(!1);break;default:return!1}return b(),!0}function E(){return e.getToken()!==10?(y(3,[],[2,5]),!1):(v(!1),e.getToken()===6?(h(":"),b(),P()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function j(){s(),b();for(var w=!1;e.getToken()!==2&&e.getToken()!==17;){if(e.getToken()===5){if(w||y(4,[],[]),h(","),b(),e.getToken()===2&&d)break}else w&&y(6,[],[]);E()||y(4,[],[2,5]),w=!0}return f(),e.getToken()!==2?y(7,[2],[]):b(),!0}function A(){l(),b();for(var w=!1;e.getToken()!==4&&e.getToken()!==17;){if(e.getToken()===5){if(w||y(4,[],[]),h(","),b(),e.getToken()===4&&d)break}else w&&y(6,[],[]);P()||y(4,[],[4,5]),w=!0}return u(),e.getToken()!==4?y(8,[4],[]):b(),!0}function P(){switch(e.getToken()){case 3:return A();case 1:return j();case 10:return v(!0);default:return O()}}return b(),e.getToken()===17?i.allowEmptyContent?!0:(y(4,[],[]),!1):P()?(e.getToken()!==17&&y(9,[],[]),!0):(y(4,[],[]),!1)}var le=Pe;var Qt=Xt;var Yt=vt,Kt=mt,er=_e;function tr(t,r,i){return pt(t,r,i)}function Ie(t,r){if(t===r)return!0;if(t==null||r===null||r===void 0||typeof t!=typeof r||typeof t!="object"||Array.isArray(t)!==Array.isArray(r))return!1;var i,e;if(Array.isArray(t)){if(t.length!==r.length)return!1;for(i=0;i0?t.lastIndexOf(r)===i:i===0?t===r:!1}function xe(t){var r="";un(t,"(?i)")&&(t=t.substring(4),r="i");try{return new RegExp(t,r+"u")}catch{try{return new RegExp(t,r)}catch{return}}}var ir;(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647})(ir||(ir={}));var Ge;(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647})(Ge||(Ge={}));var re;(function(t){function r(e,n){return e===Number.MAX_VALUE&&(e=Ge.MAX_VALUE),n===Number.MAX_VALUE&&(n=Ge.MAX_VALUE),{line:e,character:n}}t.create=r;function i(e){var n=e;return x.objectLiteral(n)&&x.uinteger(n.line)&&x.uinteger(n.character)}t.is=i})(re||(re={}));var U;(function(t){function r(e,n,a,s){if(x.uinteger(e)&&x.uinteger(n)&&x.uinteger(a)&&x.uinteger(s))return{start:re.create(e,n),end:re.create(a,s)};if(re.is(e)&&re.is(n))return{start:e,end:n};throw new Error("Range#create called with invalid arguments["+e+", "+n+", "+a+", "+s+"]")}t.create=r;function i(e){var n=e;return x.objectLiteral(n)&&re.is(n.start)&&re.is(n.end)}t.is=i})(U||(U={}));var Se;(function(t){function r(e,n){return{uri:e,range:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.range)&&(x.string(n.uri)||x.undefined(n.uri))}t.is=i})(Se||(Se={}));var ar;(function(t){function r(e,n,a,s){return{targetUri:e,targetRange:n,targetSelectionRange:a,originSelectionRange:s}}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.targetRange)&&x.string(n.targetUri)&&(U.is(n.targetSelectionRange)||x.undefined(n.targetSelectionRange))&&(U.is(n.originSelectionRange)||x.undefined(n.originSelectionRange))}t.is=i})(ar||(ar={}));var Xe;(function(t){function r(e,n,a,s){return{red:e,green:n,blue:a,alpha:s}}t.create=r;function i(e){var n=e;return x.numberRange(n.red,0,1)&&x.numberRange(n.green,0,1)&&x.numberRange(n.blue,0,1)&&x.numberRange(n.alpha,0,1)}t.is=i})(Xe||(Xe={}));var bt;(function(t){function r(e,n){return{range:e,color:n}}t.create=r;function i(e){var n=e;return U.is(n.range)&&Xe.is(n.color)}t.is=i})(bt||(bt={}));var xt;(function(t){function r(e,n,a){return{label:e,textEdit:n,additionalTextEdits:a}}t.create=r;function i(e){var n=e;return x.string(n.label)&&(x.undefined(n.textEdit)||Y.is(n))&&(x.undefined(n.additionalTextEdits)||x.typedArray(n.additionalTextEdits,Y.is))}t.is=i})(xt||(xt={}));var Ae;(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Ae||(Ae={}));var St;(function(t){function r(e,n,a,s,o){var f={startLine:e,endLine:n};return x.defined(a)&&(f.startCharacter=a),x.defined(s)&&(f.endCharacter=s),x.defined(o)&&(f.kind=o),f}t.create=r;function i(e){var n=e;return x.uinteger(n.startLine)&&x.uinteger(n.startLine)&&(x.undefined(n.startCharacter)||x.uinteger(n.startCharacter))&&(x.undefined(n.endCharacter)||x.uinteger(n.endCharacter))&&(x.undefined(n.kind)||x.string(n.kind))}t.is=i})(St||(St={}));var At;(function(t){function r(e,n){return{location:e,message:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&Se.is(n.location)&&x.string(n.message)}t.is=i})(At||(At={}));var Z;(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(Z||(Z={}));var or;(function(t){t.Unnecessary=1,t.Deprecated=2})(or||(or={}));var sr;(function(t){function r(i){var e=i;return e!=null&&x.string(e.href)}t.is=r})(sr||(sr={}));var ae;(function(t){function r(e,n,a,s,o,f){var l={range:e,message:n};return x.defined(a)&&(l.severity=a),x.defined(s)&&(l.code=s),x.defined(o)&&(l.source=o),x.defined(f)&&(l.relatedInformation=f),l}t.create=r;function i(e){var n,a=e;return x.defined(a)&&U.is(a.range)&&x.string(a.message)&&(x.number(a.severity)||x.undefined(a.severity))&&(x.integer(a.code)||x.string(a.code)||x.undefined(a.code))&&(x.undefined(a.codeDescription)||x.string((n=a.codeDescription)===null||n===void 0?void 0:n.href))&&(x.string(a.source)||x.undefined(a.source))&&(x.undefined(a.relatedInformation)||x.typedArray(a.relatedInformation,At.is))}t.is=i})(ae||(ae={}));var je;(function(t){function r(e,n){for(var a=[],s=2;s0&&(o.arguments=a),o}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.title)&&x.string(n.command)}t.is=i})(je||(je={}));var Y;(function(t){function r(a,s){return{range:a,newText:s}}t.replace=r;function i(a,s){return{range:{start:a,end:a},newText:s}}t.insert=i;function e(a){return{range:a,newText:""}}t.del=e;function n(a){var s=a;return x.objectLiteral(s)&&x.string(s.newText)&&U.is(s.range)}t.is=n})(Y||(Y={}));var Ee;(function(t){function r(e,n,a){var s={label:e};return n!==void 0&&(s.needsConfirmation=n),a!==void 0&&(s.description=a),s}t.create=r;function i(e){var n=e;return n!==void 0&&x.objectLiteral(n)&&x.string(n.label)&&(x.boolean(n.needsConfirmation)||n.needsConfirmation===void 0)&&(x.string(n.description)||n.description===void 0)}t.is=i})(Ee||(Ee={}));var X;(function(t){function r(i){var e=i;return typeof e=="string"}t.is=r})(X||(X={}));var me;(function(t){function r(a,s,o){return{range:a,newText:s,annotationId:o}}t.replace=r;function i(a,s,o){return{range:{start:a,end:a},newText:s,annotationId:o}}t.insert=i;function e(a,s){return{range:a,newText:"",annotationId:s}}t.del=e;function n(a){var s=a;return Y.is(s)&&(Ee.is(s.annotationId)||X.is(s.annotationId))}t.is=n})(me||(me={}));var Ve;(function(t){function r(e,n){return{textDocument:e,edits:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&Qe.is(n.textDocument)&&Array.isArray(n.edits)}t.is=i})(Ve||(Ve={}));var Fe;(function(t){function r(e,n,a){var s={kind:"create",uri:e};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}t.create=r;function i(e){var n=e;return n&&n.kind==="create"&&x.string(n.uri)&&(n.options===void 0||(n.options.overwrite===void 0||x.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||x.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})(Fe||(Fe={}));var $e;(function(t){function r(e,n,a,s){var o={kind:"rename",oldUri:e,newUri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(o.options=a),s!==void 0&&(o.annotationId=s),o}t.create=r;function i(e){var n=e;return n&&n.kind==="rename"&&x.string(n.oldUri)&&x.string(n.newUri)&&(n.options===void 0||(n.options.overwrite===void 0||x.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||x.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})($e||($e={}));var De;(function(t){function r(e,n,a){var s={kind:"delete",uri:e};return n!==void 0&&(n.recursive!==void 0||n.ignoreIfNotExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}t.create=r;function i(e){var n=e;return n&&n.kind==="delete"&&x.string(n.uri)&&(n.options===void 0||(n.options.recursive===void 0||x.boolean(n.options.recursive))&&(n.options.ignoreIfNotExists===void 0||x.boolean(n.options.ignoreIfNotExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})(De||(De={}));var Ze;(function(t){function r(i){var e=i;return e&&(e.changes!==void 0||e.documentChanges!==void 0)&&(e.documentChanges===void 0||e.documentChanges.every(function(n){return x.string(n.kind)?Fe.is(n)||$e.is(n)||De.is(n):Ve.is(n)}))}t.is=r})(Ze||(Ze={}));var He=function(){function t(r,i){this.edits=r,this.changeAnnotations=i}return t.prototype.insert=function(r,i,e){var n,a;if(e===void 0?n=Y.insert(r,i):X.is(e)?(a=e,n=me.insert(r,i,e)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(e),n=me.insert(r,i,a)),this.edits.push(n),a!==void 0)return a},t.prototype.replace=function(r,i,e){var n,a;if(e===void 0?n=Y.replace(r,i):X.is(e)?(a=e,n=me.replace(r,i,e)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(e),n=me.replace(r,i,a)),this.edits.push(n),a!==void 0)return a},t.prototype.delete=function(r,i){var e,n;if(i===void 0?e=Y.del(r):X.is(i)?(n=i,e=me.del(r,i)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(i),e=me.del(r,n)),this.edits.push(e),n!==void 0)return n},t.prototype.add=function(r){this.edits.push(r)},t.prototype.all=function(){return this.edits},t.prototype.clear=function(){this.edits.splice(0,this.edits.length)},t.prototype.assertChangeAnnotations=function(r){if(r===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},t}(),fr=function(){function t(r){this._annotations=r===void 0?Object.create(null):r,this._counter=0,this._size=0}return t.prototype.all=function(){return this._annotations},Object.defineProperty(t.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),t.prototype.manage=function(r,i){var e;if(X.is(r)?e=r:(e=this.nextId(),i=r),this._annotations[e]!==void 0)throw new Error("Id "+e+" is already in use.");if(i===void 0)throw new Error("No annotation provided for id "+e);return this._annotations[e]=i,this._size++,e},t.prototype.nextId=function(){return this._counter++,this._counter.toString()},t}(),ni=function(){function t(r){var i=this;this._textEditChanges=Object.create(null),r!==void 0?(this._workspaceEdit=r,r.documentChanges?(this._changeAnnotations=new fr(r.changeAnnotations),r.changeAnnotations=this._changeAnnotations.all(),r.documentChanges.forEach(function(e){if(Ve.is(e)){var n=new He(e.edits,i._changeAnnotations);i._textEditChanges[e.textDocument.uri]=n}})):r.changes&&Object.keys(r.changes).forEach(function(e){var n=new He(r.changes[e]);i._textEditChanges[e]=n})):this._workspaceEdit={}}return Object.defineProperty(t.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),t.prototype.getTextEditChange=function(r){if(Qe.is(r)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i={uri:r.uri,version:r.version},e=this._textEditChanges[i.uri];if(!e){var n=[],a={textDocument:i,edits:n};this._workspaceEdit.documentChanges.push(a),e=new He(n,this._changeAnnotations),this._textEditChanges[i.uri]=e}return e}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var e=this._textEditChanges[r];if(!e){var n=[];this._workspaceEdit.changes[r]=n,e=new He(n),this._textEditChanges[r]=e}return e}},t.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new fr,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},t.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},t.prototype.createFile=function(r,i,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var n;Ee.is(i)||X.is(i)?n=i:e=i;var a,s;if(n===void 0?a=Fe.create(r,e):(s=X.is(n)?n:this._changeAnnotations.manage(n),a=Fe.create(r,e,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s},t.prototype.renameFile=function(r,i,e,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var a;Ee.is(e)||X.is(e)?a=e:n=e;var s,o;if(a===void 0?s=$e.create(r,i,n):(o=X.is(a)?a:this._changeAnnotations.manage(a),s=$e.create(r,i,n,o)),this._workspaceEdit.documentChanges.push(s),o!==void 0)return o},t.prototype.deleteFile=function(r,i,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var n;Ee.is(i)||X.is(i)?n=i:e=i;var a,s;if(n===void 0?a=De.create(r,e):(s=X.is(n)?n:this._changeAnnotations.manage(n),a=De.create(r,e,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s},t}();var ur;(function(t){function r(e){return{uri:e}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)}t.is=i})(ur||(ur={}));var wt;(function(t){function r(e,n){return{uri:e,version:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&x.integer(n.version)}t.is=i})(wt||(wt={}));var Qe;(function(t){function r(e,n){return{uri:e,version:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&(n.version===null||x.integer(n.version))}t.is=i})(Qe||(Qe={}));var cr;(function(t){function r(e,n,a,s){return{uri:e,languageId:n,version:a,text:s}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&x.string(n.languageId)&&x.integer(n.version)&&x.string(n.text)}t.is=i})(cr||(cr={}));var fe;(function(t){t.PlainText="plaintext",t.Markdown="markdown"})(fe||(fe={}));(function(t){function r(i){var e=i;return e===t.PlainText||e===t.Markdown}t.is=r})(fe||(fe={}));var Ye;(function(t){function r(i){var e=i;return x.objectLiteral(i)&&fe.is(e.kind)&&x.string(e.value)}t.is=r})(Ye||(Ye={}));var Q;(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(Q||(Q={}));var z;(function(t){t.PlainText=1,t.Snippet=2})(z||(z={}));var Tt;(function(t){t.Deprecated=1})(Tt||(Tt={}));var lr;(function(t){function r(e,n,a){return{newText:e,insert:n,replace:a}}t.create=r;function i(e){var n=e;return n&&x.string(n.newText)&&U.is(n.insert)&&U.is(n.replace)}t.is=i})(lr||(lr={}));var hr;(function(t){t.asIs=1,t.adjustIndentation=2})(hr||(hr={}));var Re;(function(t){function r(i){return{label:i}}t.create=r})(Re||(Re={}));var kt;(function(t){function r(i,e){return{items:i||[],isIncomplete:!!e}}t.create=r})(kt||(kt={}));var Ue;(function(t){function r(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}t.fromPlainText=r;function i(e){var n=e;return x.string(n)||x.objectLiteral(n)&&x.string(n.language)&&x.string(n.value)}t.is=i})(Ue||(Ue={}));var Ot;(function(t){function r(i){var e=i;return!!e&&x.objectLiteral(e)&&(Ye.is(e.contents)||Ue.is(e.contents)||x.typedArray(e.contents,Ue.is))&&(i.range===void 0||U.is(i.range))}t.is=r})(Ot||(Ot={}));var dr;(function(t){function r(i,e){return e?{label:i,documentation:e}:{label:i}}t.create=r})(dr||(dr={}));var gr;(function(t){function r(i,e){for(var n=[],a=2;a=0;u--){var c=f[u],h=a.offsetAt(c.range.start),g=a.offsetAt(c.range.end);if(g<=l)o=o.substring(0,h)+c.newText+o.substring(g,o.length);else throw new Error("Overlapping edit");l=h}return o}t.applyEdits=e;function n(a,s){if(a.length<=1)return a;var o=a.length/2|0,f=a.slice(0,o),l=a.slice(o);n(f,s),n(l,s);for(var u=0,c=0,h=0;u0&&r.push(i.length),this._lineOffsets=r}return this._lineOffsets},t.prototype.positionAt=function(r){r=Math.max(Math.min(r,this._content.length),0);var i=this.getLineOffsets(),e=0,n=i.length;if(n===0)return re.create(0,r);for(;er?n=a:e=a+1}var s=e-1;return re.create(s,r-i[s])},t.prototype.offsetAt=function(r){var i=this.getLineOffsets();if(r.line>=i.length)return this._content.length;if(r.line<0)return 0;var e=i[r.line],n=r.line+1"u"}t.undefined=e;function n(g){return g===!0||g===!1}t.boolean=n;function a(g){return r.call(g)==="[object String]"}t.string=a;function s(g){return r.call(g)==="[object Number]"}t.number=s;function o(g,m,p){return r.call(g)==="[object Number]"&&m<=g&&g<=p}t.numberRange=o;function f(g){return r.call(g)==="[object Number]"&&-2147483648<=g&&g<=2147483647}t.integer=f;function l(g){return r.call(g)==="[object Number]"&&0<=g&&g<=2147483647}t.uinteger=l;function u(g){return r.call(g)==="[object Function]"}t.func=u;function c(g){return g!==null&&typeof g=="object"}t.objectLiteral=c;function h(g,m){return Array.isArray(g)&&g.every(m)}t.typedArray=h})(x||(x={}));var we=class{constructor(r,i,e,n){this._uri=r,this._languageId=i,this._version=e,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(r){if(r){let i=this.offsetAt(r.start),e=this.offsetAt(r.end);return this._content.substring(i,e)}return this._content}update(r,i){for(let e of r)if(we.isIncremental(e)){let n=xr(e.range),a=this.offsetAt(n.start),s=this.offsetAt(n.end);this._content=this._content.substring(0,a)+e.text+this._content.substring(s,this._content.length);let o=Math.max(n.start.line,0),f=Math.max(n.end.line,0),l=this._lineOffsets,u=br(e.text,!1,a);if(f-o===u.length)for(let h=0,g=u.length;hr?n=s:e=s+1}let a=e-1;return{line:a,character:r-i[a]}}offsetAt(r){let i=this.getLineOffsets();if(r.line>=i.length)return this._content.length;if(r.line<0)return 0;let e=i[r.line],n=r.line+1{let h=u.range.start.line-c.range.start.line;return h===0?u.range.start.character-c.range.start.character:h}),f=0,l=[];for(let u of o){let c=n.offsetAt(u.range.start);if(cf&&l.push(s.substring(f,c)),u.newText.length&&l.push(u.newText),f=n.offsetAt(u.range.end)}return l.push(s.substr(f)),l.join("")}t.applyEdits=e})(We||(We={}));function Vt(t,r){if(t.length<=1)return t;let i=t.length/2|0,e=t.slice(0,i),n=t.slice(i);Vt(e,r),Vt(n,r);let a=0,s=0,o=0;for(;ai.line||r.line===i.line&&r.character>i.character?{start:i,end:r}:t}function ln(t){let r=xr(t.range);return r!==t.range?{newText:t.newText,range:r}:t}var W;(function(t){t[t.Undefined=0]="Undefined",t[t.EnumValueMismatch=1]="EnumValueMismatch",t[t.Deprecated=2]="Deprecated",t[t.UnexpectedEndOfComment=257]="UnexpectedEndOfComment",t[t.UnexpectedEndOfString=258]="UnexpectedEndOfString",t[t.UnexpectedEndOfNumber=259]="UnexpectedEndOfNumber",t[t.InvalidUnicode=260]="InvalidUnicode",t[t.InvalidEscapeCharacter=261]="InvalidEscapeCharacter",t[t.InvalidCharacter=262]="InvalidCharacter",t[t.PropertyExpected=513]="PropertyExpected",t[t.CommaExpected=514]="CommaExpected",t[t.ColonExpected=515]="ColonExpected",t[t.ValueExpected=516]="ValueExpected",t[t.CommaOrCloseBacketExpected=517]="CommaOrCloseBacketExpected",t[t.CommaOrCloseBraceExpected=518]="CommaOrCloseBraceExpected",t[t.TrailingComma=519]="TrailingComma",t[t.DuplicateKey=520]="DuplicateKey",t[t.CommentNotPermitted=521]="CommentNotPermitted",t[t.SchemaResolveError=768]="SchemaResolveError"})(W||(W={}));var Sr;(function(t){t.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[fe.Markdown,fe.PlainText],commitCharactersSupport:!0}}}}})(Sr||(Sr={}));function hn(t,r){let i;return r.length===0?i=t:i=t.replace(/\{(\d+)\}/g,(e,n)=>{let a=n[0];return typeof r[a]<"u"?r[a]:e}),i}function dn(t,r,...i){return hn(r,i)}function he(t){return dn}var Te=function(){var t=function(r,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])},t(r,i)};return function(r,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");t(r,i);function e(){this.constructor=r}r.prototype=i===null?Object.create(i):(e.prototype=i.prototype,new e)}}(),M=he(),gn={"color-hex":{errorMessage:M("colorHexFormatWarning","Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA."),pattern:/^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/},"date-time":{errorMessage:M("dateTimeFormatWarning","String is not a RFC3339 date-time."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},date:{errorMessage:M("dateFormatWarning","String is not a RFC3339 date."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i},time:{errorMessage:M("timeFormatWarning","String is not a RFC3339 time."),pattern:/^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},email:{errorMessage:M("emailFormatWarning","String is not an e-mail address."),pattern:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/},hostname:{errorMessage:M("hostnameFormatWarning","String is not a hostname."),pattern:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i},ipv4:{errorMessage:M("ipv4FormatWarning","String is not an IPv4 address."),pattern:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/},ipv6:{errorMessage:M("ipv6FormatWarning","String is not an IPv6 address."),pattern:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i}},ke=function(){function t(r,i,e){e===void 0&&(e=0),this.offset=i,this.length=e,this.parent=r}return Object.defineProperty(t.prototype,"children",{get:function(){return[]},enumerable:!1,configurable:!0}),t.prototype.toString=function(){return"type: "+this.type+" ("+this.offset+"/"+this.length+")"+(this.parent?" parent: {"+this.parent.toString()+"}":"")},t}();var pn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type="null",n.value=null,n}return r}(ke);var Ar=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,n)||this;return a.type="boolean",a.value=e,a}return r}(ke);var mn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type="array",n.items=[],n}return Object.defineProperty(r.prototype,"children",{get:function(){return this.items},enumerable:!1,configurable:!0}),r}(ke);var vn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type="number",n.isInteger=!0,n.value=Number.NaN,n}return r}(ke);var Ft=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,e,n)||this;return a.type="string",a.value="",a}return r}(ke);var yn=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,e)||this;return a.type="property",a.colonOffset=-1,a.keyNode=n,a}return Object.defineProperty(r.prototype,"children",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!1,configurable:!0}),r}(ke);var bn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type="object",n.properties=[],n}return Object.defineProperty(r.prototype,"children",{get:function(){return this.properties},enumerable:!1,configurable:!0}),r}(ke);function K(t){return ie(t)?t?{}:{not:{}}:t}var wr;(function(t){t[t.Key=0]="Key",t[t.Enum=1]="Enum"})(wr||(wr={}));var xn=function(){function t(r,i){r===void 0&&(r=-1),this.focusOffset=r,this.exclude=i,this.schemas=[]}return t.prototype.add=function(r){this.schemas.push(r)},t.prototype.merge=function(r){Array.prototype.push.apply(this.schemas,r.schemas)},t.prototype.include=function(r){return(this.focusOffset===-1||Dt(r,this.focusOffset))&&r!==this.exclude},t.prototype.newSub=function(){return new t(-1,this.exclude)},t}(),$t=function(){function t(){}return Object.defineProperty(t.prototype,"schemas",{get:function(){return[]},enumerable:!1,configurable:!0}),t.prototype.add=function(r){},t.prototype.merge=function(r){},t.prototype.include=function(r){return!0},t.prototype.newSub=function(){return this},t.instance=new t,t}(),te=function(){function t(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=void 0}return t.prototype.hasProblems=function(){return!!this.problems.length},t.prototype.mergeAll=function(r){for(var i=0,e=r;i=t.offset&&r0?q={schema:I,validationResult:F,matchingSchemas:D}:J===0&&(q.matchingSchemas.merge(D),q.validationResult.mergeEnumValues(F))}}return H.length>1&&R&&i.problems.push({location:{offset:n.offset,length:1},message:M("oneOfWarning","Matches multiple schemas when only one must validate.")}),q&&(i.merge(q.validationResult),i.propertiesMatches+=q.validationResult.propertiesMatches,i.propertiesValueMatches+=q.validationResult.propertiesValueMatches,e.merge(q.matchingSchemas)),H.length};Array.isArray(r.anyOf)&&O(r.anyOf,!1),Array.isArray(r.oneOf)&&O(r.oneOf,!0);var E=function(V){var R=new te,H=e.newSub();_(n,K(V),R,H),i.merge(R),i.propertiesMatches+=R.propertiesMatches,i.propertiesValueMatches+=R.propertiesValueMatches,e.merge(H)},j=function(V,R,H){var q=K(V),T=new te,S=e.newSub();_(n,q,T,S),e.merge(S),T.hasProblems()?H&&E(H):R&&E(R)},A=K(r.if);if(A&&j(A,K(r.then),K(r.else)),Array.isArray(r.enum)){for(var P=ge(n),w=!1,C=0,L=r.enum;C=A&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("exclusiveMaximumWarning","Value is above the exclusive maximum of {0}.",A)});var P=E(c.minimum,c.exclusiveMinimum);ee(P)&&mw&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("maximumWarning","Value is above the maximum of {0}.",w)})}function o(u,c,h,g){if(ee(c.minLength)&&u.value.lengthc.maxLength&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("maxLengthWarning","String is longer than the maximum length of {0}.",c.maxLength)}),rr(c.pattern)){var m=xe(c.pattern);m?.test(u.value)||h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||M("patternWarning",'String does not match the pattern of "{0}".',c.pattern)})}if(c.format)switch(c.format){case"uri":case"uri-reference":{var p=void 0;if(!u.value)p=M("uriEmpty","URI expected.");else{var d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(u.value);d?!d[2]&&c.format==="uri"&&(p=M("uriSchemeMissing","URI with a scheme is expected.")):p=M("uriMissing","URI is expected.")}p&&h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||M("uriFormatWarning","String is not a URI: {0}",p)})}break;case"color-hex":case"date-time":case"date":case"time":case"email":case"hostname":case"ipv4":case"ipv6":var b=gn[c.format];(!u.value||!b.pattern.exec(u.value))&&h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||b.errorMessage});default:}}function f(u,c,h,g){if(Array.isArray(c.items)){for(var m=c.items,p=0;p=m.length&&h.propertiesValueMatches++}if(u.items.length>m.length)if(typeof c.additionalItems=="object")for(var O=m.length;Oc.maxItems&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("maxItemsWarning","Array has too many items. Expected {0} or fewer.",c.maxItems)}),c.uniqueItems===!0){var C=ge(u),L=C.some(function(N,V){return V!==C.lastIndexOf(N)});L&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("uniqueItemsWarning","Array has duplicate items.")})}}function l(u,c,h,g){for(var m=Object.create(null),p=[],d=0,b=u.properties;d=0;)p.splice(ct,1),ct=p.indexOf(Gt)};if(c.properties)for(var C=0,L=Object.keys(c.properties);C0)for(var J=0,ue=p;Jc.maxProperties&&h.problems.push({location:{offset:u.offset,length:u.length},message:M("MaxPropWarning","Object has more properties than limit of {0}.",c.maxProperties)}),ee(c.minProperties)&&u.properties.length0){for(N--;N>0&&/\s/.test(n.charAt(N));)N--;V=N+1}if(l(A,P,N,V),w&&h(w,!1),C.length+L.length>0)for(var R=a.getToken();R!==17;){if(C.indexOf(R)!==-1){o();break}else if(L.indexOf(R)!==-1)break;R=o()}return w}function c(){switch(a.getTokenError()){case 4:return u(M("InvalidUnicode","Invalid unicode sequence in string."),W.InvalidUnicode),!0;case 5:return u(M("InvalidEscapeCharacter","Invalid escape character in string."),W.InvalidEscapeCharacter),!0;case 3:return u(M("UnexpectedEndOfNumber","Unexpected end of number."),W.UnexpectedEndOfNumber),!0;case 1:return u(M("UnexpectedEndOfComment","Unexpected end of comment."),W.UnexpectedEndOfComment),!0;case 2:return u(M("UnexpectedEndOfString","Unexpected end of string."),W.UnexpectedEndOfString),!0;case 6:return u(M("InvalidCharacter","Invalid characters in string. Control characters must be escaped."),W.InvalidCharacter),!0}return!1}function h(A,P){return A.length=a.getTokenOffset()+a.getTokenLength()-A.offset,P&&o(),A}function g(A){if(a.getToken()===3){var P=new mn(A,a.getTokenOffset());o();for(var w=0,C=!1;a.getToken()!==4&&a.getToken()!==17;){if(a.getToken()===5){C||u(M("ValueExpected","Value expected"),W.ValueExpected);var L=a.getTokenOffset();if(o(),a.getToken()===4){C&&l(M("TrailingComma","Trailing comma"),W.TrailingComma,L,L+1);continue}}else C&&u(M("ExpectedComma","Expected comma"),W.CommaExpected);var N=O(P);N?P.items.push(N):u(M("PropertyExpected","Value expected"),W.ValueExpected,void 0,[],[4,5]),C=!0}return a.getToken()!==4?u(M("ExpectedCloseBracket","Expected comma or closing bracket"),W.CommaOrCloseBacketExpected,P):h(P,!0)}}var m=new Ft(void 0,0,0);function p(A,P){var w=new yn(A,a.getTokenOffset(),m),C=b(w);if(!C)if(a.getToken()===16){u(M("DoubleQuotesExpected","Property keys must be doublequoted"),W.Undefined);var L=new Ft(w,a.getTokenOffset(),a.getTokenLength());L.value=a.getTokenValue(),C=L,o()}else return;w.keyNode=C;var N=P[C.value];if(N?(l(M("DuplicateKeyWarning","Duplicate object key"),W.DuplicateKey,w.keyNode.offset,w.keyNode.offset+w.keyNode.length,Z.Warning),typeof N=="object"&&l(M("DuplicateKeyWarning","Duplicate object key"),W.DuplicateKey,N.keyNode.offset,N.keyNode.offset+N.keyNode.length,Z.Warning),P[C.value]=!0):P[C.value]=w,a.getToken()===6)w.colonOffset=a.getTokenOffset(),o();else if(u(M("ColonExpected","Colon expected"),W.ColonExpected),a.getToken()===10&&t.positionAt(C.offset+C.length).line=0;i--){var e=this.contributions[i].resolveCompletion;if(e){var n=e(r);if(n)return n}}return this.promiseConstructor.resolve(r)},t.prototype.doComplete=function(r,i,e){var n=this,a={items:[],isIncomplete:!1},s=r.getText(),o=r.offsetAt(i),f=e.getNodeFromOffset(o,!0);if(this.isInComment(r,f?f.offset:0,o))return Promise.resolve(a);if(f&&o===f.offset+f.length&&o>0){var l=s[o-1];(f.type==="object"&&l==="}"||f.type==="array"&&l==="]")&&(f=f.parent)}var u=this.getCurrentWord(r,o),c;if(f&&(f.type==="string"||f.type==="number"||f.type==="boolean"||f.type==="null"))c=U.create(r.positionAt(f.offset),r.positionAt(f.offset+f.length));else{var h=o-u.length;h>0&&s[h-1]==='"'&&h--,c=U.create(r.positionAt(h),i)}var g=!1,m={},p={add:function(d){var b=d.label,y=m[b];if(y)y.documentation||(y.documentation=d.documentation),y.detail||(y.detail=d.detail);else{if(b=b.replace(/[\n]/g,"\u21B5"),b.length>60){var v=b.substr(0,57).trim()+"...";m[v]||(b=v)}c&&d.insertText!==void 0&&(d.textEdit=Y.replace(c,d.insertText)),g&&(d.commitCharacters=d.kind===Q.Property?An:Sn),d.label=b,m[b]=d,a.items.push(d)}},setAsIncomplete:function(){a.isIncomplete=!0},error:function(d){console.error(d)},log:function(d){console.log(d)},getNumberOfProposals:function(){return a.items.length}};return this.schemaService.getSchemaForResource(r.uri,e).then(function(d){var b=[],y=!0,v="",O=void 0;if(f&&f.type==="string"){var E=f.parent;E&&E.type==="property"&&E.keyNode===f&&(y=!E.valueNode,O=E,v=s.substr(f.offset+1,f.length-2),E&&(f=E.parent))}if(f&&f.type==="object"){if(f.offset===o)return a;var j=f.properties;j.forEach(function(C){(!O||O!==C)&&(m[C.keyNode.value]=Re.create("__"))});var A="";y&&(A=n.evaluateSeparatorAfter(r,r.offsetAt(c.end))),d?n.getPropertyCompletions(d,e,f,y,A,p):n.getSchemaLessPropertyCompletions(e,f,v,p);var P=qe(f);n.contributions.forEach(function(C){var L=C.collectPropertyCompletions(r.uri,P,u,y,A==="",p);L&&b.push(L)}),!d&&u.length>0&&s.charAt(o-u.length-1)!=='"'&&(p.add({kind:Q.Property,label:n.getLabelForValue(u),insertText:n.getInsertTextForProperty(u,void 0,!1,A),insertTextFormat:z.Snippet,documentation:""}),p.setAsIncomplete())}var w={};return d?n.getValueCompletions(d,e,f,o,r,p,w):n.getSchemaLessValueCompletions(e,f,o,r,p),n.contributions.length>0&&n.getContributedValueCompletions(e,f,o,r,p,b),n.promiseConstructor.all(b).then(function(){if(p.getNumberOfProposals()===0){var C=o;f&&(f.type==="string"||f.type==="number"||f.type==="boolean"||f.type==="null")&&(C=f.offset+f.length);var L=n.evaluateSeparatorAfter(r,C);n.addFillerValueCompletions(w,L,p)}return a})})},t.prototype.getPropertyCompletions=function(r,i,e,n,a,s){var o=this,f=i.getMatchingSchemas(r.schema,e.offset);f.forEach(function(l){if(l.node===e&&!l.inverted){var u=l.schema.properties;u&&Object.keys(u).forEach(function(p){var d=u[p];if(typeof d=="object"&&!d.deprecationMessage&&!d.doNotSuggest){var b={kind:Q.Property,label:p,insertText:o.getInsertTextForProperty(p,d,n,a),insertTextFormat:z.Snippet,filterText:o.getFilterTextForValue(p),documentation:o.fromMarkup(d.markdownDescription)||d.description||""};d.suggestSortText!==void 0&&(b.sortText=d.suggestSortText),b.insertText&&pe(b.insertText,"$1".concat(a))&&(b.command={title:"Suggest",command:"editor.action.triggerSuggest"}),s.add(b)}});var c=l.schema.propertyNames;if(typeof c=="object"&&!c.deprecationMessage&&!c.doNotSuggest){var h=function(p,d){d===void 0&&(d=void 0);var b={kind:Q.Property,label:p,insertText:o.getInsertTextForProperty(p,void 0,n,a),insertTextFormat:z.Snippet,filterText:o.getFilterTextForValue(p),documentation:d||o.fromMarkup(c.markdownDescription)||c.description||""};c.suggestSortText!==void 0&&(b.sortText=c.suggestSortText),b.insertText&&pe(b.insertText,"$1".concat(a))&&(b.command={title:"Suggest",command:"editor.action.triggerSuggest"}),s.add(b)};if(c.enum)for(var g=0;g(i.colonOffset||0)){var u=i.valueNode;if(u&&(e>u.offset+u.length||u.type==="object"||u.type==="array"))return;var c=i.keyNode.value;r.visit(function(g){return g.type==="property"&&g.keyNode.value===c&&g.valueNode&&l(g.valueNode),!0}),c==="$schema"&&i.parent&&!i.parent.parent&&this.addDollarSchemaCompletions(f,a)}if(i.type==="array")if(i.parent&&i.parent.type==="property"){var h=i.parent.keyNode.value;r.visit(function(g){return g.type==="property"&&g.keyNode.value===h&&g.valueNode&&g.valueNode.type==="array"&&g.valueNode.items.forEach(l),!0})}else i.items.forEach(l)},t.prototype.getValueCompletions=function(r,i,e,n,a,s,o){var f=n,l=void 0,u=void 0;if(e&&(e.type==="string"||e.type==="number"||e.type==="boolean"||e.type==="null")&&(f=e.offset+e.length,u=e,e=e.parent),!e){this.addSchemaValueCompletions(r.schema,"",s,o);return}if(e.type==="property"&&n>(e.colonOffset||0)){var c=e.valueNode;if(c&&n>c.offset+c.length)return;l=e.keyNode.value,e=e.parent}if(e&&(l!==void 0||e.type==="array")){for(var h=this.evaluateSeparatorAfter(a,f),g=i.getMatchingSchemas(r.schema,e.offset,u),m=0,p=g;m(i.colonOffset||0)){var o=i.keyNode.value,f=i.valueNode;if((!f||e<=f.offset+f.length)&&i.parent){var l=qe(i.parent);this.contributions.forEach(function(u){var c=u.collectValueCompletions(n.uri,l,o,a);c&&s.push(c)})}}},t.prototype.addSchemaValueCompletions=function(r,i,e,n){var a=this;typeof r=="object"&&(this.addEnumValueCompletions(r,i,e),this.addDefaultValueCompletions(r,i,e),this.collectTypes(r,n),Array.isArray(r.allOf)&&r.allOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}),Array.isArray(r.anyOf)&&r.anyOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}),Array.isArray(r.oneOf)&&r.oneOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}))},t.prototype.addDefaultValueCompletions=function(r,i,e,n){var a=this;n===void 0&&(n=0);var s=!1;if(se(r.default)){for(var o=r.type,f=r.default,l=n;l>0;l--)f=[f],o="array";e.add({kind:this.getSuggestionKind(o),label:this.getLabelForValue(f),insertText:this.getInsertTextForValue(f,i),insertTextFormat:z.Snippet,detail:Rt("json.suggest.default","Default value")}),s=!0}Array.isArray(r.examples)&&r.examples.forEach(function(u){for(var c=r.type,h=u,g=n;g>0;g--)h=[h],c="array";e.add({kind:a.getSuggestionKind(c),label:a.getLabelForValue(h),insertText:a.getInsertTextForValue(h,i),insertTextFormat:z.Snippet}),s=!0}),Array.isArray(r.defaultSnippets)&&r.defaultSnippets.forEach(function(u){var c=r.type,h=u.body,g=u.label,m,p;if(se(h)){for(var d=r.type,b=n;b>0;b--)h=[h],d="array";m=a.getInsertTextForSnippetValue(h,i),p=a.getFilterTextForSnippetValue(h),g=g||a.getLabelForSnippetValue(h)}else if(typeof u.bodyText=="string"){for(var y="",v="",O="",b=n;b>0;b--)y=y+O+`[ -`,v=v+` -`+O+"]",O+=" ",c="array";m=y+O+u.bodyText.split(` -`).join(` -`+O)+v+i,g=g||m,p=m.replace(/[\n]/g,"")}else return;e.add({kind:a.getSuggestionKind(c),label:g,documentation:a.fromMarkup(u.markdownDescription)||u.description,insertText:m,insertTextFormat:z.Snippet,filterText:p}),s=!0}),!s&&typeof r.items=="object"&&!Array.isArray(r.items)&&n<5&&this.addDefaultValueCompletions(r.items,i,e,n+1)},t.prototype.addEnumValueCompletions=function(r,i,e){if(se(r.const)&&e.add({kind:this.getSuggestionKind(r.type),label:this.getLabelForValue(r.const),insertText:this.getInsertTextForValue(r.const,i),insertTextFormat:z.Snippet,documentation:this.fromMarkup(r.markdownDescription)||r.description}),Array.isArray(r.enum))for(var n=0,a=r.enum.length;n0?i[0]:void 0}if(!r)return Q.Value;switch(r){case"string":return Q.Value;case"object":return Q.Module;case"property":return Q.Property;default:return Q.Value}},t.prototype.getLabelTextForMatchingNode=function(r,i){switch(r.type){case"array":return"[]";case"object":return"{}";default:var e=i.getText().substr(r.offset,r.length);return e}},t.prototype.getInsertTextForMatchingNode=function(r,i,e){switch(r.type){case"array":return this.getInsertTextForValue([],e);case"object":return this.getInsertTextForValue({},e);default:var n=i.getText().substr(r.offset,r.length)+e;return this.getInsertTextForPlainText(n)}},t.prototype.getInsertTextForProperty=function(r,i,e,n){var a=this.getInsertTextForValue(r,"");if(!e)return a;var s=a+": ",o,f=0;if(i){if(Array.isArray(i.defaultSnippets)){if(i.defaultSnippets.length===1){var l=i.defaultSnippets[0].body;se(l)&&(o=this.getInsertTextForSnippetValue(l,""))}f+=i.defaultSnippets.length}if(i.enum&&(!o&&i.enum.length===1&&(o=this.getInsertTextForGuessedValue(i.enum[0],"")),f+=i.enum.length),se(i.default)&&(o||(o=this.getInsertTextForGuessedValue(i.default,"")),f++),Array.isArray(i.examples)&&i.examples.length&&(o||(o=this.getInsertTextForGuessedValue(i.examples[0],"")),f+=i.examples.length),f===0){var u=Array.isArray(i.type)?i.type[0]:i.type;switch(u||(i.properties?u="object":i.items&&(u="array")),u){case"boolean":o="$1";break;case"string":o='"$1"';break;case"object":o="{$1}";break;case"array":o="[$1]";break;case"number":case"integer":o="${1:0}";break;case"null":o="${1:null}";break;default:return a}}}return(!o||f>1)&&(o="$1"),s+o+n},t.prototype.getCurrentWord=function(r,i){for(var e=i-1,n=r.getText();e>=0&&` -\r\v":{[,]}`.indexOf(n.charAt(e))===-1;)e--;return n.substring(e+1,i)},t.prototype.evaluateSeparatorAfter=function(r,i){var e=le(r.getText(),!0);e.setPosition(i);var n=e.scan();switch(n){case 5:case 2:case 4:case 17:return"";default:return","}},t.prototype.findItemAtOffset=function(r,i,e){for(var n=le(i.getText(),!0),a=r.items,s=a.length-1;s>=0;s--){var o=a[s];if(e>o.offset+o.length){n.setPosition(o.offset+o.length);var f=n.scan();return f===5&&e>=n.getTokenOffset()+n.getTokenLength()?s+1:s}else if(e>=o.offset)return s}return 0},t.prototype.isInComment=function(r,i,e){var n=le(r.getText(),!1);n.setPosition(i);for(var a=n.scan();a!==17&&n.getTokenOffset()+n.getTokenLength()a.offset+1&&n=0;c--){var h=this.contributions[c],g=h.getInfoContribution(r.uri,u);if(g)return g.then(function(m){return l(m)})}return this.schemaService.getSchemaForResource(r.uri,e).then(function(m){if(m&&a){var p=e.getMatchingSchemas(m.schema,a.offset),d=void 0,b=void 0,y=void 0,v=void 0;p.every(function(E){if(E.node===a&&!E.inverted&&E.schema&&(d=d||E.schema.title,b=b||E.schema.markdownDescription||Ut(E.schema.description),E.schema.enum)){var j=E.schema.enum.indexOf(ge(a));E.schema.markdownEnumDescriptions?y=E.schema.markdownEnumDescriptions[j]:E.schema.enumDescriptions&&(y=Ut(E.schema.enumDescriptions[j])),y&&(v=E.schema.enum[j],typeof v!="string"&&(v=JSON.stringify(v)))}return!0});var O="";return d&&(O=Ut(d)),b&&(O.length>0&&(O+=` - -`),O+=b),y&&(O.length>0&&(O+=` - -`),O+="`".concat(wn(v),"`: ").concat(y)),l([O])}return null})},t}();function Ut(t){if(t){var r=t.replace(/([^\n\r])(\r?\n)([^\n\r])/gm,`$1 - -$3`);return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}}function wn(t){return t.indexOf("`")!==-1?"`` "+t+" ``":t}var Tn=he(),Ir=function(){function t(r,i){this.jsonSchemaService=r,this.promise=i,this.validationEnabled=!0}return t.prototype.configure=function(r){r&&(this.validationEnabled=r.validate!==!1,this.commentSeverity=r.allowComments?void 0:Z.Error)},t.prototype.doValidation=function(r,i,e,n){var a=this;if(!this.validationEnabled)return this.promise.resolve([]);var s=[],o={},f=function(h){var g=h.range.start.line+" "+h.range.start.character+" "+h.message;o[g]||(o[g]=!0,s.push(h))},l=function(h){var g=e?.trailingCommas?tt(e.trailingCommas):Z.Error,m=e?.comments?tt(e.comments):a.commentSeverity,p=e?.schemaValidation?tt(e.schemaValidation):Z.Warning,d=e?.schemaRequest?tt(e.schemaRequest):Z.Warning;if(h){if(h.errors.length&&i.root&&d){var b=i.root,y=b.type==="object"?b.properties[0]:void 0;if(y&&y.keyNode.value==="$schema"){var v=y.valueNode||y,O=U.create(r.positionAt(v.offset),r.positionAt(v.offset+v.length));f(ae.create(O,h.errors[0],d,W.SchemaResolveError))}else{var O=U.create(r.positionAt(b.offset),r.positionAt(b.offset+1));f(ae.create(O,h.errors[0],d,W.SchemaResolveError))}}else if(p){var E=i.validate(r,h.schema,p);E&&E.forEach(f)}Er(h.schema)&&(m=void 0),jr(h.schema)&&(g=void 0)}for(var j=0,A=i.syntaxErrors;j=rt&&t<=Pn?t-rt+10:0)}function Mr(t){if(t[0]==="#")switch(t.length){case 4:return{red:B(t.charCodeAt(1))*17/255,green:B(t.charCodeAt(2))*17/255,blue:B(t.charCodeAt(3))*17/255,alpha:1};case 5:return{red:B(t.charCodeAt(1))*17/255,green:B(t.charCodeAt(2))*17/255,blue:B(t.charCodeAt(3))*17/255,alpha:B(t.charCodeAt(4))*17/255};case 7:return{red:(B(t.charCodeAt(1))*16+B(t.charCodeAt(2)))/255,green:(B(t.charCodeAt(3))*16+B(t.charCodeAt(4)))/255,blue:(B(t.charCodeAt(5))*16+B(t.charCodeAt(6)))/255,alpha:1};case 9:return{red:(B(t.charCodeAt(1))*16+B(t.charCodeAt(2)))/255,green:(B(t.charCodeAt(3))*16+B(t.charCodeAt(4)))/255,blue:(B(t.charCodeAt(5))*16+B(t.charCodeAt(6)))/255,alpha:(B(t.charCodeAt(7))*16+B(t.charCodeAt(8)))/255}}}var Lr=function(){function t(r){this.schemaService=r}return t.prototype.findDocumentSymbols=function(r,i,e){var n=this;e===void 0&&(e={resultLimit:Number.MAX_VALUE});var a=i.root;if(!a)return[];var s=e.resultLimit||Number.MAX_VALUE,o=r.uri;if((o==="vscode://defaultsettings/keybindings.json"||pe(o.toLowerCase(),"/user/keybindings.json"))&&a.type==="array"){for(var f=[],l=0,u=a.items;l0){s--;var C=Se.create(r.uri,ve(r,P)),L=A?A+"."+P.keyNode.value:P.keyNode.value;v.push({name:n.getKeyLabel(P),kind:n.getSymbolKind(w.type),location:C,containerName:A}),d.push({node:w,containerName:L})}else y=!0})};b0){s--;var L=ve(r,w),N=L,V=String(C),R={name:V,kind:n.getSymbolKind(w.type),range:L,selectionRange:N,children:[]};P.push(R),y.push({result:R.children,node:w})}else O=!0}):A.type==="object"&&A.properties.forEach(function(w){var C=w.valueNode;if(C)if(s>0){s--;var L=ve(r,w),N=ve(r,w.keyNode),V=[],R={name:n.getKeyLabel(w),kind:n.getSymbolKind(C.type),range:L,selectionRange:N,children:V,detail:n.getDetail(C)};P.push(R),y.push({result:V,node:C})}else O=!0})};v{"use strict";var t={470:e=>{function n(o){if(typeof o!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(o))}function a(o,f){for(var l,u="",c=0,h=-1,g=0,m=0;m<=o.length;++m){if(m2){var p=u.lastIndexOf("/");if(p!==u.length-1){p===-1?(u="",c=0):c=(u=u.slice(0,p)).length-1-u.lastIndexOf("/"),h=m,g=0;continue}}else if(u.length===2||u.length===1){u="",c=0,h=m,g=0;continue}}f&&(u.length>0?u+="/..":u="..",c=2)}else u.length>0?u+="/"+o.slice(h+1,m):u=o.slice(h+1,m),c=m-h-1;h=m,g=0}else l===46&&g!==-1?++g:g=-1}return u}var s={resolve:function(){for(var o,f="",l=!1,u=arguments.length-1;u>=-1&&!l;u--){var c;u>=0?c=arguments[u]:(o===void 0&&(o=process.cwd()),c=o),n(c),c.length!==0&&(f=c+"/"+f,l=c.charCodeAt(0)===47)}return f=a(f,!l),l?f.length>0?"/"+f:"/":f.length>0?f:"."},normalize:function(o){if(n(o),o.length===0)return".";var f=o.charCodeAt(0)===47,l=o.charCodeAt(o.length-1)===47;return(o=a(o,!f)).length!==0||f||(o="."),o.length>0&&l&&(o+="/"),f?"/"+o:o},isAbsolute:function(o){return n(o),o.length>0&&o.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var o,f=0;f0&&(o===void 0?o=l:o+="/"+l)}return o===void 0?".":s.normalize(o)},relative:function(o,f){if(n(o),n(f),o===f||(o=s.resolve(o))===(f=s.resolve(f)))return"";for(var l=1;lm){if(f.charCodeAt(h+d)===47)return f.slice(h+d+1);if(d===0)return f.slice(h+d)}else c>m&&(o.charCodeAt(l+d)===47?p=d:d===0&&(p=0));break}var b=o.charCodeAt(l+d);if(b!==f.charCodeAt(h+d))break;b===47&&(p=d)}var y="";for(d=l+p+1;d<=u;++d)d!==u&&o.charCodeAt(d)!==47||(y.length===0?y+="..":y+="/..");return y.length>0?y+f.slice(h+p):(h+=p,f.charCodeAt(h)===47&&++h,f.slice(h))},_makeLong:function(o){return o},dirname:function(o){if(n(o),o.length===0)return".";for(var f=o.charCodeAt(0),l=f===47,u=-1,c=!0,h=o.length-1;h>=1;--h)if((f=o.charCodeAt(h))===47){if(!c){u=h;break}}else c=!1;return u===-1?l?"/":".":l&&u===1?"//":o.slice(0,u)},basename:function(o,f){if(f!==void 0&&typeof f!="string")throw new TypeError('"ext" argument must be a string');n(o);var l,u=0,c=-1,h=!0;if(f!==void 0&&f.length>0&&f.length<=o.length){if(f.length===o.length&&f===o)return"";var g=f.length-1,m=-1;for(l=o.length-1;l>=0;--l){var p=o.charCodeAt(l);if(p===47){if(!h){u=l+1;break}}else m===-1&&(h=!1,m=l+1),g>=0&&(p===f.charCodeAt(g)?--g==-1&&(c=l):(g=-1,c=m))}return u===c?c=m:c===-1&&(c=o.length),o.slice(u,c)}for(l=o.length-1;l>=0;--l)if(o.charCodeAt(l)===47){if(!h){u=l+1;break}}else c===-1&&(h=!1,c=l+1);return c===-1?"":o.slice(u,c)},extname:function(o){n(o);for(var f=-1,l=0,u=-1,c=!0,h=0,g=o.length-1;g>=0;--g){var m=o.charCodeAt(g);if(m!==47)u===-1&&(c=!1,u=g+1),m===46?f===-1?f=g:h!==1&&(h=1):f!==-1&&(h=-1);else if(!c){l=g+1;break}}return f===-1||u===-1||h===0||h===1&&f===u-1&&f===l+1?"":o.slice(f,u)},format:function(o){if(o===null||typeof o!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof o);return function(f,l){var u=l.dir||l.root,c=l.base||(l.name||"")+(l.ext||"");return u?u===l.root?u+c:u+"/"+c:c}(0,o)},parse:function(o){n(o);var f={root:"",dir:"",base:"",ext:"",name:""};if(o.length===0)return f;var l,u=o.charCodeAt(0),c=u===47;c?(f.root="/",l=1):l=0;for(var h=-1,g=0,m=-1,p=!0,d=o.length-1,b=0;d>=l;--d)if((u=o.charCodeAt(d))!==47)m===-1&&(p=!1,m=d+1),u===46?h===-1?h=d:b!==1&&(b=1):h!==-1&&(b=-1);else if(!p){g=d+1;break}return h===-1||m===-1||b===0||b===1&&h===m-1&&h===g+1?m!==-1&&(f.base=f.name=g===0&&c?o.slice(1,m):o.slice(g,m)):(g===0&&c?(f.name=o.slice(1,h),f.base=o.slice(1,m)):(f.name=o.slice(g,h),f.base=o.slice(g,m)),f.ext=o.slice(h,m)),g>0?f.dir=o.slice(0,g-1):c&&(f.dir="/"),f},sep:"/",delimiter:":",win32:null,posix:null};s.posix=s,e.exports=s},447:(e,n,a)=>{var s;if(a.r(n),a.d(n,{URI:()=>y,Utils:()=>V}),typeof process=="object")s=process.platform==="win32";else if(typeof navigator=="object"){var o=navigator.userAgent;s=o.indexOf("Windows")>=0}var f,l,u=(f=function(T,S){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,I){k.__proto__=I}||function(k,I){for(var F in I)Object.prototype.hasOwnProperty.call(I,F)&&(k[F]=I[F])})(T,S)},function(T,S){if(typeof S!="function"&&S!==null)throw new TypeError("Class extends value "+String(S)+" is not a constructor or null");function k(){this.constructor=T}f(T,S),T.prototype=S===null?Object.create(S):(k.prototype=S.prototype,new k)}),c=/^\w[\w\d+.-]*$/,h=/^\//,g=/^\/\//;function m(T,S){if(!T.scheme&&S)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'.concat(T.authority,'", path: "').concat(T.path,'", query: "').concat(T.query,'", fragment: "').concat(T.fragment,'"}'));if(T.scheme&&!c.test(T.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(T.path){if(T.authority){if(!h.test(T.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(g.test(T.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}var p="",d="/",b=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,y=function(){function T(S,k,I,F,D,J){J===void 0&&(J=!1),typeof S=="object"?(this.scheme=S.scheme||p,this.authority=S.authority||p,this.path=S.path||p,this.query=S.query||p,this.fragment=S.fragment||p):(this.scheme=function(ue,G){return ue||G?ue:"file"}(S,J),this.authority=k||p,this.path=function(ue,G){switch(ue){case"https":case"http":case"file":G?G[0]!==d&&(G=d+G):G=d}return G}(this.scheme,I||p),this.query=F||p,this.fragment=D||p,m(this,J))}return T.isUri=function(S){return S instanceof T||!!S&&typeof S.authority=="string"&&typeof S.fragment=="string"&&typeof S.path=="string"&&typeof S.query=="string"&&typeof S.scheme=="string"&&typeof S.fsPath=="string"&&typeof S.with=="function"&&typeof S.toString=="function"},Object.defineProperty(T.prototype,"fsPath",{get:function(){return P(this,!1)},enumerable:!1,configurable:!0}),T.prototype.with=function(S){if(!S)return this;var k=S.scheme,I=S.authority,F=S.path,D=S.query,J=S.fragment;return k===void 0?k=this.scheme:k===null&&(k=p),I===void 0?I=this.authority:I===null&&(I=p),F===void 0?F=this.path:F===null&&(F=p),D===void 0?D=this.query:D===null&&(D=p),J===void 0?J=this.fragment:J===null&&(J=p),k===this.scheme&&I===this.authority&&F===this.path&&D===this.query&&J===this.fragment?this:new O(k,I,F,D,J)},T.parse=function(S,k){k===void 0&&(k=!1);var I=b.exec(S);return I?new O(I[2]||p,N(I[4]||p),N(I[5]||p),N(I[7]||p),N(I[9]||p),k):new O(p,p,p,p,p)},T.file=function(S){var k=p;if(s&&(S=S.replace(/\\/g,d)),S[0]===d&&S[1]===d){var I=S.indexOf(d,2);I===-1?(k=S.substring(2),S=d):(k=S.substring(2,I),S=S.substring(I)||d)}return new O("file",k,S,p,p)},T.from=function(S){var k=new O(S.scheme,S.authority,S.path,S.query,S.fragment);return m(k,!0),k},T.prototype.toString=function(S){return S===void 0&&(S=!1),w(this,S)},T.prototype.toJSON=function(){return this},T.revive=function(S){if(S){if(S instanceof T)return S;var k=new O(S);return k._formatted=S.external,k._fsPath=S._sep===v?S.fsPath:null,k}return S},T}(),v=s?1:void 0,O=function(T){function S(){var k=T!==null&&T.apply(this,arguments)||this;return k._formatted=null,k._fsPath=null,k}return u(S,T),Object.defineProperty(S.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=P(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),S.prototype.toString=function(k){return k===void 0&&(k=!1),k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)},S.prototype.toJSON=function(){var k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=v),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k},S}(y),E=((l={})[58]="%3A",l[47]="%2F",l[63]="%3F",l[35]="%23",l[91]="%5B",l[93]="%5D",l[64]="%40",l[33]="%21",l[36]="%24",l[38]="%26",l[39]="%27",l[40]="%28",l[41]="%29",l[42]="%2A",l[43]="%2B",l[44]="%2C",l[59]="%3B",l[61]="%3D",l[32]="%20",l);function j(T,S){for(var k=void 0,I=-1,F=0;F=97&&D<=122||D>=65&&D<=90||D>=48&&D<=57||D===45||D===46||D===95||D===126||S&&D===47)I!==-1&&(k+=encodeURIComponent(T.substring(I,F)),I=-1),k!==void 0&&(k+=T.charAt(F));else{k===void 0&&(k=T.substr(0,F));var J=E[D];J!==void 0?(I!==-1&&(k+=encodeURIComponent(T.substring(I,F)),I=-1),k+=J):I===-1&&(I=F)}}return I!==-1&&(k+=encodeURIComponent(T.substring(I))),k!==void 0?k:T}function A(T){for(var S=void 0,k=0;k1&&T.scheme==="file"?"//".concat(T.authority).concat(T.path):T.path.charCodeAt(0)===47&&(T.path.charCodeAt(1)>=65&&T.path.charCodeAt(1)<=90||T.path.charCodeAt(1)>=97&&T.path.charCodeAt(1)<=122)&&T.path.charCodeAt(2)===58?S?T.path.substr(1):T.path[1].toLowerCase()+T.path.substr(2):T.path,s&&(k=k.replace(/\//g,"\\")),k}function w(T,S){var k=S?A:j,I="",F=T.scheme,D=T.authority,J=T.path,ue=T.query,G=T.fragment;if(F&&(I+=F,I+=":"),(D||F==="file")&&(I+=d,I+=d),D){var ne=D.indexOf("@");if(ne!==-1){var Oe=D.substr(0,ne);D=D.substr(ne+1),(ne=Oe.indexOf(":"))===-1?I+=k(Oe,!1):(I+=k(Oe.substr(0,ne),!1),I+=":",I+=k(Oe.substr(ne+1),!1)),I+="@"}(ne=(D=D.toLowerCase()).indexOf(":"))===-1?I+=k(D,!1):(I+=k(D.substr(0,ne),!1),I+=D.substr(ne))}if(J){if(J.length>=3&&J.charCodeAt(0)===47&&J.charCodeAt(2)===58)(ce=J.charCodeAt(1))>=65&&ce<=90&&(J="/".concat(String.fromCharCode(ce+32),":").concat(J.substr(3)));else if(J.length>=2&&J.charCodeAt(1)===58){var ce;(ce=J.charCodeAt(0))>=65&&ce<=90&&(J="".concat(String.fromCharCode(ce+32),":").concat(J.substr(2)))}I+=k(J,!0)}return ue&&(I+="?",I+=k(ue,!1)),G&&(I+="#",I+=S?G:j(G,!1)),I}function C(T){try{return decodeURIComponent(T)}catch{return T.length>3?T.substr(0,3)+C(T.substr(3)):T}}var L=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function N(T){return T.match(L)?T.replace(L,function(S){return C(S)}):T}var V,R=a(470),H=function(T,S,k){if(k||arguments.length===2)for(var I,F=0,D=S.length;F{for(var a in n)i.o(n,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},i.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),i.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i(447)})();var{URI:ye,Utils:Pi}=Fr;function $r(t,r){if(typeof t!="string")throw new TypeError("Expected a string");for(var i=String(t),e="",n=r?!!r.extended:!1,a=r?!!r.globstar:!1,s=!1,o=r&&typeof r.flags=="string"?r.flags:"",f,l=0,u=i.length;l1&&(c==="/"||c===void 0||c==="{"||c===",")&&(g==="/"||g===void 0||g===","||g==="}");m?(g==="/"?l++:c==="/"&&e.endsWith("\\/")&&(e=e.substr(0,e.length-2)),e+="((?:[^/]*(?:/|$))*)"):e+="([^/]*)"}break;default:e+=f}return(!o||!~o.indexOf("g"))&&(e="^"+e+"$"),new RegExp(e,o)}var de=he(),En="!",jn="/",Nn=function(){function t(r,i){this.globWrappers=[];try{for(var e=0,n=r;e0&&(a[0]===jn&&(a=a.substring(1)),this.globWrappers.push({regexp:$r("**/"+a,{extended:!0,globstar:!0}),include:s}))}this.uris=i}catch{this.globWrappers.length=0,this.uris=[]}}return t.prototype.matchesPattern=function(r){for(var i=!1,e=0,n=this.globWrappers;e0;)this.callOnDispose.pop()()},t.prototype.onResourceChange=function(r){var i=this;this.cachedSchemaForResource=void 0;var e=!1;r=be(r);for(var n=[r],a=Object.keys(this.schemasById).map(function(l){return i.schemasById[l]});n.length;)for(var s=n.pop(),o=0;o1&&(n=a[1]),pe(n,".")&&(n=n.substr(0,n.length-1)),new ze({},[de("json.schema.nocontent","Unable to load schema from '{0}': {1}.",ot(r),n)])})},t.prototype.resolveSchemaContent=function(r,i){var e=this,n=r.errors.slice(0),a=r.schema;if(a.$schema){var s=be(a.$schema);if(s==="http://json-schema.org/draft-03/schema")return this.promise.resolve(new Dr({},[de("json.schema.draft03.notsupported","Draft-03 schemas are not supported.")]));s==="https://json-schema.org/draft/2019-09/schema"?n.push(de("json.schema.draft201909.notsupported","Draft 2019-09 schemas are not yet fully supported.")):s==="https://json-schema.org/draft/2020-12/schema"&&n.push(de("json.schema.draft202012.notsupported","Draft 2020-12 schemas are not yet fully supported."))}var o=this.contextService,f=function(p,d){d=decodeURIComponent(d);var b=p;return d[0]==="/"&&(d=d.substring(1)),d.split("/").some(function(y){return y=y.replace(/~1/g,"/").replace(/~0/g,"~"),b=b[y],!b}),b},l=function(p,d,b){return d.anchors||(d.anchors=m(p)),d.anchors.get(b)},u=function(p,d){for(var b in d)d.hasOwnProperty(b)&&!p.hasOwnProperty(b)&&b!=="id"&&b!=="$id"&&(p[b]=d[b])},c=function(p,d,b,y){var v;y===void 0||y.length===0?v=d:y.charAt(0)==="/"?v=f(d,y):v=l(d,b,y),v?u(p,v):n.push(de("json.schema.invalidid","$ref '{0}' in '{1}' can not be resolved.",y,b.uri))},h=function(p,d,b,y){o&&!/^[A-Za-z][A-Za-z0-9+\-.+]*:\/\/.*/.test(d)&&(d=o.resolveRelativePath(d,y.uri)),d=be(d);var v=e.getOrAddSchemaHandle(d);return v.getUnresolvedSchema().then(function(O){if(y.dependencies.add(d),O.errors.length){var E=b?d+"#"+b:d;n.push(de("json.schema.problemloadingref","Problems loading reference '{0}': {1}",E,O.errors[0]))}return c(p,O.schema,v,b),g(p,O.schema,v)})},g=function(p,d,b){var y=[];return e.traverseNodes(p,function(v){for(var O=new Set;v.$ref;){var E=v.$ref,j=E.split("#",2);if(delete v.$ref,j[0].length>0){y.push(h(v,j[0],j[1],b));return}else if(!O.has(E)){var A=j[1];c(v,d,b,A),O.add(E)}}}),e.promise.all(y)},m=function(p){var d=new Map;return e.traverseNodes(p,function(b){var y=b.$id||b.id;if(typeof y=="string"&&y.charAt(0)==="#"){var v=y.substring(1);d.has(v)?n.push(de("json.schema.duplicateid","Duplicate id declaration: '{0}'",y)):d.set(v,b)}}),d};return g(a,a,i).then(function(p){return new Dr(a,n)})},t.prototype.traverseNodes=function(r,i){if(!r||typeof r!="object")return Promise.resolve(null);for(var e=new Set,n=function(){for(var l=[],u=0;u0?this.createCombinedSchema(r,a).getResolvedSchema():this.promise.resolve(void 0);return this.cachedSchemaForResource={resource:r,resolvedSchema:s},s},t.prototype.createCombinedSchema=function(r,i){if(i.length===1)return this.getOrAddSchemaHandle(i[0]);var e="schemaservice://combinedSchema/"+encodeURIComponent(r),n={allOf:i.map(function(a){return{$ref:a}})};return this.addSchemaHandle(e,n)},t.prototype.getMatchingSchemas=function(r,i,e){if(e){var n=e.id||"schemaservice://untitled/matchingSchemas/"+Ln++,a=this.addSchemaHandle(n,e);return a.getResolvedSchema().then(function(s){return i.getMatchingSchemas(s.schema).filter(function(o){return!o.inverted})})}return this.getSchemaForResource(r.uri,i).then(function(s){return s?i.getMatchingSchemas(s.schema).filter(function(o){return!o.inverted}):[]})},t}();var Ln=0;function be(t){try{return ye.parse(t).toString(!0)}catch{return t}}function Vn(t){try{return ye.parse(t).with({fragment:null,query:null}).toString(!0)}catch{return t}}function ot(t){try{var r=ye.parse(t);if(r.scheme==="file")return r.fsPath}catch{}return t}function Ur(t,r){var i=[],e=[],n=[],a=-1,s=le(t.getText(),!1),o=s.scan();function f(C){i.push(C),e.push(n.length)}for(;o!==17;){switch(o){case 1:case 3:{var l=t.positionAt(s.getTokenOffset()).line,u={startLine:l,endLine:l,kind:o===1?"object":"array"};n.push(u);break}case 2:case 4:{var c=o===2?"object":"array";if(n.length>0&&n[n.length-1].kind===c){var u=n.pop(),h=t.positionAt(s.getTokenOffset()).line;u&&h>u.startLine+1&&a!==u.startLine&&(u.endLine=h-1,f(u),a=u.startLine)}break}case 13:{var l=t.positionAt(s.getTokenOffset()).line,g=t.positionAt(s.getTokenOffset()+s.getTokenLength()).line;s.getTokenError()===1&&l+1=0&&n[d].kind!==Ae.Region;)d--;if(d>=0){var u=n[d];n.length=d,h>u.startLine&&a!==u.startLine&&(u.endLine=h,f(u),a=u.startLine)}}}break}}o=s.scan()}var b=r&&r.rangeLimit;if(typeof b!="number"||i.length<=b)return i;r&&r.onRangeLimitExceeded&&r.onRangeLimitExceeded(t.uri);for(var y=[],v=0,O=e;vb){A=d;break}j+=P}}for(var w=[],d=0;d=c&&f<=h&&u.push(n(c,h)),u.push(n(l.offset,l.offset+l.length));break;case"number":case"boolean":case"null":case"property":u.push(n(l.offset,l.offset+l.length));break}if(l.type==="property"||l.parent&&l.parent.type==="array"){var g=s(l.offset+l.length,5);g!==-1&&u.push(n(l.offset,g))}l=l.parent}for(var m=void 0,p=u.length-1;p>=0;p--)m=Ne.create(u[p],m);return m||(m=Ne.create(U.create(o,o))),m}function n(o,f){return U.create(t.positionAt(o),t.positionAt(f))}var a=le(t.getText(),!0);function s(o,f){a.setPosition(o);var l=a.scan();return l===f?a.getTokenOffset()+a.getTokenLength():-1}return r.map(e)}function Jr(t,r){var i=[];return r.visit(function(e){var n;if(e.type==="property"&&e.keyNode.value==="$ref"&&((n=e.valueNode)===null||n===void 0?void 0:n.type)==="string"){var a=e.valueNode.value,s=$n(r,a);if(s){var o=t.positionAt(s.offset);i.push({target:"".concat(t.uri,"#").concat(o.line+1,",").concat(o.character+1),range:Fn(t,e.valueNode)})}}return!0}),Promise.resolve(i)}function Fn(t,r){return U.create(t.positionAt(r.offset+1),t.positionAt(r.offset+r.length-1))}function $n(t,r){var i=Dn(r);return i?Jt(i,t.root):null}function Jt(t,r){if(!r)return null;if(t.length===0)return r;var i=t.shift();if(r&&r.type==="object"){var e=r.properties.find(function(s){return s.keyNode.value===i});return e?Jt(t,e.valueNode):null}else if(r&&r.type==="array"&&i.match(/^(0|[1-9][0-9]*)$/)){var n=Number.parseInt(i),a=r.items[n];return a?Jt(t,a):null}return null}function Dn(t){return t==="#"?[]:t[0]!=="#"||t[1]!=="/"?null:t.substring(2).split(/\//).map(Rn)}function Rn(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function qr(t){var r=t.promiseConstructor||Promise,i=new Rr(t.schemaRequestService,t.workspaceContext,r);i.setSchemaContributions(at);var e=new Cr(i,t.contributions,r,t.clientCapabilities),n=new Pr(i,t.contributions,r),a=new Lr(i),s=new Ir(i,r);return{configure:function(o){i.clearExternalSchemas(),o.schemas&&o.schemas.forEach(function(f){i.registerExternalSchema(f.uri,f.fileMatch,f.schema)}),s.configure(o)},resetSchema:function(o){return i.onResourceChange(o)},doValidation:s.doValidation.bind(s),getLanguageStatus:s.getLanguageStatus.bind(s),parseJSONDocument:function(o){return Or(o,{collectComments:!0})},newJSONDocument:function(o,f){return Tr(o,f)},getMatchingSchemas:i.getMatchingSchemas.bind(i),doResolve:e.doResolve.bind(e),doComplete:e.doComplete.bind(e),findDocumentSymbols:a.findDocumentSymbols.bind(a),findDocumentSymbols2:a.findDocumentSymbols2.bind(a),findDocumentColors:a.findDocumentColors.bind(a),getColorPresentations:a.getColorPresentations.bind(a),doHover:n.doHover.bind(n),getFoldingRanges:Ur,getSelectionRanges:Wr,findDefinition:function(){return Promise.resolve([])},findLinks:Jr,format:function(o,f,l){var u=void 0;if(f){var c=o.offsetAt(f.start),h=o.offsetAt(f.end)-c;u={offset:c,length:h}}var g={tabSize:l?l.tabSize:4,insertSpaces:l?.insertSpaces===!0,insertFinalNewline:l?.insertFinalNewline===!0,eol:` -`};return tr(o.getText(),u,g).map(function(m){return Y.replace(U.create(o.positionAt(m.offset),o.positionAt(m.offset+m.length)),m.content)})}}}var zr;typeof fetch<"u"&&(zr=function(t){return fetch(t).then(r=>r.text())});var st=class{_ctx;_languageService;_languageSettings;_languageId;constructor(r,i){this._ctx=r,this._languageSettings=i.languageSettings,this._languageId=i.languageId,this._languageService=qr({workspaceContext:{resolveRelativePath:(e,n)=>{let a=n.substr(0,n.lastIndexOf("/")+1);return qn(a,e)}},schemaRequestService:i.enableSchemaRequest?zr:void 0}),this._languageService.configure(this._languageSettings)}async doValidation(r){let i=this._getTextDocument(r);if(i){let e=this._languageService.parseJSONDocument(i);return this._languageService.doValidation(i,e,this._languageSettings)}return Promise.resolve([])}async doComplete(r,i){let e=this._getTextDocument(r);if(!e)return null;let n=this._languageService.parseJSONDocument(e);return this._languageService.doComplete(e,i,n)}async doResolve(r){return this._languageService.doResolve(r)}async doHover(r,i){let e=this._getTextDocument(r);if(!e)return null;let n=this._languageService.parseJSONDocument(e);return this._languageService.doHover(e,i,n)}async format(r,i,e){let n=this._getTextDocument(r);if(!n)return[];let a=this._languageService.format(n,i,e);return Promise.resolve(a)}async resetSchema(r){return Promise.resolve(this._languageService.resetSchema(r))}async findDocumentSymbols(r){let i=this._getTextDocument(r);if(!i)return[];let e=this._languageService.parseJSONDocument(i),n=this._languageService.findDocumentSymbols(i,e);return Promise.resolve(n)}async findDocumentColors(r){let i=this._getTextDocument(r);if(!i)return[];let e=this._languageService.parseJSONDocument(i),n=this._languageService.findDocumentColors(i,e);return Promise.resolve(n)}async getColorPresentations(r,i,e){let n=this._getTextDocument(r);if(!n)return[];let a=this._languageService.parseJSONDocument(n),s=this._languageService.getColorPresentations(n,a,i,e);return Promise.resolve(s)}async getFoldingRanges(r,i){let e=this._getTextDocument(r);if(!e)return[];let n=this._languageService.getFoldingRanges(e,i);return Promise.resolve(n)}async getSelectionRanges(r,i){let e=this._getTextDocument(r);if(!e)return[];let n=this._languageService.parseJSONDocument(e),a=this._languageService.getSelectionRanges(e,i,n);return Promise.resolve(a)}_getTextDocument(r){let i=this._ctx.getMirrorModels();for(let e of i)if(e.uri.toString()===r)return We.create(r,this._languageId,e.version,e.getValue());return null}},Wn="/".charCodeAt(0),qt=".".charCodeAt(0);function Jn(t){return t.charCodeAt(0)===Wn}function qn(t,r){if(Jn(r)){let i=ye.parse(t),e=r.split("/");return i.with({path:Br(e)}).toString()}return zn(t,r)}function Br(t){let r=[];for(let e of t)e.length===0||e.length===1&&e.charCodeAt(0)===qt||(e.length===2&&e.charCodeAt(0)===qt&&e.charCodeAt(1)===qt?r.pop():r.push(e));t.length>1&&t[t.length-1].length===0&&r.push("");let i=r.join("/");return t[0].length===0&&(i="/"+i),i}function zn(t,...r){let i=ye.parse(t),e=i.path.split("/");for(let n of r)e.push(...n.split("/"));return i.with({path:Br(e)}).toString()}function Bn(t,r){return new st(t,r)}return Yr(_n);})(); -return moduleExports; -}); diff --git a/static/monaco-editor/min/vs/language/json/jsonWorker.js.gz b/static/monaco-editor/min/vs/language/json/jsonWorker.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..80143f533e4dfb3225c6c6bdfa769ae38b8ffa9b GIT binary patch literal 36682 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 literal 0 HcmV?d00001 diff --git a/static/monaco-editor/min/vs/loader.js b/static/monaco-editor/min/vs/loader.js deleted file mode 100644 index a5537bc..0000000 --- a/static/monaco-editor/min/vs/loader.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict";/*!----------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948) - * Released under the MIT license - * https://github.com/microsoft/vscode/blob/main/LICENSE.txt - *-----------------------------------------------------------*/const _amdLoaderGlobal=this,_commonjsGlobal=typeof global=="object"?global:{};var AMDLoader;(function(u){u.global=_amdLoaderGlobal;class y{get isWindows(){return this._detect(),this._isWindows}get isNode(){return this._detect(),this._isNode}get isElectronRenderer(){return this._detect(),this._isElectronRenderer}get isWebWorker(){return this._detect(),this._isWebWorker}get isElectronNodeIntegrationWebWorker(){return this._detect(),this._isElectronNodeIntegrationWebWorker}constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,this._isElectronRenderer=!1,this._isWebWorker=!1,this._isElectronNodeIntegrationWebWorker=!1}_detect(){this._detected||(this._detected=!0,this._isWindows=y._isWindows(),this._isNode=typeof module<"u"&&!!module.exports,this._isElectronRenderer=typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.electron<"u"&&process.type==="renderer",this._isWebWorker=typeof u.global.importScripts=="function",this._isElectronNodeIntegrationWebWorker=this._isWebWorker&&typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.electron<"u"&&process.type==="worker")}static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.indexOf("Windows")>=0?!0:typeof process<"u"?process.platform==="win32":!1}}u.Environment=y})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{constructor(r,c,a){this.type=r,this.detail=c,this.timestamp=a}}u.LoaderEvent=y;class m{constructor(r){this._events=[new y(1,"",r)]}record(r,c){this._events.push(new y(r,c,u.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}u.LoaderEventRecorder=m;class p{record(r,c){}getEvents(){return[]}}p.INSTANCE=new p,u.NullLoaderEventRecorder=p})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{static fileUriToFilePath(p,h){if(h=decodeURI(h).replace(/%23/g,"#"),p){if(/^file:\/\/\//.test(h))return h.substr(8);if(/^file:\/\//.test(h))return h.substr(5)}else if(/^file:\/\//.test(h))return h.substr(7);return h}static startsWith(p,h){return p.length>=h.length&&p.substr(0,h.length)===h}static endsWith(p,h){return p.length>=h.length&&p.substr(p.length-h.length)===h}static containsQueryString(p){return/^[^\#]*\?/gi.test(p)}static isAbsolutePath(p){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(p)}static forEachProperty(p,h){if(p){let r;for(r in p)p.hasOwnProperty(r)&&h(r,p[r])}}static isEmpty(p){let h=!0;return y.forEachProperty(p,()=>{h=!1}),h}static recursiveClone(p){if(!p||typeof p!="object"||p instanceof RegExp||!Array.isArray(p)&&Object.getPrototypeOf(p)!==Object.prototype)return p;let h=Array.isArray(p)?[]:{};return y.forEachProperty(p,(r,c)=>{c&&typeof c=="object"?h[r]=y.recursiveClone(c):h[r]=c}),h}static generateAnonymousModule(){return"===anonymous"+y.NEXT_ANONYMOUS_ID+++"==="}static isAnonymousModule(p){return y.startsWith(p,"===anonymous")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=u.global.performance&&typeof u.global.performance.now=="function"),this.HAS_PERFORMANCE_NOW?u.global.performance.now():Date.now()}}y.NEXT_ANONYMOUS_ID=1,y.PERFORMANCE_NOW_PROBED=!1,y.HAS_PERFORMANCE_NOW=!1,u.Utilities=y})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){function y(h){if(h instanceof Error)return h;const r=new Error(h.message||String(h)||"Unknown Error");return h.stack&&(r.stack=h.stack),r}u.ensureError=y;class m{static validateConfigurationOptions(r){function c(a){if(a.phase==="loading"){console.error('Loading "'+a.moduleId+'" failed'),console.error(a),console.error("Here are the modules that depend on it:"),console.error(a.neededBy);return}if(a.phase==="factory"){console.error('The factory function of "'+a.moduleId+'" has thrown an exception'),console.error(a),console.error("Here are the modules that depend on it:"),console.error(a.neededBy);return}}if(r=r||{},typeof r.baseUrl!="string"&&(r.baseUrl=""),typeof r.isBuild!="boolean"&&(r.isBuild=!1),typeof r.paths!="object"&&(r.paths={}),typeof r.config!="object"&&(r.config={}),typeof r.catchError>"u"&&(r.catchError=!1),typeof r.recordStats>"u"&&(r.recordStats=!1),typeof r.urlArgs!="string"&&(r.urlArgs=""),typeof r.onError!="function"&&(r.onError=c),Array.isArray(r.ignoreDuplicateModules)||(r.ignoreDuplicateModules=[]),r.baseUrl.length>0&&(u.Utilities.endsWith(r.baseUrl,"/")||(r.baseUrl+="/")),typeof r.cspNonce!="string"&&(r.cspNonce=""),typeof r.preferScriptTags>"u"&&(r.preferScriptTags=!1),r.nodeCachedData&&typeof r.nodeCachedData=="object"&&(typeof r.nodeCachedData.seed!="string"&&(r.nodeCachedData.seed="seed"),(typeof r.nodeCachedData.writeDelay!="number"||r.nodeCachedData.writeDelay<0)&&(r.nodeCachedData.writeDelay=1e3*7),!r.nodeCachedData.path||typeof r.nodeCachedData.path!="string")){const a=y(new Error("INVALID cached data configuration, 'path' MUST be set"));a.phase="configuration",r.onError(a),r.nodeCachedData=void 0}return r}static mergeConfigurationOptions(r=null,c=null){let a=u.Utilities.recursiveClone(c||{});return u.Utilities.forEachProperty(r,(t,e)=>{t==="ignoreDuplicateModules"&&typeof a.ignoreDuplicateModules<"u"?a.ignoreDuplicateModules=a.ignoreDuplicateModules.concat(e):t==="paths"&&typeof a.paths<"u"?u.Utilities.forEachProperty(e,(i,s)=>a.paths[i]=s):t==="config"&&typeof a.config<"u"?u.Utilities.forEachProperty(e,(i,s)=>a.config[i]=s):a[t]=u.Utilities.recursiveClone(e)}),m.validateConfigurationOptions(a)}}u.ConfigurationOptionsUtil=m;class p{constructor(r,c){if(this._env=r,this.options=m.mergeConfigurationOptions(c),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===""&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let a=this.options.nodeRequire.main.filename,t=Math.max(a.lastIndexOf("/"),a.lastIndexOf("\\"));this.options.baseUrl=a.substring(0,t+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let r=0;r{Array.isArray(c)?this.sortedPathsRules.push({from:r,to:c}):this.sortedPathsRules.push({from:r,to:[c]})}),this.sortedPathsRules.sort((r,c)=>c.from.length-r.from.length)}cloneAndMerge(r){return new p(this._env,m.mergeConfigurationOptions(r,this.options))}getOptionsLiteral(){return this.options}_applyPaths(r){let c;for(let a=0,t=this.sortedPathsRules.length;athis.triggerCallback(i),d=>this.triggerErrorback(i,d))}triggerCallback(e){let i=this._callbackMap[e];delete this._callbackMap[e];for(let s=0;s{e.removeEventListener("load",l),e.removeEventListener("error",d)},l=o=>{n(),i()},d=o=>{n(),s(o)};e.addEventListener("load",l),e.addEventListener("error",d)}load(e,i,s,n){if(/^node\|/.test(i)){let l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=i.split("|"),_=null;try{_=d(o[1])}catch(f){n(f);return}e.enqueueDefineAnonymousModule([],()=>_),s()}else{let l=document.createElement("script");l.setAttribute("async","async"),l.setAttribute("type","text/javascript"),this.attachListeners(l,s,n);const{trustedTypesPolicy:d}=e.getConfig().getOptionsLiteral();d&&(i=d.createScriptURL(i)),l.setAttribute("src",i);const{cspNonce:o}=e.getConfig().getOptionsLiteral();o&&l.setAttribute("nonce",o),document.getElementsByTagName("head")[0].appendChild(l)}}}function p(t){const{trustedTypesPolicy:e}=t.getConfig().getOptionsLiteral();try{return(e?self.eval(e.createScript("","true")):new Function("true")).call(self),!0}catch{return!1}}class h{constructor(){this._cachedCanUseEval=null}_canUseEval(e){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=p(e)),this._cachedCanUseEval}load(e,i,s,n){if(/^node\|/.test(i)){const l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=i.split("|");let _=null;try{_=d(o[1])}catch(f){n(f);return}e.enqueueDefineAnonymousModule([],function(){return _}),s()}else{const{trustedTypesPolicy:l}=e.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(e)){fetch(i).then(o=>{if(o.status!==200)throw new Error(o.statusText);return o.text()}).then(o=>{o=`${o} -//# sourceURL=${i}`,(l?self.eval(l.createScript("",o)):new Function(o)).call(self),s()}).then(void 0,n);return}try{l&&(i=l.createScriptURL(i)),importScripts(i),s()}catch(o){n(o)}}}}class r{constructor(e){this._env=e,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(e){this._didInitialize||(this._didInitialize=!0,this._fs=e("fs"),this._vm=e("vm"),this._path=e("path"),this._crypto=e("crypto"))}_initNodeRequire(e,i){const{nodeCachedData:s}=i.getConfig().getOptionsLiteral();if(!s||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const n=this,l=e("module");function d(o){const _=o.constructor;let f=function(v){try{return o.require(v)}finally{}};return f.resolve=function(v,E){return _._resolveFilename(v,o,!1,E)},f.resolve.paths=function(v){return _._resolveLookupPaths(v,o)},f.main=process.mainModule,f.extensions=_._extensions,f.cache=_._cache,f}l.prototype._compile=function(o,_){const f=l.wrap(o.replace(/^#!.*/,"")),g=i.getRecorder(),v=n._getCachedDataPath(s,_),E={filename:_};let I;try{const D=n._fs.readFileSync(v);I=D.slice(0,16),E.cachedData=D.slice(16),g.record(60,v)}catch{g.record(61,v)}const C=new n._vm.Script(f,E),P=C.runInThisContext(E),w=n._path.dirname(_),R=d(this),U=[this.exports,R,this,_,w,process,_commonjsGlobal,Buffer],b=P.apply(this.exports,U);return n._handleCachedData(C,f,v,!E.cachedData,i),n._verifyCachedData(C,f,v,I,i),b}}load(e,i,s,n){const l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=l.nodeInstrumenter||function(f){return f};this._init(d),this._initNodeRequire(d,e);let _=e.getRecorder();if(/^node\|/.test(i)){let f=i.split("|"),g=null;try{g=d(f[1])}catch(v){n(v);return}e.enqueueDefineAnonymousModule([],()=>g),s()}else{i=u.Utilities.fileUriToFilePath(this._env.isWindows,i);const f=this._path.normalize(i),g=this._getElectronRendererScriptPathOrUri(f),v=!!l.nodeCachedData,E=v?this._getCachedDataPath(l.nodeCachedData,i):void 0;this._readSourceAndCachedData(f,E,_,(I,C,P,w)=>{if(I){n(I);return}let R;C.charCodeAt(0)===r._BOM?R=r._PREFIX+C.substring(1)+r._SUFFIX:R=r._PREFIX+C+r._SUFFIX,R=o(R,f);const U={filename:g,cachedData:P},b=this._createAndEvalScript(e,R,U,s,n);this._handleCachedData(b,R,E,v&&!P,e),this._verifyCachedData(b,R,E,w,e)})}}_createAndEvalScript(e,i,s,n,l){const d=e.getRecorder();d.record(31,s.filename);const o=new this._vm.Script(i,s),_=o.runInThisContext(s),f=e.getGlobalAMDDefineFunc();let g=!1;const v=function(){return g=!0,f.apply(null,arguments)};return v.amd=f.amd,_.call(u.global,e.getGlobalAMDRequireFunc(),v,s.filename,this._path.dirname(s.filename)),d.record(32,s.filename),g?n():l(new Error(`Didn't receive define call in ${s.filename}!`)),o}_getElectronRendererScriptPathOrUri(e){if(!this._env.isElectronRenderer)return e;let i=e.match(/^([a-z])\:(.*)/i);return i?`file:///${(i[1].toUpperCase()+":"+i[2]).replace(/\\/g,"/")}`:`file://${e}`}_getCachedDataPath(e,i){const s=this._crypto.createHash("md5").update(i,"utf8").update(e.seed,"utf8").update(process.arch,"").digest("hex"),n=this._path.basename(i).replace(/\.js$/,"");return this._path.join(e.path,`${n}-${s}.code`)}_handleCachedData(e,i,s,n,l){e.cachedDataRejected?this._fs.unlink(s,d=>{l.getRecorder().record(62,s),this._createAndWriteCachedData(e,i,s,l),d&&l.getConfig().onError(d)}):n&&this._createAndWriteCachedData(e,i,s,l)}_createAndWriteCachedData(e,i,s,n){let l=Math.ceil(n.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),d=-1,o=0,_;const f=()=>{setTimeout(()=>{_||(_=this._crypto.createHash("md5").update(i,"utf8").digest());const g=e.createCachedData();if(!(g.length===0||g.length===d||o>=5)){if(g.length{v&&n.getConfig().onError(v),n.getRecorder().record(63,s),f()})}},l*Math.pow(4,o++))};f()}_readSourceAndCachedData(e,i,s,n){if(!i)this._fs.readFile(e,{encoding:"utf8"},n);else{let l,d,o,_=2;const f=g=>{g?n(g):--_===0&&n(void 0,l,d,o)};this._fs.readFile(e,{encoding:"utf8"},(g,v)=>{l=v,f(g)}),this._fs.readFile(i,(g,v)=>{!g&&v&&v.length>0?(o=v.slice(0,16),d=v.slice(16),s.record(60,i)):s.record(61,i),f()})}}_verifyCachedData(e,i,s,n,l){n&&(e.cachedDataRejected||setTimeout(()=>{const d=this._crypto.createHash("md5").update(i,"utf8").digest();n.equals(d)||(l.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${s}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(s,o=>{o&&l.getConfig().onError(o)}))},Math.ceil(5e3*(1+Math.random()))))}}r._BOM=65279,r._PREFIX="(function (require, define, __filename, __dirname) { ",r._SUFFIX=` -});`;function c(t,e){if(e.__$__isRecorded)return e;const i=function(n){t.record(33,n);try{return e(n)}finally{t.record(34,n)}};return i.__$__isRecorded=!0,i}u.ensureRecordedNodeRequire=c;function a(t){return new y(t)}u.createScriptLoader=a})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{constructor(t){let e=t.lastIndexOf("/");e!==-1?this.fromModulePath=t.substr(0,e+1):this.fromModulePath=""}static _normalizeModuleId(t){let e=t,i;for(i=/\/\.\//;i.test(e);)e=e.replace(i,"/");for(e=e.replace(/^\.\//g,""),i=/\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//;i.test(e);)e=e.replace(i,"/");return e=e.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//,""),e}resolveModule(t){let e=t;return u.Utilities.isAbsolutePath(e)||(u.Utilities.startsWith(e,"./")||u.Utilities.startsWith(e,"../"))&&(e=y._normalizeModuleId(this.fromModulePath+e)),e}}y.ROOT=new y(""),u.ModuleIdResolver=y;class m{constructor(t,e,i,s,n,l){this.id=t,this.strId=e,this.dependencies=i,this._callback=s,this._errorback=n,this.moduleIdResolver=l,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(t,e){try{return{returnedValue:t.apply(u.global,e),producedError:null}}catch(i){return{returnedValue:null,producedError:i}}}static _invokeFactory(t,e,i,s){return t.shouldInvokeFactory(e)?t.shouldCatchError()?this._safeInvokeFunction(i,s):{returnedValue:i.apply(u.global,s),producedError:null}:{returnedValue:null,producedError:null}}complete(t,e,i,s){this._isComplete=!0;let n=null;if(this._callback)if(typeof this._callback=="function"){t.record(21,this.strId);let l=m._invokeFactory(e,this.strId,this._callback,i);n=l.producedError,t.record(22,this.strId),!n&&typeof l.returnedValue<"u"&&(!this.exportsPassedIn||u.Utilities.isEmpty(this.exports))&&(this.exports=l.returnedValue)}else this.exports=this._callback;if(n){let l=u.ensureError(n);l.phase="factory",l.moduleId=this.strId,l.neededBy=s(this.id),this.error=l,e.onError(l)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(t){return this._isComplete=!0,this.error=t,this._errorback?(this._errorback(t),!0):!1}isComplete(){return this._isComplete}}u.Module=m;class p{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId("exports"),this.getModuleId("module"),this.getModuleId("require")}getMaxModuleId(){return this._nextId}getModuleId(t){let e=this._strModuleIdToIntModuleId.get(t);return typeof e>"u"&&(e=this._nextId++,this._strModuleIdToIntModuleId.set(t,e),this._intModuleIdToStrModuleId[e]=t),e}getStrModuleId(t){return this._intModuleIdToStrModuleId[t]}}class h{constructor(t){this.id=t}}h.EXPORTS=new h(0),h.MODULE=new h(1),h.REQUIRE=new h(2),u.RegularDependency=h;class r{constructor(t,e,i){this.id=t,this.pluginId=e,this.pluginParam=i}}u.PluginDependency=r;class c{constructor(t,e,i,s,n=0){this._env=t,this._scriptLoader=e,this._loaderAvailableTimestamp=n,this._defineFunc=i,this._requireFunc=s,this._moduleIdProvider=new p,this._config=new u.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new c(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(t,e){let i=l=>l.replace(/\\/g,"/"),s=i(t),n=e.split(/\n/);for(let l=0;lthis._moduleIdProvider.getStrModuleId(_.id))),this._resolve(o)}_normalizeDependency(t,e){if(t==="exports")return h.EXPORTS;if(t==="module")return h.MODULE;if(t==="require")return h.REQUIRE;let i=t.indexOf("!");if(i>=0){let s=e.resolveModule(t.substr(0,i)),n=e.resolveModule(t.substr(i+1)),l=this._moduleIdProvider.getModuleId(s+"!"+n),d=this._moduleIdProvider.getModuleId(s);return new r(l,d,n)}return new h(this._moduleIdProvider.getModuleId(e.resolveModule(t)))}_normalizeDependencies(t,e){let i=[],s=0;for(let n=0,l=t.length;nthis._moduleIdProvider.getStrModuleId(l));const n=u.ensureError(e);return n.phase="loading",n.moduleId=i,n.neededBy=s,n}_onLoadError(t,e){const i=this._createLoadError(t,e);this._modules2[t]||(this._modules2[t]=new m(t,this._moduleIdProvider.getStrModuleId(t),[],()=>{},null,null));let s=[];for(let d=0,o=this._moduleIdProvider.getMaxModuleId();d0;){let d=l.shift(),o=this._modules2[d];o&&(n=o.onDependencyError(i)||n);let _=this._inverseDependencies2[d];if(_)for(let f=0,g=_.length;f0;){let d=n.shift().dependencies;if(d)for(let o=0,_=d.length;o<_;o++){let f=d[o];if(f.id===e)return!0;let g=this._modules2[f.id];g&&!s[f.id]&&(s[f.id]=!0,n.push(g))}}return!1}_findCyclePath(t,e,i){if(t===e||i===50)return[t];let s=this._modules2[t];if(!s)return null;let n=s.dependencies;if(n)for(let l=0,d=n.length;lthis._relativeRequire(t,i,s,n);return e.toUrl=i=>this._config.requireToUrl(t.resolveModule(i)),e.getStats=()=>this.getLoaderEvents(),e.hasDependencyCycle=()=>this._hasDependencyCycle,e.config=(i,s=!1)=>{this.configure(i,s)},e.__$__nodeRequire=u.global.nodeRequire,e}_loadModule(t){if(this._modules2[t]||this._knownModules2[t])return;this._knownModules2[t]=!0;let e=this._moduleIdProvider.getStrModuleId(t),i=this._config.moduleIdToPaths(e),s=/^@[^\/]+\/[^\/]+$/;this._env.isNode&&(e.indexOf("/")===-1||s.test(e))&&i.push("node|"+e);let n=-1,l=d=>{if(n++,n>=i.length)this._onLoadError(t,d);else{let o=i[n],_=this.getRecorder();if(this._config.isBuild()&&o==="empty:"){this._buildInfoPath[t]=o,this.defineModule(this._moduleIdProvider.getStrModuleId(t),[],null,null,null),this._onLoad(t);return}_.record(10,o),this._scriptLoader.load(this,o,()=>{this._config.isBuild()&&(this._buildInfoPath[t]=o),_.record(11,o),this._onLoad(t)},f=>{_.record(12,o),l(f)})}};l(null)}_loadPluginDependency(t,e){if(this._modules2[e.id]||this._knownModules2[e.id])return;this._knownModules2[e.id]=!0;let i=s=>{this.defineModule(this._moduleIdProvider.getStrModuleId(e.id),[],s,null,null)};i.error=s=>{this._config.onError(this._createLoadError(e.id,s))},t.load(e.pluginParam,this._createRequire(y.ROOT),i,this._config.getOptionsLiteral())}_resolve(t){let e=t.dependencies;if(e)for(let i=0,s=e.length;ithis._moduleIdProvider.getStrModuleId(o)).join(` => -`)),t.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[n.id]=this._inverseDependencies2[n.id]||[],this._inverseDependencies2[n.id].push(t.id),n instanceof r){let d=this._modules2[n.pluginId];if(d&&d.isComplete()){this._loadPluginDependency(d.exports,n);continue}let o=this._inversePluginDependencies2.get(n.pluginId);o||(o=[],this._inversePluginDependencies2.set(n.pluginId,o)),o.push(n),this._loadModule(n.pluginId);continue}this._loadModule(n.id)}t.unresolvedDependenciesCount===0&&this._onModuleComplete(t)}_onModuleComplete(t){let e=this.getRecorder();if(t.isComplete())return;let i=t.dependencies,s=[];if(i)for(let o=0,_=i.length;o<_;o++){let f=i[o];if(f===h.EXPORTS){s[o]=t.exports;continue}if(f===h.MODULE){s[o]={id:t.strId,config:()=>this._config.getConfigForModule(t.strId)};continue}if(f===h.REQUIRE){s[o]=this._createRequire(t.moduleIdResolver);continue}let g=this._modules2[f.id];if(g){s[o]=g.exports;continue}s[o]=null}const n=o=>(this._inverseDependencies2[o]||[]).map(_=>this._moduleIdProvider.getStrModuleId(_));t.complete(e,this._config,s,n);let l=this._inverseDependencies2[t.id];if(this._inverseDependencies2[t.id]=null,l)for(let o=0,_=l.length;o<_;o++){let f=l[o],g=this._modules2[f];g.unresolvedDependenciesCount--,g.unresolvedDependenciesCount===0&&this._onModuleComplete(g)}let d=this._inversePluginDependencies2.get(t.id);if(d){this._inversePluginDependencies2.delete(t.id);for(let o=0,_=d.length;o<_;o++)this._loadPluginDependency(t.exports,d[o])}}}u.ModuleManager=c})(AMDLoader||(AMDLoader={}));var define,AMDLoader;(function(u){const y=new u.Environment;let m=null;const p=function(a,t,e){typeof a!="string"&&(e=t,t=a,a=null),(typeof t!="object"||!Array.isArray(t))&&(e=t,t=null),t||(t=["require","exports","module"]),a?m.defineModule(a,t,e,null,null):m.enqueueDefineAnonymousModule(t,e)};p.amd={jQuery:!0};const h=function(a,t=!1){m.configure(a,t)},r=function(){if(arguments.length===1){if(arguments[0]instanceof Object&&!Array.isArray(arguments[0])){h(arguments[0]);return}if(typeof arguments[0]=="string")return m.synchronousRequire(arguments[0])}if((arguments.length===2||arguments.length===3)&&Array.isArray(arguments[0])){m.defineModule(u.Utilities.generateAnonymousModule(),arguments[0],arguments[1],arguments[2],null);return}throw new Error("Unrecognized require call")};r.config=h,r.getConfig=function(){return m.getConfig().getOptionsLiteral()},r.reset=function(){m=m.reset()},r.getBuildInfo=function(){return m.getBuildInfo()},r.getStats=function(){return m.getLoaderEvents()},r.define=p;function c(){if(typeof u.global.require<"u"||typeof require<"u"){const a=u.global.require||require;if(typeof a=="function"&&typeof a.resolve=="function"){const t=u.ensureRecordedNodeRequire(m.getRecorder(),a);u.global.nodeRequire=t,r.nodeRequire=t,r.__$__nodeRequire=t}}y.isNode&&!y.isElectronRenderer&&!y.isElectronNodeIntegrationWebWorker?module.exports=r:(y.isElectronRenderer||(u.global.define=p),u.global.require=r)}u.init=c,(typeof u.global.define!="function"||!u.global.define.amd)&&(m=new u.ModuleManager(y,u.createScriptLoader(y),p,r,u.Utilities.getHighPerformanceTimestamp()),typeof u.global.require<"u"&&typeof u.global.require!="function"&&r.config(u.global.require),define=function(){return p.apply(null,arguments)},define.amd=p.amd,typeof doNotInitLoader>"u"&&c())})(AMDLoader||(AMDLoader={})); \ No newline at end of file diff --git a/static/monaco-editor/min/vs/loader.js.gz b/static/monaco-editor/min/vs/loader.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..8465a10a46a89a09004273cc54bd9fd2fdd29e7e GIT binary patch literal 9241 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 literal 0 HcmV?d00001 diff --git a/statusnook.sh b/statusnook.sh index 2eb8923..53a1a9d 100755 --- a/statusnook.sh +++ b/statusnook.sh @@ -32,7 +32,7 @@ case $(uname -p) in ;; esac -curl -fsSL https://get.statusnook.com/statusnook_linux_${goarch}_v0.2.0 -o /home/statusnook/statusnook +curl -fsSL https://get.statusnook.com/statusnook_linux_${goarch}_v0.3.0 -o /home/statusnook/statusnook chmod +x /home/statusnook/statusnook

    I;4rpYJI#}>Ub0Kd%EVa3AJs)qtEcW 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 )@X_2l>G3EMdV~)Z+fduH;6r z<$ zKy`p@lj}ojvxhP(DmZzwG1b%E2htIvNKyZaIypBCI@(du+|7wSU}QTLcZMNlbbI;$ z^12yI$I}Dhs9-oI+a3(cNA=h@<5Y|QgKz9x(AWq|0;4s#Q*)5fdX|{;>+ncNwnRZg zde54)Lxi@ttLrRaQ66`w%4>F0P_Ji^ooC`+me{T%O6H7x^F`Fe$8^+$I1%Z-EB8}{ zP7t*sl@hV*V`De9FFmKJM1^)Q;0^cR(3R|XA)FHNH#41NChB6!jk_7yS==gF&XK%F zQd=GS=2U{DkLje5Ll-VZ_SC%-;TxZMvFH2jLGS}r!|E=*_3dTU_TFfvgc$vr$`tKk zjlVG^*UWd2u`_N`%kh{W!>1Y2O0<%hPQcalJOU_ z{L1nfyNa49T8So0OJ<8j45GqTWA-!dT(*bR^87r-+m3otz*EBgH!{cX`GO%cor#)p z?F1m;?mF&Y0Q(Y_`V{C?nwvWzFBa0*19Q?uYZYou0!x?_%vUp3wU5U+p--O}9`^GB1t7%=-Z~deT3YJ&rF;h`Tod#Fgau=0Ud`%wgtne`}7$v%Qo=h*nf!QAeS2@k5XWY1u&j! z0Ad0zr<~Aa@bx9=y&p3*%))OUhD~-jVmZ$8#th*)#l4Z(6a2H$sve{Z&7%czlzfc_ z+whtVJHu{lqN0jGMVEvA=(<|!Vs2E{N5ohyGxSfZPT_cOAPm^FXU$__;yfm7ect4l zGcu)@ zKyb28a6PzF04`qCk%{th370^oC6-UxroT9CozRc(qjgQPH$nhiHIBnKu{23q%7@