From 7c752d6edab1a2c82b806194b1b3f8f4d45d2a78 Mon Sep 17 00:00:00 2001 From: Alex Tomic Date: Mon, 27 Dec 2021 22:53:32 -0500 Subject: [PATCH] Add highlight.js and pretty-printing in ui Also improve logging and upgrade some packages --- Cargo.lock | 167 +++-- Cargo.toml | 28 +- README.md | 4 +- src/main.rs | 29 +- src/serve.rs | 11 +- static/admin.png | Bin 41151 -> 56898 bytes static/highlight.js.min.css | 9 + static/highlight.min.js | 1149 +++++++++++++++++++++++++++++++++++ templates/admin.html | 20 +- 9 files changed, 1338 insertions(+), 79 deletions(-) create mode 100644 static/highlight.js.min.css create mode 100644 static/highlight.min.js diff --git a/Cargo.lock b/Cargo.lock index f5f7b5e..cc16c01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "ahash" version = "0.4.7" @@ -129,12 +131,24 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2554a3155fec064362507487171dcc4edc3df60cb10f3a1fb10ed8094822b120" +checksum = "58549f1842da3080ce63002102d5bc954c7bc843d4f47818e642abdc36253552" dependencies = [ "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db058d493fb2f65f41861bfed7e3fe6335264a9f0f92710cab5bdf01fef09069" +dependencies = [ "parse-zoneinfo", + "phf", + "phf_codegen", ] [[package]] @@ -145,9 +159,9 @@ checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" [[package]] name = "clap" -version = "3.0.0-beta.2" +version = "3.0.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" +checksum = "c7843ae7a539bef687e018bf9edf7e87728024b29d02b0f8409726be8880ae1a" dependencies = [ "atty", "bitflags", @@ -158,15 +172,13 @@ dependencies = [ "strsim", "termcolor", "textwrap", - "unicode-width", - "vec_map", ] [[package]] name = "clap_derive" -version = "3.0.0-beta.2" +version = "3.0.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" +checksum = "cae3cc2f259ea636871f5da15b0ac033f1821d7a5506c3d1bfbdde201f14c803" dependencies = [ "heck", "proc-macro-error", @@ -201,6 +213,19 @@ dependencies = [ "generic-array", ] +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + [[package]] name = "fake-simd" version = "0.1.2" @@ -299,9 +324,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] @@ -321,6 +346,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "idna" version = "0.2.0" @@ -412,9 +443,9 @@ checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memchr" -version = "2.3.4" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "num-integer" @@ -443,9 +474,12 @@ checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "os_str_bytes" -version = "2.4.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +dependencies = [ + "memchr", +] [[package]] name = "parse-zoneinfo" @@ -505,6 +539,45 @@ dependencies = [ "sha-1", ] +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", + "uncased", +] + [[package]] name = "pkg-config" version = "0.3.19" @@ -543,18 +616,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.8" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" +checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" dependencies = [ "proc-macro2", ] @@ -619,11 +692,13 @@ checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" [[package]] name = "reqsink" -version = "0.1.0" +version = "0.2.1" dependencies = [ "bincode", "chrono", "clap", + "env_logger", + "log", "rusqlite", "rust-embed", "serde", @@ -738,6 +813,12 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "siphasher" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b" + [[package]] name = "slug" version = "0.1.4" @@ -767,9 +848,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.58" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" +checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" dependencies = [ "proc-macro2", "quote", @@ -778,9 +859,9 @@ dependencies = [ [[package]] name = "tera" -version = "1.6.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac6ab7eacf40937241959d540670f06209c38ceadb62116999db4a950fbf8dc" +checksum = "d3cac831b615c25bcef632d1cabf864fa05813baad3d526829db18eb70e8b58d" dependencies = [ "chrono", "chrono-tz", @@ -809,12 +890,9 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.12.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" -dependencies = [ - "unicode-width", -] +checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" [[package]] name = "thread_local" @@ -838,9 +916,9 @@ dependencies = [ [[package]] name = "tiny_http" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15ce4fc3c4cdea1a4399bb1819a539195fb69db4bbe0bde5b7c7f18fed412e02" +checksum = "96155b5f7149ba7a99ea5d516c538250b26eab60b4485c0f5344432573e7a450" dependencies = [ "ascii", "chrono", @@ -876,6 +954,15 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +[[package]] +name = "uncased" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baeed7327e25054889b9bd4f975f32e5f4c5d434042d59ab6cd4142c0a76ed0" +dependencies = [ + "version_check", +] + [[package]] name = "unic-char-property" version = "0.9.0" @@ -946,15 +1033,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" - -[[package]] -name = "unicode-width" -version = "0.1.8" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-xid" @@ -980,17 +1061,11 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "walkdir" diff --git a/Cargo.toml b/Cargo.toml index 0ce47a4..7a2d10c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "reqsink" -version = "0.1.0" +version = "0.2.1" authors = ["Alex Tomic "] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -tiny_http = "0.7" -tera = "1" -serde = "1.0.118" -serde_derive = "1.0.118" -serde_json = "1.0.61" -chrono = "0.4.19" -url = "2.2.0" -clap = "3.0.0-beta.2" -bincode = "1.3" -snap = "1" -rusqlite = {version = "0.24.2", features = ["bundled"]} -rust-embed = "5.8.0" \ No newline at end of file +tiny_http = "^0.9" +tera = "^1.15" +serde = "^1" +serde_derive = "^1" +serde_json = "^1" +chrono = "^0.4" +url = "^2.2" +clap = {version = "^3.0.0-rc.9", features = ["derive"]} +bincode = "^1.3" +snap = "^1" +rusqlite = {version = "0.24", features = ["bundled"]} +rust-embed = "5" +log = "^0.4" +env_logger = "^0.9" \ No newline at end of file diff --git a/README.md b/README.md index 0a83500..1b37543 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,9 @@ curl -X POST -H "Content-Type: application/json" \ localhost:8000/post/some/json ``` -The `/admin` route provides a simple GUI showing the current tracked requests: +The `/admin` route provides a simple GUI showing the current tracked requests. +Syntax highlighting and pretty-printing is available for formats such as JSON, using the embedded +highlight.js: ![Admin page](static/admin.png) diff --git a/src/main.rs b/src/main.rs index c3c7c49..a3471f5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,12 +6,16 @@ use serde_derive::{Serialize, Deserialize}; use std::net::{IpAddr}; use std::collections::HashMap; use url::{Url}; -use clap::Clap; +use clap::Parser; use std::fs::File; use rust_embed::RustEmbed; +use log::{ info , warn , error }; +use env_logger::Env; + mod serve; + #[derive(RustEmbed)] #[folder = "templates"] struct EmbeddedTemplates; @@ -26,8 +30,8 @@ struct UserRoute { content_type: Option } -#[derive(Clap)] -#[clap( version = "0.2", about = "A lightweight but flexible sink for requests")] +#[derive(Parser)] +#[clap( version = "0.2.1", about = "A lightweight but flexible sink for requests")] struct Opts { /// User-defined templates directory. If you want to provide a custom response to a /// particular endpoint, you will need to also provide a JSON file mapping the template to the route @@ -75,14 +79,14 @@ pub struct AppContext { fn load_user_templates(app_ctx: &mut AppContext) { if let Some(utempl) = &app_ctx.opts.user_templates_dir { if let Some(extra_routes) = &app_ctx.opts.extra_routes { - let user_templates = match Tera::new(&format!("{}/**/*.html", &utempl).as_str()) { + let user_templates = match Tera::new(format!("{}/**/*.html", &utempl).as_str()) { Ok(t) => t, Err(e) => { - println!("Error when attempting to parse user-defined templates: {}", e); + warn!("Error when attempting to parse user-defined templates: {}", e); ::std::process::exit(1); } }; - println!("Found {:?} extra user-defined templates.", user_templates.templates.len()); + info!("Found {:?} extra user-defined templates.", user_templates.templates.len()); app_ctx.tera.extend(&user_templates).unwrap(); let f = File::open(extra_routes).unwrap(); @@ -91,14 +95,14 @@ fn load_user_templates(app_ctx: &mut AppContext) { .map(|v| (v.route.clone(), v)) .collect::>()); } else { - eprintln!("Must provide an --extra-routes configuration file when providing user-defined templates!"); + error!("Must provide an --extra-routes configuration file when providing user-defined templates!"); std::process::exit(1); } } - println!("Total {:?} templates loaded:", app_ctx.tera.templates.len()); + info!("Total {:?} templates loaded:", app_ctx.tera.templates.len()); for template in app_ctx.tera.templates.keys() { - println!("{:?}", &template); + info!("{:?}", &template); } } @@ -109,6 +113,7 @@ fn main() { let opts: Opts = Opts::parse(); + env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); let mut tera = Tera::default(); let admin_templ = EmbeddedTemplates::get("admin.html").unwrap(); let admin_rawstr = std::str::from_utf8(admin_templ.as_ref()); @@ -125,12 +130,12 @@ fn main() { load_user_templates(&mut app_ctx); let iface = format!("{}:{}", app_ctx.opts.ip_address, app_ctx.opts.port); - println!("Binding to interface {:?}", &iface); + info!("Binding to interface {:?}", &iface); let server = Server::http(&iface).unwrap(); for mut request in server.incoming_requests() { - println!("{:?} {:?} [{:?}] {:?}", - request.method(), request.url(), + info!("{:} {:} [{:}] {:?}", + request.method().as_str().to_uppercase(), request.url(), request.remote_addr().ip(), request.body_length() ); let base_url: Url = Url::parse("http://reqsink-rs.local/").unwrap(); diff --git a/src/serve.rs b/src/serve.rs index adb616b..82c93e3 100644 --- a/src/serve.rs +++ b/src/serve.rs @@ -11,6 +11,9 @@ use std::sync::{Mutex, Arc}; use rusqlite::{params, Connection}; use rust_embed::RustEmbed; +use log::{info}; + + #[derive(RustEmbed)] #[folder = "static"] struct StaticContent; @@ -74,7 +77,7 @@ pub fn handle_admin(request: &Request, app_ctx: &mut AppContext) -> Response = app_ctx.req_cache.drain(0..prune).collect(); let sqlite = &app_ctx.opts.sqlite; if let Some(db_path) = sqlite.clone() { @@ -188,7 +191,7 @@ pub fn handle_req(request: &mut Request, app_ctx: &mut AppContext) -> Response &b"text/html; charset=UTF-8"[..] }; resp.add_header( - Header::from_bytes(&b"Content-Type"[..], &content_type[..] + Header::from_bytes(&b"Content-Type"[..], content_type ).unwrap()); resp diff --git a/static/admin.png b/static/admin.png index d0119f7733e0a0da56fef9a3bc4894d6278449a5..b734066dcc6cd94ead783bc1ab169ae3ec5f7806 100644 GIT binary patch literal 56898 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

9${{wC(2*sU4S`dWr(%l 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

  • D*=LN^!s>nb+I(??T1v^#!hm&M!we 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 TDr=`-zRa(xcLSWr3+@5W@}d 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 Jr~c==`43W)+;ji{ diff --git a/static/highlight.js.min.css b/static/highlight.js.min.css new file mode 100644 index 0000000..96e1842 --- /dev/null +++ b/static/highlight.js.min.css @@ -0,0 +1,9 @@ +/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f0f0f0;color:#444}.hljs-comment{color:#888}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/static/highlight.min.js b/static/highlight.min.js new file mode 100644 index 0000000..2344106 --- /dev/null +++ b/static/highlight.min.js @@ -0,0 +1,1149 @@ +/*! + Highlight.js v11.3.1 (git: 2a972d8658) + (c) 2006-2021 Ivan Sagalaev and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";var e={exports:{}};function n(e){ +return e instanceof Map?e.clear=e.delete=e.set=()=>{ +throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{var a=e[t] +;"object"!=typeof a||Object.isFrozen(a)||n(a)})),e} +e.exports=n,e.exports.default=n;var t=e.exports;class a{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function i(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function r(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n] +;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t}const s=e=>!!e.kind +;class o{constructor(e,n){ +this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){ +this.buffer+=i(e)}openNode(e){if(!s(e))return;let n=e.kind +;n=e.sublanguage?"language-"+n:((e,{prefix:n})=>{if(e.includes(".")){ +const t=e.split(".") +;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ") +}return`${n}${e}`})(n,{prefix:this.classPrefix}),this.span(n)}closeNode(e){ +s(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{constructor(){this.rootNode={ +children:[]},this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const n={kind:e,children:[]} +;this.add(n),this.stack.push(n)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){ +return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n), +n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root +;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function d(e){ +return e?"string"==typeof e?e:e.source:null}function g(e){return m("(?=",e,")")} +function u(e){return m("(?:",e,")*")}function b(e){return m("(?:",e,")?")} +function m(...e){return e.map((e=>d(e))).join("")}function p(...e){const n=(e=>{ +const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"} +function _(e){return RegExp(e.toString()+"|").exec("").length-1} +const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t +;let a=d(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break} +i+=a.substring(0,e.index), +a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0], +"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)} +const E="[a-zA-Z]\\w*",y="[a-zA-Z_]\\w*",N="\\b\\d+(\\.\\d+)?",w="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v="\\b(0b[01]+)",O={ +begin:"\\\\[\\s\\S]",relevance:0},x={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[O]},M={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[O]},k=(e,n,t={})=>{const a=r({scope:"comment",begin:e,end:n, +contains:[]},t);a.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;const i=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return a.contains.push({begin:m(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a +},S=k("//","$"),A=k("/\\*","\\*/"),C=k("#","$");var T=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:E,UNDERSCORE_IDENT_RE:y, +NUMBER_RE:N,C_NUMBER_RE:w,BINARY_NUMBER_RE:v, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const n=/^#![ ]*\// +;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:n, +end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)}, +BACKSLASH_ESCAPE:O,APOS_STRING_MODE:x,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:{ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},COMMENT:k,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:C, +NUMBER_MODE:{scope:"number",begin:N,relevance:0},C_NUMBER_MODE:{scope:"number", +begin:w,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:v,relevance:0}, +REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, +end:/\/[gimuy]*/,illegal:/\n/,contains:[O,{begin:/\[/,end:/\]/,relevance:0, +contains:[O]}]}]},TITLE_MODE:{scope:"title",begin:E,relevance:0}, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:y,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{ +n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function R(e,n){ +"."===e.input[e.index-1]&&n.ignoreMatch()}function D(e,n){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,n){ +n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function L(e,n){ +Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function B(e,n){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function $(e,n){ +void 0===e.relevance&&(e.relevance=1)}const F=(e,n)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n] +})),e.keywords=t.keywords,e.begin=m(t.beforeMatch,g(t.begin)),e.starts={ +relevance:0,contains:[Object.assign(t,{endsParent:!0})] +},e.relevance=0,delete t.beforeMatch +},z=["of","and","for","in","not","or","if","then","parent","list","value"] +;function U(e,n,t="keyword"){const a=Object.create(null) +;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{ +Object.assign(a,U(e[t],n,t))})),a;function i(e,t){ +n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|") +;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){ +return n?Number(n):(e=>z.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{ +console.error(e)},q=(e,...n)=>{console.log("WARN: "+e,...n)},H=(e,n)=>{ +P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0) +},Z=Error();function G(e,n,{key:t}){let a=0;const i=e[t],r={},s={} +;for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=_(n[e-1]) +;e[t]=s,e[t]._emit=r,e[t]._multi=!0}function W(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +Z +;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"), +Z;G(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +Z +;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"), +Z;G(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function Q(e){ +function n(n,t){ +return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":"")) +}class t{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,n){ +n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]), +this.matchAt+=_(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const n=this.matcherRe.exec(e);if(!n)return null +;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t] +;return n.splice(0,t),Object.assign(n,a)}}class a{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t +;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))), +n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){ +this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){ +const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex +;let t=n.exec(e) +;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{ +const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)} +return t&&(this.regexIndex+=t.position+1, +this.regexIndex===this.count&&this.considerAll()),t}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=r(e.classNameAliases||{}),function t(i,s){const o=i +;if(i.isCompiled)return o +;[D,B,W,F].forEach((e=>e(i,s))),e.compilerExtensions.forEach((e=>e(i,s))), +i.__beforeBegin=null,[I,L,$].forEach((e=>e(i,s))),i.isCompiled=!0;let l=null +;return"object"==typeof i.keywords&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords), +l=i.keywords.$pattern, +delete i.keywords.$pattern),l=l||/\w+/,i.keywords&&(i.keywords=U(i.keywords,e.case_insensitive)), +o.keywordPatternRe=n(l,!0), +s&&(i.begin||(i.begin=/\B|\b/),o.beginRe=n(o.begin),i.end||i.endsWithParent||(i.end=/\B|\b/), +i.end&&(o.endRe=n(o.end)), +o.terminatorEnd=d(o.end)||"",i.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)), +i.illegal&&(o.illegalRe=n(i.illegal)), +i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>r(e,{ +variants:null},n)))),e.cachedVariants?e.cachedVariants:X(e)?r(e,{ +starts:e.starts?r(e.starts):null +}):Object.isFrozen(e)?r(e):e))("self"===e?i:e)))),i.contains.forEach((e=>{t(e,o) +})),i.starts&&t(i.starts,s),o.matcher=(e=>{const n=new a +;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function X(e){ +return!!e&&(e.endsWithParent||X(e.starts))}class V extends Error{ +constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}} +const J=i,Y=r,ee=Symbol("nomatch");var ne=(e=>{ +const n=Object.create(null),i=Object.create(null),r=[];let s=!0 +;const o="Could not find the language '{}', did you forget to load/include a language module?",l={ +disableAutodetect:!0,name:"Plain text",contains:[]};let d={ +ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:c};function _(e){ +return d.noHighlightRe.test(e)}function h(e,n,t){let a="",i="" +;"object"==typeof n?(a=e, +t=n.ignoreIllegals,i=n.language):(H("10.7.0","highlight(lang, code, ...args) has been deprecated."), +H("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};M("before:highlight",r) +;const s=r.result?r.result:f(r.language,r.code,t) +;return s.code=r.code,M("after:highlight",s),s}function f(e,t,i,r){ +const l=Object.create(null);function c(){if(!x.keywords)return void k.addText(S) +;let e=0;x.keywordPatternRe.lastIndex=0;let n=x.keywordPatternRe.exec(S),t="" +;for(;n;){t+=S.substring(e,n.index) +;const i=N.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,x.keywords[a]);if(r){ +const[e,a]=r +;if(k.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(A+=a),e.startsWith("_"))t+=n[0];else{ +const t=N.classNameAliases[e]||e;k.addKeyword(n[0],t)}}else t+=n[0] +;e=x.keywordPatternRe.lastIndex,n=x.keywordPatternRe.exec(S)}var a +;t+=S.substr(e),k.addText(t)}function g(){null!=x.subLanguage?(()=>{ +if(""===S)return;let e=null;if("string"==typeof x.subLanguage){ +if(!n[x.subLanguage])return void k.addText(S) +;e=f(x.subLanguage,S,!0,M[x.subLanguage]),M[x.subLanguage]=e._top +}else e=E(S,x.subLanguage.length?x.subLanguage:null) +;x.relevance>0&&(A+=e.relevance),k.addSublanguage(e._emitter,e.language) +})():c(),S=""}function u(e,n){let t=1;for(;void 0!==n[t];){if(!e._emit[t]){t++ +;continue}const a=N.classNameAliases[e[t]]||e[t],i=n[t] +;a?k.addKeyword(i,a):(S=i,c(),S=""),t++}}function b(e,n){ +return e.scope&&"string"==typeof e.scope&&k.openNode(N.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(k.addKeyword(S,N.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +S=""):e.beginScope._multi&&(u(e.beginScope,n),S="")),x=Object.create(e,{parent:{ +value:x}}),x}function m(e,n,t){let i=((e,n)=>{const t=e&&e.exec(n) +;return t&&0===t.index})(e.endRe,t);if(i){if(e["on:end"]){const t=new a(e) +;e["on:end"](n,t),t.isMatchIgnored&&(i=!1)}if(i){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,n,t)}function p(e){ +return 0===x.matcher.regexIndex?(S+=e[0],1):(R=!0,0)}function _(e){ +const n=e[0],a=t.substr(e.index),i=m(x,e,a);if(!i)return ee;const r=x +;x.endScope&&x.endScope._wrap?(g(), +k.addKeyword(n,x.endScope._wrap)):x.endScope&&x.endScope._multi?(g(), +u(x.endScope,e)):r.skip?S+=n:(r.returnEnd||r.excludeEnd||(S+=n), +g(),r.excludeEnd&&(S=n));do{ +x.scope&&k.closeNode(),x.skip||x.subLanguage||(A+=x.relevance),x=x.parent +}while(x!==i.parent);return i.starts&&b(i.starts,e),r.returnEnd?0:n.length} +let h={};function y(n,r){const o=r&&r[0];if(S+=n,null==o)return g(),0 +;if("begin"===h.type&&"end"===r.type&&h.index===r.index&&""===o){ +if(S+=t.slice(r.index,r.index+1),!s){const n=Error(`0 width match regex (${e})`) +;throw n.languageName=e,n.badRule=h.rule,n}return 1} +if(h=r,"begin"===r.type)return(e=>{ +const n=e[0],t=e.rule,i=new a(t),r=[t.__beforeBegin,t["on:begin"]] +;for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return p(n) +;return t.skip?S+=n:(t.excludeBegin&&(S+=n), +g(),t.returnBegin||t.excludeBegin||(S=n)),b(t,e),t.returnBegin?0:n.length})(r) +;if("illegal"===r.type&&!i){ +const e=Error('Illegal lexeme "'+o+'" for mode "'+(x.scope||"")+'"') +;throw e.mode=x,e}if("end"===r.type){const e=_(r);if(e!==ee)return e} +if("illegal"===r.type&&""===o)return 1 +;if(T>1e5&&T>3*r.index)throw Error("potential infinite loop, way more iterations than matches") +;return S+=o,o.length}const N=v(e) +;if(!N)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const w=Q(N);let O="",x=r||w;const M={},k=new d.__emitter(d);(()=>{const e=[] +;for(let n=x;n!==N;n=n.parent)n.scope&&e.unshift(n.scope) +;e.forEach((e=>k.openNode(e)))})();let S="",A=0,C=0,T=0,R=!1;try{ +for(x.matcher.considerAll();;){ +T++,R?R=!1:x.matcher.considerAll(),x.matcher.lastIndex=C +;const e=x.matcher.exec(t);if(!e)break;const n=y(t.substring(C,e.index),e) +;C=e.index+n}return y(t.substr(C)),k.closeAllNodes(),k.finalize(),O=k.toHTML(),{ +language:e,value:O,relevance:A,illegal:!1,_emitter:k,_top:x}}catch(n){ +if(n.message&&n.message.includes("Illegal"))return{language:e,value:J(t), +illegal:!0,relevance:0,_illegalBy:{message:n.message,index:C, +context:t.slice(C-100,C+100),mode:n.mode,resultSoFar:O},_emitter:k};if(s)return{ +language:e,value:J(t),illegal:!1,relevance:0,errorRaised:n,_emitter:k,_top:x} +;throw n}}function E(e,t){t=t||d.languages||Object.keys(n);const a=(e=>{ +const n={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)} +;return n._emitter.addText(e),n})(e),i=t.filter(v).filter(x).map((n=>f(n,e,!1))) +;i.unshift(a);const r=i.sort(((e,n)=>{ +if(e.relevance!==n.relevance)return n.relevance-e.relevance +;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1 +;if(v(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s +;return c.secondBest=o,c}function y(e){let n=null;const t=(e=>{ +let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"" +;const t=d.languageDetectRe.exec(n);if(t){const n=v(t[1]) +;return n||(q(o.replace("{}",t[1])), +q("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"} +return n.split(/\s+/).find((e=>_(e)||v(e)))})(e);if(_(t))return +;if(M("before:highlightElement",{el:e,language:t +}),e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/issues/2886"), +console.warn(e)), +d.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML) +;n=e;const a=n.textContent,r=t?h(a,{language:t,ignoreIllegals:!0}):E(a) +;e.innerHTML=r.value,((e,n,t)=>{const a=n&&i[n]||t +;e.classList.add("hljs"),e.classList.add("language-"+a) +})(e,t,r.language),e.result={language:r.language,re:r.relevance, +relevance:r.relevance},r.secondBest&&(e.secondBest={ +language:r.secondBest.language,relevance:r.secondBest.relevance +}),M("after:highlightElement",{el:e,result:r,text:a})}let N=!1;function w(){ +"loading"!==document.readyState?document.querySelectorAll(d.cssSelector).forEach(y):N=!0 +}function v(e){return e=(e||"").toLowerCase(),n[e]||n[i[e]]} +function O(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +i[e.toLowerCase()]=n}))}function x(e){const n=v(e) +;return n&&!n.disableAutodetect}function M(e,n){const t=e;r.forEach((e=>{ +e[t]&&e[t](n)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N&&w()}),!1),Object.assign(e,{highlight:h,highlightAuto:E,highlightAll:w, +highlightElement:y, +highlightBlock:e=>(H("10.7.0","highlightBlock will be removed entirely in v12.0"), +H("10.7.0","Please use highlightElement now."),y(e)),configure:e=>{d=Y(d,e)}, +initHighlighting:()=>{ +w(),H("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +w(),H("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(t,a)=>{let i=null;try{i=a(e)}catch(e){ +if(K("Language definition for '{}' could not be registered.".replace("{}",t)), +!s)throw e;K(e),i=l} +i.name||(i.name=t),n[t]=i,i.rawDefinition=a.bind(null,e),i.aliases&&O(i.aliases,{ +languageName:t})},unregisterLanguage:e=>{delete n[e] +;for(const n of Object.keys(i))i[n]===e&&delete i[n]}, +listLanguages:()=>Object.keys(n),getLanguage:v,registerAliases:O, +autoDetection:x,inherit:Y,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{ +e["before:highlightBlock"](Object.assign({block:n.el},n)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ +e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),r.push(e)} +}),e.debugMode=()=>{s=!1},e.safeMode=()=>{s=!0 +},e.versionString="11.3.1",e.regex={concat:m,lookahead:g,either:p,optional:b, +anyNumberOfTimes:u};for(const e in T)"object"==typeof T[e]&&t(T[e]) +;return Object.assign(e,T),e})({});const te=e=>({IMPORTANT:{scope:"meta", +begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ +scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/}, +FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/}, +ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}),ae=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ie=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],se=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],oe=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),le=re.concat(se) +;var ce="\\.([0-9](_*[0-9])*)",de="[0-9a-fA-F](_*[0-9a-fA-F])*",ge={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${ce})|\\.)?|(${ce}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${ce})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${ce})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${de})\\.?|(${de})?\\.(${de}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${de})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function ue(e,n,t){return-1===t?"":e.replace(n,(a=>ue(e,n,t-1)))} +const be="[A-Za-z$_][0-9A-Za-z$_]*",me=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],pe=["true","false","null","undefined","NaN","Infinity"],_e=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],he=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fe=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ee=["arguments","this","super","console","window","document","localStorage","module","global"],ye=[].concat(fe,_e,he) +;function Ne(e){const n=e.regex,t=be,a={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const t=e[0].length+e.index,a=e.input[t] +;if("<"===a||","===a)return void n.ignoreMatch();let i +;">"===a&&(((e,{after:n})=>{const t="",x={ +match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,n.lookahead(O)],className:{ +1:"keyword",3:"title.function"},contains:[_]};return{name:"Javascript", +aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:p, +CLASS_REFERENCE:f},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang", +binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,u,o,f,{className:"attr", +begin:t+n.lookahead(":"),relevance:0},x,{ +begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[u,e.REGEXP_MODE,{ +className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:i,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:""},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin, +"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{ +begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},E,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t, +className:"title.function"})]},{match:/\.\.\./,relevance:0},w,{match:"\\$"+t, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[_]},y,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},h,v,{match:/\$[(.]/}]}} +const we=e=>m(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(we),Oe=["init","self"].map(we),xe=["Any","Self"],Me=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],ke=["false","nil","true"],Se=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ae=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=p(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=p(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=m(Te,Re,"*"),Ie=p(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Le=p(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Be=m(Ie,Le,"*"),$e=m(/[A-Z]/,Le,"*"),Fe=["autoclosure",m(/convention\(/,p("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",m(/objc\(/,Be,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],ze=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={ +begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]} +;Object.assign(t,{className:"variable",variants:[{ +begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,r,{match:/(\/[a-z._-]+)+/},s,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}, +grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),a="[a-zA-Z_]\\w*::",i="(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 +},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},u=[l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],b={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:g,contains:u.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:u.concat(["self"]),relevance:0}]),relevance:0},m={ +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ +className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ +className:"params",begin:/\(/,end:/\)/,keywords:g,relevance:0, +contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/,keywords:g, +relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C",aliases:["h"],keywords:g, +disableAutodetect:!0,illegal:"=]/,contains:[{ +beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:l, +strings:s,keywords:g}}},grmr_cpp:e=>{const n=e.regex,t=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),a="[a-zA-Z_]\\w*::",i="(?!struct)(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 +},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ +type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], +keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], +literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], +_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"] +},u={className:"function.dispatch",relevance:0,keywords:{ +_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] +}, +begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/)) +},b=[u,l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:g,contains:b.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:b.concat(["self"]),relevance:0}]),relevance:0},p={className:"function", +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{ +begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{ +relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:g, +relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/, +keywords:g,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:g,illegal:"",keywords:g,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:g},{ +match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], +className:{1:"keyword",3:"title.class"}}])}},grmr_csharp:e=>{const n={ +keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], +literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{ +begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/, +keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]}) +;s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE], +o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];const g={variants:[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t] +},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",m={ +begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], +keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, +contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{ +begin:"\x3c!--|--\x3e"},{begin:""}]}] +}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#", +end:"$",keywords:{ +keyword:"if else elif endif define undef warning error line region endregion pragma checksum" +}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta", +begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{ +className:"string",begin:/"/,end:/"/}]},{ +beginKeywords:"new return throw await else",relevance:0},{className:"function", +begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params", +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, +contains:[g,a,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},m]}},grmr_css:e=>{ +const n=e.regex,t=te(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{ +name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{ +keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"}, +contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+re.join("|")+")"},{begin:":(:)?("+se.join("|")+")"}] +},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oe.join("|")+")\\b"},{ +begin:/:/,end:/[;}{]/, +contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0, +illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{ +begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:ie.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+ae.join("|")+")\\b"}]}},grmr_diff:e=>{ +const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{ +className:"meta",relevance:10, +match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +},{className:"comment",variants:[{ +begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]}},grmr_go:e=>{const n={ +keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], +type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], +literal:["true","false","iota","nil"], +built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] +};return{name:"Go",aliases:["golang"],keywords:n,illegal:"{ +const n=e.regex,t={className:"number",relevance:0,variants:[{ +begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{ +begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable", +variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={ +className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{ +begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}] +},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0 +},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{ +name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, +contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{ +begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)), +className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},grmr_java:e=>{ +e.regex +;const n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=n+ue("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),a={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"], +literal:["false","true","null"], +type:["char","boolean","long","float","int","byte","short","double"], +built_in:["super","this"]},i={className:"meta",begin:"@"+n,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},r={className:"params",begin:/\(/, +end:/\)/,keywords:a,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:a,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, +className:"string",contains:[e.BACKSLASH_ESCAPE] +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{ +1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword", +3:"title.class"},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{ +begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:a,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:a,relevance:0, +contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ge,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ge,i]}},grmr_javascript:Ne, +grmr_json:e=>({name:"JSON",contains:[{className:"attr", +begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, +className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{ +beginKeywords:"true false null" +},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}), +grmr_kotlin:e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"string"})]}] +},l=ge,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g], +{name:"Kotlin",aliases:["kt","kts"],keywords:n, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0 +},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{className:"class", +beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/, +excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},l]}},grmr_less:e=>{ +const n=te(e),t=le,a="([\\w-]+|@\\{[\\w-]+\\})",i=[],r=[],s=e=>({ +className:"string",begin:"~?"+e+".*?"+e}),o=(e,n,t)=>({className:e,begin:n, +relevance:t}),l={$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:ie.join(" ")},c={begin:"\\(",end:"\\)",contains:r,keywords:l, +relevance:0} +;r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s("'"),s('"'),n.CSS_NUMBER_MODE,{ +begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", +excludeEnd:!0} +},n.HEXCOLOR,c,o("variable","@@?[\\w-]+",10),o("variable","@\\{[\\w-]+\\}"),o("built_in","~?`[^`]*?`"),{ +className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0 +},n.IMPORTANT);const d=r.concat({begin:/\{/,end:/\}/,contains:i}),g={ +beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not" +}].concat(r)},u={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0, +contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+oe.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0, +illegal:"[<=$]",relevance:0,contains:r}}]},b={className:"keyword", +begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", +starts:{end:"[;{}]",keywords:l,returnEnd:!0,contains:r,relevance:0}},m={ +className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{ +begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:d}},p={variants:[{ +begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0, +returnEnd:!0,illegal:"[<='$\"]",relevance:0, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,o("keyword","all\\b"),o("variable","@\\{[\\w-]+\\}"),{ +begin:"\\b("+ae.join("|")+")\\b",className:"selector-tag" +},n.CSS_NUMBER_MODE,o("selector-tag",a,0),o("selector-id","#"+a),o("selector-class","\\."+a,0),o("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{ +className:"selector-pseudo",begin:":("+re.join("|")+")"},{ +className:"selector-pseudo",begin:":(:)?("+se.join("|")+")"},{begin:/\(/, +end:/\)/,relevance:0,contains:d},{begin:"!important"},n.FUNCTION_DISPATCH]},_={ +begin:`[\\w-]+:(:)?(${t.join("|")})`,returnBegin:!0,contains:[p]} +;return i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,m,_,u,p),{ +name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:i}},grmr_lua:e=>{ +const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"] +},i=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",t,{contains:[a], +relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE, +literal:"true false nil", +keyword:"and break do else elseif end for goto if in local not or repeat return then until while", +built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" +},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)", +contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", +begin:"\\(",endsWithParent:!0,contains:i}].concat(i) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:n,end:t,contains:[a],relevance:5}])}},grmr_makefile:e=>{const n={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{ +const n=e.regex,t=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),a={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={ +endsWithParent:!0,illegal:/`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,contains:[{className:"meta",begin://, +relevance:10,contains:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[i,r,o,s]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},a,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:n.concat(//,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{ +className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{ +className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} +},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml", +relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},i={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};a.contains.push(i),i.contains.push(a) +;let r=[n,t] +;return a.contains=a.contains.concat(r),i.contains=i.contains.concat(r), +r=r.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:r}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:r, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_objectivec:e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n, +keyword:["@interface","@class","@protocol","@implementation"]};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], +keywords:{$pattern:n, +keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], +literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], +built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"] +},illegal:"/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", +begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t, +contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, +relevance:0}]}},grmr_perl:e=>{const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={ +$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/, +end:/\}/},s={variants:[{begin:/\$\d/},{ +begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},o=[e.BACKSLASH_ESCAPE,i,s],l=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],c=(e,a,i="\\1")=>{ +const r="\\1"===i?i:n.concat(i,a) +;return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t) +},d=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),g=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),r,{className:"string",contains:o,variants:[{ +begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", +end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ +begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", +relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", +begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", +relevance:0},{ +begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", +keywords:"split return print reverse grep",relevance:0, +contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ +begin:c("s|tr|y",n.either(...l,{capture:!0}))},{begin:c("s|tr|y","\\(","\\)")},{ +begin:c("s|tr|y","\\[","\\]")},{begin:c("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...l,{capture:!0 +}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", +end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ +begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", +subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] +}];return i.contains=g,r.contains=g,{name:"Perl",aliases:["pl","pm"],keywords:a, +contains:g}},grmr_php:e=>{const n={className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},i=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),s=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(i,{begin:"b'",end:"'" +}),e.inherit(r,{begin:'b"',end:'"'}),r,i,s]},l={className:"number",variants:[{ +begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{ +begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{ +begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?" +}],relevance:0},c={ +keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield", +literal:"false null true", +built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass" +};return{case_insensitive:!0,keywords:c, +contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t] +}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}] +}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0, +keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},n,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{ +begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0,keywords:c, +contains:["self",n,e.C_BLOCK_COMMENT_MODE,o,l]}]},{className:"class",variants:[{ +beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait", +illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, +contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";", +contains:[e.UNDERSCORE_TITLE_MODE]},o,l]}},grmr_php_template:e=>({ +name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/, +subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"', +end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{ +illegal:null,className:null,contains:null,skip:!0 +}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null, +skip:!0})]}]}),grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"], +disableAutodetect:!0}),grmr_python:e=>{ +const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a={ +$pattern:/[A-Za-z]\w+|__\w+__/, +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], +type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] +},i={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:a,illegal:/#/},s={begin:/\{\{/,relevance:0},o={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,s,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},l="[0-9](_?[0-9])*",c=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${l})|(${c}))[eE][+-]?(${l})[jJ]?\\b`},{begin:`(${c})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${l})[jJ]\\b`}]},g={ +className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:a,contains:[{ +begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},u={ +className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a, +contains:["self",i,d,o,e.HASH_COMMENT_MODE]}]};return r.contains=[o,d,i],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a, +illegal:/(<\/|->|\?)|=>/,contains:[i,d,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},o,g,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,t],scope:{1:"keyword", +3:"title.function"},contains:[u]},{variants:[{ +match:[/class/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/class/,/\s+/,t]}], +scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[d,u,o]}]}}, +grmr_python_repl:e=>({aliases:["pycon"],contains:[{className:"meta",starts:{ +end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{ +begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}),grmr_r:e=>{ +const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) +;return{name:"R",keywords:{$pattern:t, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/, +starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)), +endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{ +scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0 +}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}] +}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{ +1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"}, +match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{ +2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"}, +match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{ +match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`", +contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{ +const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a={ +keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__", +built_in:"proc lambda",literal:"true false nil"},i={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},s=[e.COMMENT("#","$",{contains:[i] +}),e.COMMENT("^=begin","^=end",{contains:[i],relevance:10 +}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:/#\{/,end:/\}/, +keywords:a},l={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), +contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[e.BACKSLASH_ESCAPE,o]})]}]},c="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${c}))?([eE][+-]?(${c})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},g={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:a},u=[l,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(s)},{ +className:"function",begin:n.concat(/def\s+/,n.lookahead(t+"\\s*(\\(|;|$)")), +relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t +}),g].concat(s)},{begin:e.IDENT_RE+"::"},{className:"symbol", +begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[l,{begin:t}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:a},{ +begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{ +begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(", +end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}] +}].concat(r,s),relevance:0}].concat(r,s);o.contains=u,g.contains=u;const b=[{ +begin:/^\s*=>/,starts:{end:"$",contains:u}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:u}}];return s.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/, +contains:[e.SHEBANG({binary:"ruby"})].concat(b).concat(s).concat(u)}}, +grmr_rust:e=>{const n=e.regex,t={className:"title.function.invoke",relevance:0, +begin:n.concat(/\b/,/(?!let\b)/,e.IDENT_RE,n.lookahead(/\s*\(/)) +},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bin!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"] +;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?", +type:["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"], +keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], +literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:""},t]}}, +grmr_scss:e=>{const n=te(e),t=se,a=re,i="@[a-z-]+",r={className:"variable", +begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"};return{name:"SCSS",case_insensitive:!0, +illegal:"[=/|']", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{ +className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0 +},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag", +begin:"\\b("+ae.join("|")+")\\b",relevance:0},{className:"selector-pseudo", +begin:":("+a.join("|")+")"},{className:"selector-pseudo", +begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/, +contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+oe.join("|")+")\\b"},{ +begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" +},{begin:/:/,end:/[;}{]/, +contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT] +},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{ +begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, +keyword:"and or not only",attribute:ie.join(" ")},contains:[{begin:i, +className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" +},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE] +},n.FUNCTION_DISPATCH]}},grmr_shell:e=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]}),grmr_sql:e=>{ +const n=e.regex,t=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],r=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=r,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!r.includes(e))),c={ +begin:n.concat(/\b/,n.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} +;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ +$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:n,when:t}={})=>{const a=t +;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:n.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, +keyword:l.concat(s),literal:a,type:i}},{className:"type", +begin:n.either("double precision","large object","with timezone","without timezone") +},c,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}, +grmr_swift:e=>{const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{ +contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,p(...ve,...Oe)], +className:{2:"keyword"}},r={match:m(/\./,p(...Me)),relevance:0 +},s=Me.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{ +className:"keyword", +match:p(...Me.filter((e=>"string"!=typeof e)).concat(xe).map(we),...Oe)}]},l={ +$pattern:p(/\b\w+/,/#\w+/),keyword:s.concat(Ae),literal:ke},c=[i,r,o],d=[{ +match:m(/\./,p(...Ce)),relevance:0},{className:"built_in", +match:m(/\b/,p(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},b=[u,{ +className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}] +}],_="([0-9a-fA-F]_*)+",h={className:"number",relevance:0,variants:[{ +match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +match:`\\b0x(${_})(\\.(${_}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({ +className:"subst",variants:[{match:m(/\\/,e,/[0\\tnr"']/)},{ +match:m(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),E=(e="")=>({className:"subst", +match:m(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),y=(e="")=>({className:"subst", +label:"interpol",begin:m(/\\/,e,/\(/),end:/\)/}),N=(e="")=>({begin:m(e,/"""/), +end:m(/"""/,e),contains:[f(e),E(e),y(e)]}),w=(e="")=>({begin:m(e,/"/), +end:m(/"/,e),contains:[f(e),y(e)]}),v={className:"string", +variants:[N(),N("#"),N("##"),N("###"),w(),w("#"),w("##"),w("###")]},O={ +match:m(/`/,Be,/`/)},x=[O,{className:"variable",match:/\$\d+/},{ +className:"variable",match:`\\$${Le}+`}],M=[{match:/(@|#)available/, +className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ze, +contains:[...b,h,v]}]}},{className:"keyword",match:m(/@/,p(...Fe))},{ +className:"meta",match:m(/@/,Be)}],k={match:g(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +match:m(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Le,"+") +},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:m(/\s+&\s+/,g($e)),relevance:0}]},S={ +begin://,keywords:l,contains:[...a,...c,...M,u,k]};k.contains.push(S) +;const A={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{ +match:m(Be,/\s*:/),keywords:"_|0",relevance:0 +},...a,...c,...d,...b,h,v,...x,...M,k]},C={begin://,contains:[...a,k] +},T={begin:/\(/,end:/\)/,keywords:l,contains:[{ +begin:p(g(m(Be,/\s*:/)),g(m(Be,/\s+/,Be,/\s*:/))),end:/:/,relevance:0, +contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Be}] +},...a,...c,...b,h,v,...M,k,A],endsParent:!0,illegal:/["']/},R={ +match:[/func/,/\s+/,p(O.match,Be,De)],className:{1:"keyword",3:"title.function" +},contains:[C,T,n],illegal:[/\[/,/%/]},D={ +match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, +contains:[C,T,n],illegal:/\[|%/},I={match:[/operator/,/\s+/,De],className:{ +1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{ +1:"keyword",3:"title"},contains:[k],keywords:[...Se,...ke],end:/}/} +;for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label)) +;n.keywords=l;const t=[...c,...d,...b,h,v,...x];n.contains=[...t,{begin:/\(/, +end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l, +contains:[...a,R,D,{beginKeywords:"struct protocol class extension enum actor", +end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c] +},I,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0 +},...c,...d,...b,h,v,...x,...M,k,A]}},grmr_typescript:e=>{ +const n=Ne(e),t=["any","void","number","boolean","string","object","never","enum"],a={ +beginKeywords:"namespace",end:/\{/,excludeEnd:!0, +contains:[n.exports.CLASS_REFERENCE]},i={beginKeywords:"interface",end:/\{/, +excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t}, +contains:[n.exports.CLASS_REFERENCE]},r={$pattern:be, +keyword:me.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]), +literal:pe,built_in:ye.concat(t),"variable.language":Ee},s={className:"meta", +begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},o=(e,n,t)=>{ +const a=e.contains.findIndex((e=>e.label===n)) +;if(-1===a)throw Error("can not find mode to replace");e.contains.splice(a,1,t)} +;return Object.assign(n.keywords,r), +n.exports.PARAMS_CONTAINS.push(s),n.contains=n.contains.concat([s,a,i]), +o(n,"shebang",e.SHEBANG()),o(n,"use_strict",{className:"meta",relevance:10, +begin:/^\s*['"]use strict['"]/ +}),n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{ +name:"TypeScript",aliases:["ts","tsx"]}),n},grmr_vbnet:e=>{ +const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={ +className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ +begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{ +begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}] +},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}] +}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]}) +;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0, +classNameAliases:{label:"symbol"},keywords:{ +keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", +built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", +type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", +literal:"true false nothing"}, +illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{ +className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/, +end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0, +variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ +},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{ +begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{ +className:"label",begin:/^\w+:/},o,l,{className:"meta", +begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, +end:/$/,keywords:{ +keyword:"const disable else elseif enable end externalsource if region then"}, +contains:[l]}]}},grmr_yaml:e=>{ +const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},s={begin:/\{/, +end:/\}/,contains:[r],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]", +contains:[r],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{ +begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ +begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type", +begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},s,o,a],c=[...l] +;return c.pop(),c.push(i),r.contains=c,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:l}}});const je=ne;for(const e of Object.keys(Ue)){ +const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])} +return je}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); \ No newline at end of file diff --git a/templates/admin.html b/templates/admin.html index c823e0f..e7fff94 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -3,12 +3,14 @@ + +